在 ImageMagicks 的转换实用程序中, TIFF 图像压缩处理存在一个写边界的问题。攻击者利用一个精心编制的 TIFF 文件,可以导致的界限写,特别是可以利用的情况下进入远程执行代码。任何用户都可以利用特殊构造的TIFF触发这个漏洞。
针对这个漏洞,绿盟科技发布了安全威胁通告,全文见文末
此漏洞目前是与 ImageMagick转换实用程序捆绑在一起,它是一块非常受欢迎的软件。因此许多使用这个程序进行图像格式转换的 web 应用程序都会受到影响。当试图缩小Adobe Deflate压缩过的 Tiff 图像就会出现这个漏洞。
此漏洞出现在 ImageMagick 处理图像压缩数据的方式。保存解压缩所需的数据大小是经过计算,然后传递到 LibTiff 中的,但它不足以容纳解压缩的流。
The buffer is calculated here:
pixels=(unsigned char *) GetQuantumPixels(quantum_info);
and then passed in here as op:
static int ZIPDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) {
Finally this buffer is used as the next available buffer in a stream which has more data than is available and the out of bounds write occurs.
sp->stream.next_out = op; ... int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
This is a controlled out of bounds write that under proper circumstances could be exploited into full remote code execution.
Crashed thread log = : Dispatch queue: com.apple.main-thread frame #0: 0x00007fff9563d9c2 libz.1.dylib`inflate + 2549 frame #1: 0x0000000100fec96a libtiff.5.dylib`ZIPDecode(tif=0x0000000103bf9bb0, op=
, occ= ,s= ) + 186 at tif_zip.c:185 frame #2: 0x0000000100fe89d5 libtiff.5.dylib`TIFFReadScanline(tif=0x0000000103bf9bb0, buf=0x0000000105114ef0, row=0, sample=0) + 693 at tif_read.c:299 frame #3: 0x0000000100979499 libMagickCore-7.Q16HDRI.0.dylib`ReadTIFFImage [inlined] TIFFReadPixels(bits_per_sample=0) + 27993 at tiff.c:873 frame #4: 0x000000010097948b libMagickCore-7.Q16HDRI.0.dylib`ReadTIFFImage(image_info=0x0000000101cb8de0, exception=0x0000000101b4bfc0) + 27979 at tiff.c:1708 frame #5: 0x00000001000f69e8 libMagickCore-7.Q16HDRI.0.dylib`ReadImage(image_info=0x0000000101c61de0, exception=0x0000000101b4bfc0) + 3720 at constitute.c:554 frame #6: 0x00000001000f9557 libMagickCore-7.Q16HDRI.0.dylib`ReadImages(image_info=0x0000000101bd4de0, filename="crash1.tif", exception=0x0000000101b4bfc0) + 1447 --- exception=EXC_BAD_ACCESS:signal=11:is_exploitable=yes:instruction_disassembly=.byte 0xc5 #bad opcode:instruction_address=0x00007fff8b1b303b:access_type=unknown:access_address=0x000000010985b000: Crash accessing invalid address. Consider running it again with libgmalloc(3) to see if the log changes.
2016年12月3日,talosintelligence.com网站发布了一条关于ImageMagick远程代码执行漏洞的消息,漏洞编号为CVE-2016-8707。ImageMagick在压缩TIFF图片时存在可利用的内存越界写入问题,在特别情况下该问题会造成远程代码执行。
相关链接地址如下:
http://www.talosintelligence.com/reports/TALOS-2016-0216/
成功利用漏洞后,导致远程代码执行。
ImageMagick软件是用C语言编写的,可用来显示、转换以及编辑图形,支持超过200种图像文件格式,并且可以跨平台运行。
ImageMagick软件被许多编程语言所支持,包括Perl,C++,PHP,Python和Ruby等,并被部署在数以百万计的网站,博客,社交媒体平台和流行的内容管理系统(CMS)。
受影响的版本
ImageMagick version < 7.0.3-9
不受影响的版本
ImageMagick version = 7.0.3-9
官方已经在新版本中修复了该漏洞,建议用户升级到不受影响的最新版本(7.0.3-9版本),下载页面如下:
http://www.imagemagick.org/script/binary-releases.php
本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。
ImageMagick远程代码执行漏洞CVE-2016-8707相关文章请参看
ImageMagick再爆核心漏洞 站长小心
原文发布时间:2017年3月24日
本文由:绿盟科技 发布,版权归属于原作者
原文链接:http://toutiao.secjia.com/imagemagick-remote-code-execution-vulnerability-cve-2016-8707
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站