ImageMagick ReadDIBImage函数整数溢出漏洞

2007-09-25T00:00:00
ID SSV:2249
Type seebug
Reporter Root
Modified 2007-09-25T00:00:00

Description

BUGTRAQ ID: 25765 CVE(CAN) ID: CVE-2007-4988

ImageMagick是一款Unix/Linux平台下开源的图像查看和编辑工具。

ImageMagick在处理带有畸形数据的文件时存在整数漏洞,远程攻击者可能诱使用户处理恶意文件控制用户系统。

ImageMagick的ReadDIBImage()函数中存在整数溢出漏洞:

558 image->columns=(unsigned long) dib_info.width ... 620 bytes_per_line=4((image->columnsdib_info.bits_per_pixel+31)/32); 621 length=bytes_per_lineimage->rows; 622 pixels=(unsigned char ) AcquireMagickMemory((size_t) MagickMax( 623 bytes_per_line,image->columns+256)image->rowssizeof(*pixels)); ... 629 count=ReadBlob(image,length,pixels); ... 638 status=DecodeImage(image,dib_info.compression ? MagickTrue : MagickFalse,pixels);

在558行dib_info.width为有符短型,然后会被扩展为无符长型并分配给image->columns。例如,0x8000会被扩展为0xffff8000,然后在计算分配的大小时用作了乘数。整数溢出会导致分配了不充分的堆块,之后触发堆溢出。

ImageMagick ImageMagick < 6.3.5-9 临时解决方法:

  • 删除相关的模块文件。

厂商补丁:

ImageMagick

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

<a href="ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.5-10.tar.gz" target="_blank">ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.5-10.tar.gz</a>