神刀安全网

ImageMagick远程命令执行漏洞分析及防护

ImageMagick远程命令执行漏洞分析及防护

阅读: 6

目前所有版本的Graphicsmagick和ImageMagick都支持打开文件,当文件名的第一个字符为‘|’,则文件名会被传递给shell程序执行,导致(可能远程)代码执行。文件打开操作位于源代码文件blob.c中的OpenBlob()函数,不同于CVE-2016-3714的是,此漏洞存在于软件处理的核心代码中,影响会更广。

目前此漏洞的编号为CVE-2016-5118。

ImageMagick远程命令执行漏洞分析及防护

概念定义

什么是ImageMagick?

ImageMagick软件是用C语言编写的,可用来显示、转换以及编辑图形,支持超过200种图像文件格式,并且可以跨平台运行。 ImageMagick软件被许多编程语言所支持,包括Perl,C++,PHP,Python和Ruby等,并被部署在数以百万计的网站、博客、社交媒体平台和流行的内容管理系统(CMS)。

什么是GraphicsMagick?

GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF,可以在绝大多数的平台上使用,如Linux、Mac、Windows等。GaphicsMagick不仅支持命令行的模式,同时也支持C、C++、Perl、PHP、Tcl、Ruby等的调用,是从ImageMagick 5.5.2 分支出来的。

漏洞简介

一个关于申请ImageMagick漏洞CVE的连接: http://permalink.gmane.org/gmane.comp.security.oss.general/19669

All existing releases of GraphicsMagick and ImageMagick support a file open syntax where if the first character of the file specification is a ‘|’, then the remainder of the filename is passed to the shell for execution using the POSIX popen(3C) function.

原文作者贴出了一段本地测试后确实可以执行的命令:

➜ ~ convert ‘|echo Hello > hello.txt;’ null

➜ ~ ls hello.txt

hello.txt

Unlike the vulnerability described by CVE-2016-3714, this functionality is supported by the core file opening function rather than a delegates subsystem usually used to execute external programs.

从作者的描述中可以看到这次的漏洞影响比之前的CVE-2016-3714更广,更暴力。

影响范围

影响的版本

  • GraphicsMagick < 1.3.24
  • ImageMagick所有版本

不受影响的版本

  • GraphicsMagick = 1.3.24

漏洞分析

这次漏洞还是出现在SVG和MVG的处理上,不过和CVE-2016-3714不同,上次问题出在使用委托的时候,只进行了简单的字符串拼接并执行,没有任何安全过滤。可通过命令注入执行恶意命令。本次漏洞是ImageMagick原生方法支持文件名第一个字符是‘|’的时候将之后的字串当成是命令执行。

下面我们简单看一下漏洞的原理,漏洞出现在blob.c的2500行:

https://github.com/ImageMagick/ImageMagick/blob/master/MagickCore/blob.c#L2500

ImageMagick远程命令执行漏洞分析及防护

SanitizeString函数代码如下:

ImageMagick远程命令执行漏洞分析及防护

SanitizeString函数是过滤了不可打印字符,对这个漏洞利用没有影响。

如果文件名的第一个字符是‘|’,就把‘|’之后的字串传入shell被当成是系统命令来执行,没有任何过滤。

ImageMagick远程命令执行漏洞分析及防护

通过调试信息中可以很清晰的看到把’|’之后的文件名当成是命令来执行了。

漏洞修复

原作者给出的修复方案是在代码中删除这个方法,比较简单粗暴。

ImageMagick远程命令执行漏洞分析及防护

GraphicsMagick(和ImageMagick差不多)团队已经在最新的代码中修复了这个漏洞,使用的是原作者比较粗暴的方法!

ImageMagick目前没有修复这个漏洞,但是加了一条策略规则,不过注释过了,没有生效。

https://github.com/ImageMagick/ImageMagick/commit/18107aaa0d5f8b46e4740722678f1dffddbe4338

ImageMagick远程命令执行漏洞分析及防护

只需要把注释取消即可,或者在/etc/ImageMagick/policy.xml 中添加如下规则:

防护方案

  • GraphicsMagick版本升级到1.3.24(请跟踪后续版本升级,会修复其他安全问题)。官方下载地址如下:http://www.graphicsmagick.org/

  • ImageMagick用户可以通过配置策略进行防护,全局策略文件通常位于“/etc/ImageMagick/policy.xml”,增加如下内容:

  • 使用绿盟科技防护类产品(WAF/IPS/NF/SG)进行防护。

  • 已经购买了绿盟科技防护类产品服务的客户可以通过产品升级进行防护。

ImageMagick远程命令执行漏洞分析及防护

  • 短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
  • 中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发。
  • 长期服务:基金行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

如果您需要了解更多内容,可以

加入QQ群:486207500

直接询问:010-68438880-8669

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » ImageMagick远程命令执行漏洞分析及防护

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址