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
临时解决方法:
厂商补丁:
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
<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>