装机必备的WinRAR压缩软件曝代码执行漏洞
时间:2019-02-26 16:00:28来源:信息安全服务部作者:梦之想科技
WinRAR是一款功能强大的压缩文件管理软件,是RAR压缩软件在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从互联网下载的RAR、ZIP及其它格式的压缩文件,并且可以新建RAR及ZIP格式等的压缩类文件。
漏洞的成因及影响
此次曝出的漏洞(CVE-2018-20250、CVE-2018-20251、CVE-2018-20252和CVE-2018-20253)是由于 WinRAR 所使用的一个陈旧的动态链接库“UNACEV2.dll”所造成的,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR、DEP等)。
动态链接库“UNACEV2.dll”的作用是处理ACE格式文件,但由于WinRAR解压ACE文件时没有对文件名进行充分过滤,导致其可实现目录穿越,将恶意文件写入任意目录,甚至可以写入文件至开机启动项,导致代码执行。
漏洞的影响范围
具体受影响的软件版本如下:
WinRAR<5.70 Beta 1
Bandizip<=6.2.0.0
好压<=5.9.8.10907
360压缩<=4.0.0.1170
漏洞的详细分析
梦之想科技在这里为大家带来了该漏洞的实现过程(使用到的工具主要包括WinACE和010Editor),具体如下:
首先,新建一个任意文件,接下来利用WinACE进行压缩,修改filename来实现目录穿越漏洞,可以将文件解压到任意目录中。
下载WinACE并安装,安装完成后新建一个文本文件,文件名任取。
然后,利用WinACE进行压缩。
接下来,运行acefile.py 脚本(acefile.py 脚本的下载地址为: https://github.com/droe/acefile/blob/master/acefile.py),显示有关xway.ace的头部信息。
注意:filename将上图中字段中的每个“\\” 视为单斜杠“\”,这只是python转义。
重点需要观察:
hdr_crc
filename
hdr_size
随后,使用010Editor打开该文件:
在这里,需要观察在上图中选中的部分。对比acefile解析的结果,并明白各个段对应的内容。
根据漏洞的描述,问题是出现在filename中。
接下来,修改filename为“d:\d:\xway.txt”——长度为14,对应的hex为0x000E。
然后,修改hdr_size——长度为45,对应的hex为0x002D。
最后,修改hdr_crc,直接修改脚本,将当前hdr_crc打印出来。
接下来,再次运行命令“python acefile.py --headers xway.ace”。
这里ace_crc16(buf)的值就是ace文件0xba7e对应的值,直接打印出该值并将该位置的值修改即可。
对应的值为45866,在转换为hex后,值为0Xb32a。
最后的文件内容如下所示:
再次查看,可以正常解析,并看到filename已经修改成功。
右键解压缩该文件,则会在D盘生成一个xway.txt文件。
漏洞的修复建议
1.升级到最新版本,WinRAR 目前版本是 5.70 Beta 1;
2.删除UNACEV2.dll文件。