libtiff Directory Entry计数整数溢出漏洞

2008-04-09 04:22:38来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

libtiff Directory Entry计数整数溢出漏洞

发布日期:2004-12-21
更新日期:2004-12-22

受影响系统:
LibTIFF LibTIFF 3.7.0
LibTIFF LibTIFF 3.5.7
不受影响系统:
LibTIFF LibTIFF 3.7.1
描述:
libtiff是负责对TIFF图象格式编码/解码的应用库。

libtiff在处理'directory entry'计数时存在问题,远程攻击者可以利用这个漏洞进行基于堆的缓冲区溢出,精心构建文件数据可能以用户进程权限执行任意指令。

问题是当计算'directory entry'大小时没有充分验证用户提供的数据。一个TIFF文件会包含多个'directory entry'头字段来描述文件中的数据,其中使用一个计数器和偏移值来计算判断大小和定位数据,如果'directory entry'类型是TIFF_ASCII或TIFF_UNDEFINED,if_dirread.c文件的CheckMalloc就会为这些条目内容分配空间:

cp = CheckMalloc(tif, dp->tdir_count 1, 1, mesg); if( (ok = (cp && TIFFFetchString(tif, dp, cp))) != 0 ) cp[dp->tdir_count] = '\0'; /* XXX */

如果tdir_count设置为0xffffffff,会导致函数调用分配0字节内存,然后后续的内存拷贝会导致缓冲区溢出,精心构建TIFF文件,可能以用户进程权限执行任意指令。

<*来源:infamous41md (infamous41md@hotpop.com)

链接:http://www.idefense.com/application/poi/display?id=174&type=vulnerabilities
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 可采用如下补丁:

--- tif_dirread.c.bak 2004-12-19 21:04:00.000000000 0300 tif_dirread.c 2004-12-19 21:04:03.000000000 0300@@ -71,7 71,7 @@ /* * XXX: Check for integer overflow. */- if (elem_size && bytes / elem_size == nmemb) if (nmemb && elem_size && bytes / elem_size == nmemb) cp = (char*)_TIFFmalloc(bytes); if (cp == NULL)

厂商补丁:

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

http://www.libtiff.org/

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:多线程php safe_mode_exec_dir限制绕过漏洞

下一篇:MS Windows Media Player多个安全漏洞