Java JNDI/DNS远程拒绝服务漏洞
发布日期:2004-11-08
更新日期:2004-11-09
受影响系统:Sun JRE 1.5.0
Sun JRE 1.4.2
描述:
BUGTRAQ ID:
11619
CVE(CAN) ID:
CVE-2004-1503
Java Runtime Environment(JRE)为JAVA应用程序提供可靠的运行环境。
Java在实现DNS解析时存在问题,远程攻击者可以利用这个漏洞使目标应用程序消耗大量资源造成拒绝服务。
Java使用'InitialDirContext'执行DNS查询,在com/sun/jndi/dns/DnsClient.java中,'xid'类型是'int',但是由'short'类型的'ident'初始化,因此如果'ident'到达32768时就会变负,而使的'xid'值为'-32768':
~ private short ident = 0; // used to set the msg ID field
[...]
int xid;
synchronized (identLock) {
xid = ++ident;
}
在类com/sun/jndi/dns/Header.java中,来自DNS服务器的应答函数中,转换时使用'int'类型代替了'short':
~ private static int getShort(byte[] msg, int pos) {
return (((msg[pos] & 0xFF) << 8) |
(msg[pos + 1] & 0xFF));
~ }
结果导致'32768'不等于'-32768'而出现异常,因此如果攻击者执行多个DNS查询到达32768个请求时,可造成应用程序产生拒绝服务。
<*来源:Kurt Huwig (
k.huwig@iku-ag.de)
链接:
http://marc.theaimsgroup.com/?l=bugtraq&m=109994063331773&w=2
*>
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 重写应用程序在32768请求达到时使用新的InitialDirContext。
厂商补丁:
Sun
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://sunsolve.sun.com/security浏览次数:3140
严重程度:0(网友投票)