0x01 分析思路
- 利用https://github.com/googleprojectzero/winafl 漏洞分析框架模糊测试WinRAR。
- 几个存档格式的崩溃,例如RAR,LZH和ACE,这些存档格式会导致内存损坏,例如Out-of-Bounds Write
- 发现WinRAR使用名为unacev2.dll的DLL来解析ACE归档文件。快速浏览一下这个dll就会发现它是2006年没有保护机制的旧版dll
- 了解ACE格式
0x02 漏洞细节
漏洞允许提取文件到任意路径并完全忽略目的文件夹,并将提取的文件相对路径作为完全路径。
导致路径遍历漏洞有两个限制:
1. 第一个字符是‘/’、 ‘\’;2. ‘*’ 至少应该包含在文件名中一次。位置没有关系。
WinRAR部分存在路径遍历漏洞:
从WinRAR回调函数(ACE_CALLBACK_RETURN_CANCEL)获取中止代码(abort code)后,unacev2.dll并不中止操作。因为对WinRAR回调的返回代码的延迟检查,创建了漏洞利用文件中指定的目录。
提取的文件也会创建在漏洞利用文件指定的完全路径。
0x03 利用方式
0x04 效果
桌面上解压或者是右键解压就会复现效果
0x05 相关样本IOC
ModifiedVersion3.rar
6c702c25ec425764a303418b2d3f99ae
0x06 参考
成功获取WinRAR 19年历史代码执行漏洞