libtiff Directory Entry计数整数溢出漏洞
2008-04-09 04:22:38来源:互联网 阅读 ()
发布日期: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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash