安全社区

黑盾云安全社区,与你一起分享安全领域的知识与智慧

【紧急通告】ImageMagick命令执行漏洞

紧急通告2016-05-06 14:48:06 4702次围观

福建省海峡信息技术有限公司
安全服务部
安全通告
                                                                              
[2016年第06号]
尊敬的海峡用户:
于昨日(2016-5-5)我公司安全服务中心关注到ImageMagick图像处理软件存在高危漏洞——远程命令执行(CVE-2016-3714),如果服务器使用ImageMagick图像处理软件处理图片,那么在图片中嵌入恶意代码,经过ImageMagick处理,即可触发执行图片中的恶意代码。如果Web应用系统有上传图片功能模块,且采用ImageMagick对上传图片进行处理,那么攻击者就可上传恶意图片至服务器,经ImageMagick处理后,可导致远程执行任意系统命令,危害极大
【漏洞描述】
ImageMagick是一套功能强大、稳定而且开源的工具集和开发包, 可以用来读、写和处理超过90种的图片文件,包括流行的JPEG、GIF、 PNG、PDF以及PhotoCD等格式。使用它可以对图片进行切割、旋转、组合等多种特效的处理,由于其功能强大、性能较好,并且对很多语言都有拓展支持,所以在程序开发中被广泛使用。许多网站开发者喜爱使用ImageMagick拓展来做Web上的图片处理工作,比如用户头像生成、图片编辑等。
漏洞产生是因为ImageMagick对字符过滤不严谨、 对于文件名传递给后端的命令过滤不足,导致允许多种文件格式转换过程中远程执行代码。
【漏洞分析】
ImageMagick内置了非常多的图像处理库,对于这些图像处理库,ImageMagick命名为“Delegate”(委托),每个Delegate对应一种格式的文件,然后通过系统的system()命令来调用外部的程序对文件进行处理。由于对传递的字符过滤不严格,导致任意命令执行漏洞。
【漏洞测试】
我司安全研究人员关注到此漏洞后, 对漏洞进行分析验证测试,测试的poc如下:
首先构造一个精心准备的图片,其图片嵌入执行“id”的系统命令:
push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|id")'
pop graphic-context
将其保存为任意的扩展名,例如exp.jpg,然后通过调用ImageMagick去运行它:
convert exp.jpg out.png
ImageMagick将会去执行嵌入的代码:id系统命令,我们发现嵌入的系统命令成功执行:

【发布日期】2016-5-6
 【受威胁对象】
  1. 调用ImageMagick的库实现图片处理和渲染的应用。
  2. 很多流行的内容管理系统(CMS)都使用了ImageMagick ,例如WordPress 、Discuz都使用ImageMagick对图片进行处理,攻击者只要上传恶意图片,即可远程执行任意系统命令。
 【修复方案】
  1. 请检查服务器是否有使用ImageMagick图片处理软件。
  2. 在 上传图片时需要通过文件内容来判断用户上传的是否为真实图片类型,Web管理员同时被建议在文件发送给ImageMagick处理前,检查文件的 magic bytes。Magic bytes是一个文件的前几个字节,被用于识别图像类型,例如GIF,JPEG和PNG等。
  3. 使用策略配置文件来禁用ImageMagick的有风险的编码器:ImageMagick全局策略配置文件在/etc/ImageMagick下对policy.xml最后一行进行增加下列配置:
vi /etc/ImageMagick/policy.xml

    
    
    
    
    

 

上一篇: 海峡信息——紧急通告2016年第08号

下一篇: 海峡信息——紧急通告2016年第05号