Netscape Communicator JPEG组件HEAP溢出漏洞
发布日期:2000-07-27
更新日期:2000-07-27
受影响系统:
Mozilla Browser M15
Netscape Communicator 4.73以及更低版本
不受影响系统:
Mozilla Browser M16
Netscape Communicator 4.74
描述:
Netscape Communicator 浏览器使用了 Independent JPEG 小组的解码库来处理JPEG编码的
图像文件。 这个库函数跳过了JPEG注释部分,但浏览器使用另外的函数读取并将它们储存在内
存中。注释部分包括两个字节长的长度域,用来标明注释的长度。这个长度也包括了长度域的
长度(2个字节).因此为了确定注释的实际长度,函数会用长度域的内容减去两个字节,然后
结果再加上1个字节(用来做空字符串截断),最后的数值作为实际的长度。由于没有对长度域的
内容作检查,如果将这个值设为一,减2之后会得到一个负值,然而实际储存结果的变量是个无符
号数,这导致结果变成一个很大的数。JPEG处理函数会根据这个结果循环读取JPEG注释的内容到
内存中,然而由于注释的长度现在变成一个很大的数值,处理函数可能会将整个JPEG文件的内容
都读到内存中去,覆盖掉HEAP内存的内容。理论上攻击者是可能利用这个漏洞执行任意代码的,
尽管实现起来并不容易。
<* 来源: Solar Designer <solar@false.com>
http://www.openwall.com/advisories/
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
Solar Designer在其站点上提供了测试用的JPEG图片:
http://www.openwall.com/advisories/OW-002-netscape-jpeg-r1.tar.gz
http://www.openwall.com/advisories/OW-002-1.zip
建议:
升级到Netscape Communicator 4.74 和 Mozilla M16
针对Mozilla M15的补丁程序:
- --- mozilla/modules/libimg/jpgcom/jpeg.cpp.orig Tue Mar 28 02:08:15 2000
+++ mozilla/modules/libimg/jpgcom/jpeg.cpp Wed May 24 17:24:03 2000
@@ -469,6 +469,10 @@
/* Get 16-bit comment length word. */
INPUT_2BYTES(cinfo, length, return FALSE);
+ if (length < 2) {
+ cinfo->err->msg_code = JERR_BAD_LENGTH;
+ il_error_exit((j_common_ptr)cinfo);
+ }
length -= 2; /* discount the length word itself */
PR_FREEIF(ic->comment);
浏览次数:6184
严重程度:0(网友投票)