Lucene search

K
seebugRootSSV:2249
HistorySep 25, 2007 - 12:00 a.m.

ImageMagick ReadDIBImage函数整数溢出漏洞

2007-09-2500:00:00
Root
www.seebug.org
23

EPSS

0.003

Percentile

70.1%

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_line
image->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>