装机必备的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并安装,安装完成后新建一个文本文件,文件名任取。

image008.png


然后,利用WinACE进行压缩。

image010.png


接下来,运行acefile.py 脚本(acefile.py 脚本的下载地址为: https://github.com/droe/acefile/blob/master/acefile.py),显示有关xway.ace的头部信息。

image011.png


注意:filename将上图中字段中的每个“\\” 视为单斜杠“\”,这只是python转义。

重点需要观察:

  • hdr_crc

  • filename

  • hdr_size


随后,使用010Editor打开该文件:

image014.png


在这里,需要观察在上图中选中的部分。对比acefile解析的结果,并明白各个段对应的内容。

image016.png


根据漏洞的描述,问题是出现在filename中。

接下来,修改filename为“d:\d:\xway.txt”——长度为14,对应的hex为0x000E。

image018.png


然后,修改hdr_size——长度为45,对应的hex为0x002D。

image020.png


最后,修改hdr_crc,直接修改脚本,将当前hdr_crc打印出来。

image022.png


接下来,再次运行命令“python acefile.py --headers xway.ace”。

这里ace_crc16(buf)的值就是ace文件0xba7e对应的值,直接打印出该值并将该位置的值修改即可。

image024.png


对应的值为45866,在转换为hex后,值为0Xb32a。

image026.png


最后的文件内容如下所示:

image028.png


再次查看,可以正常解析,并看到filename已经修改成功。

image029.png


右键解压缩该文件,则会在D盘生成一个xway.txt文件。

image032.png

漏洞的修复建议

1.升级到最新版本,WinRAR 目前版本是 5.70 Beta 1;

2.删除UNACEV2.dll文件。