Microsoft “Fix it” available to mitigate Internet Explorer 8 vulnerability
今天,我们发布了"Microsoft Fix it"解决方案,用于阻止利用安全公告2847140中描述的Internet Explorer 8(IE8)漏洞的攻击。这个经过代码签名、易于下载和安装的Fix it包使用Windows应用程序兼容性工具包,在每次加载IE时对mshtml.dll进行运行时的小幅修改。以下是应用和卸载Fix it解决方案的链接:
[应用Fix it](Microsoft Fix it 50992)
[卸载Fix it](Microsoft Fix it 50991)
在本博客文章中,我们将描述以下内容:
- 关于全面安全更新进展的更多信息
- 关于破坏利用此漏洞的攻击的变通选项的更多信息
- 关于Fix it解决方案如何工作的更多信息
全面更新正在测试中
我们已经构建了一个解决此漏洞的全面安全更新,目前正在全天候测试中。一旦测试确认其准备好向所有客户广泛发布,我们将立即发布。明天,请访问我们的月度提前通知服务(ANS)博客,了解5月安全公告周期中发布的安全更新的详细信息。
变通选项
如安全公告2847140所列并经外部确认,Microsoft的增强缓解体验工具包(EMET)是针对我们看到的野外攻击和公共渗透测试框架的良好变通选项。针对Windows Vista和Windows 7的渗透测试框架中的利用版本利用Java 6安装的DLL模块绕过ASLR。EMET的强制ASLR功能通过在IE8加载此DLL时强制实施ASLR随机化来阻止此利用。目前,我们知道的野外攻击数量有限,它们仅针对Windows XP上的IE8。攻击者当前使用的这些利用也被EMET的EAF缓解以及EMET 3.5 TP和4.0 Beta的反ROP缓解措施阻止。第一个ROP阶段触发EMET的StackPointer、CallerCheck和SimExecFlow检查。已经使用EMET的企业可以分析其机器日志,以调查EMET缓解措施报告的此利用的可能利用事件。
为了提供更强的保护级别,我们建议在全面安全更新可用之前安装Fix it解决方案。Fix it应用于mshtml加载的二进制文件的更改,类似于IE团队全面安全更新应用的更改。有关漏洞的更多信息以及Fix it如何阻止它,可以在下一节中找到。
Fix it如何"修复"易受攻击的代码
该漏洞是由于页面布局问题暴露的,当Internet Explorer 8尝试计算不再在DOM树中的节点的布局信息时触发。该问题是由未正确清理并包含对页面元素的悬空指针的布局结构引起的。当布局更新时,浏览器由于访问释放的内存而崩溃。清理死链接的代码已经存在,但它在访问布局结构之后运行。解决方案是在访问布局结构之前移动清理逻辑。
基于appcompat shim的"Fix it"保护工具执行与Internet Explorer团队提供的修复完全相同的操作。这仍然是一个变通方法,但与其他变通方法相比更精确,因为它阻止了漏洞的根本原因。shim在内存中修改mshtml!CBlockContainerBlock::BuildBlockContainer函数,以强制代码流更改,从而在访问之前正确清理布局结构:
|
|
“Fix it"解决方案仅适用于已应用MS13-028:Internet Explorer累积安全更新:2013年4月9日的x86版本Internet Explorer 8。应用此变通方法不会干扰将解决此问题的最终安全更新的安装。但是,应用变通方法会对Internet Explorer的启动时间产生很小的影响。因此,在应用尚未发布的最终安全更新后,您应该卸载Fix it变通方法,因为它不再需要。
结论
我们想重申,只有IE8容易受到此问题的影响,并且我们目前只看到有限的攻击。我们正在努力开发全面的安全更新。明天,请查看我们的月度提前通知服务(ANS)博客,了解5月安全公告周期中发布的安全更新的详细信息。同时,如有任何关于上述内容的问题,请随时与我们联系。您可以通过switech@microsoft.com或secure@microsoft.com与我们联系。
特别感谢Elia Florio分析此漏洞的利用工作。
- Cristian Craioveanu和Jonathan Ness,MSRC工程团队