中新网安安全研究院ImageMagick堆栈溢出0day漏洞 (CVE-2018-6876)

2018年02月07日,中新网安安全研究院发现ImageMagick堆栈溢出0day漏洞(CVE-2018-6876)。中新网安安全研究院一直与ImageMagick保持积极沟通,积极推进该0day漏洞的修复,并择时披露漏洞相关信息。

121.png

ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。


PHP imagick、Ruby rmagick和paperclip以及NodeJS imagemagick等多个图片处理插件都依赖ImageMagick运行,当攻击者构造poc图片上传可导致使用ImageMagick组件的网站宕机。


ImageMagick是一个使用非常广的组件,包括腾讯、网易、赶集等各大互联网公司等大量厂商都在处理图片的时候调用这个程序进行处理,而且很多开源应用也在核心代码中包含了ImageMagick选项。采用了ImageMagick组件,且允许用户上传图像的网站,以及例如Wordpress、Drupal、Discuz等开源程序,都会受到DOS威胁。


 01  漏洞扫描  


漏洞函数在ImageMagick 的附加库 libfpx fpx/f_fpxvw.cpp:1199 调用


1519890425191978.png


漏洞在ole/oleprop.cpp:260行的重载函数,读取指针错误导致溢出,如下图,CY的大小是32个字节,FILETIME是16个字节,在给val赋值的时候多引用了16个字节导致异常,造成组件崩溃。


1519890458739089.png



ASAN OUTPUT

1519890495911288.png

 02 漏洞影响 

ImageMagick 7.0.7-22(最新版)


 03 修复建议 

由于目前官方还没有更新补丁,可重新编译暂时禁用libfpx库


 04 漏洞poc 

https://github.com/ImageMagick/ImageMagick/issues/973


 05 时间线    

2018年02月07日  提交漏洞

2018年02月09日  ImageMagick 官方确认漏洞

2018年02月10日  CVE确认编号:CVE-2018-6876

2018年02月25日 中新网安发布漏洞预警


 06 参考链接 

1.http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6876

2.https://github.com/ImageMagick/ImageMagick/issues/973