利用CVE-2014-0322漏洞的IE攻击修复工具发布

微软发布安全公告2934088,针对Internet Explorer 9和10中的CVE-2014-0322漏洞提供修复工具。文章详细介绍了受影响的平台、防护措施、漏洞技术细节及Fix it工具的工作原理。

修复工具可用于阻止利用CVE-2014-0322的Internet Explorer攻击

今天,我们发布了安全公告2934088,为关注Internet Explorer 9和10中新漏洞的客户提供指导。该漏洞已在针对浏览www.vfw.org和www.gifas.asso.fr的Internet Explorer 10用户的有限、定向攻击中被利用。我们将在本文中涵盖以下主题:

  • 受影响的平台
  • 您可以采取的安全措施
  • 有关漏洞的更多细节
  • 有关Fix it工具的更多细节

受影响的平台

如安全公告2934088所述,Internet Explorer 9和Internet Explorer 10都包含易受攻击的代码。然而,我们尚未看到任何能够触发Internet Explorer 9上漏洞的利用代码。下表可能有助于按平台解释风险:

Windows XP Server 2003 Windows Vista Server 2008 Windows 7 Server 2008 R2 Windows 8 Server 2012 Windows 8.1 Server 2012 R2
Internet Explorer 6 不受影响 n/a n/a n/a n/a
Internet Explorer 7 不受影响 不受影响 n/a n/a n/a
Internet Explorer 8 不受影响 不受影响 不受影响 n/a n/a
Internet Explorer 9 n/a 易受攻击,未受攻击 易受攻击,未受攻击 n/a n/a
Internet Explorer 10 n/a n/a 受攻击 受攻击 n/a
Internet Explorer 11 n/a n/a 不受影响 n/a 不受影响

您可以采取的安全措施

以下三种防护机制中的任何一种都将保护您免受利用此漏洞进行代码执行的攻击:

  1. 升级到Internet Explorer 11
  2. 安装增强缓解体验工具包(EMET)
  3. 安装Fix it临时修复工具

升级到Internet Explorer 11是保护自己免受针对此漏洞的利用尝试的最佳方式。

增强缓解体验工具包(EMET)也是阻止我们分析过的定向攻击的有效方法。此特定利用明确检查EMET,并拒绝在任何安装了EMET的系统上运行。然而,即使删除了利用的EMET检查,EMET的默认配置也会阻止攻击。在此特定情况下,EMET的EAF和Anti-Detour功能在默认EMET配置中阻止了利用。启用EMET的“Deep Hooks”功能后,MemProt、StackPivot和CallerCheck功能各自独立能够阻止此利用。我们很高兴看到EMET继续为当今大部分内存损坏利用提供保护。就此而言,我们发现2013年下半年,我们遇到的所有利用内存损坏进行代码执行的野外利用都被EMET阻止!我们建议所有客户安装此工具。请关注下周在RSA会议上关于EMET未来的公告。

第三种,可能也是最简单的保护自己免受利用此漏洞尝试的方法,是安装今天公告中发布的Fix it临时修复工具。您可以参考知识库文章2934088获取完整细节,但只需通过以下链接点击“Fix It”安装程序即可保护您的系统免受利用此漏洞的尝试:

[应用Fix it] [卸载Fix it]

安装Fix it不需要重新启动,但需要系统管理员权限。Fix it安装将在任何已安装最新安全更新(MS14-010)的Internet Explorer 9或Internet Explorer 10系统上生效。更具体地说,当mshtml.dll是以下四个版本之一时,appcompat shim将为Internet Explorer进程启用:9.0.8112.16533、9.0.8112.20644、10.0.9200.16798或10.0.9200.20916。最终解决此漏洞的安全更新将附带递增的mshtml.dll版本号,从而自动淘汰此Fix it。

您可以在http://blogs.technet.com/b/srd/archive/tags/fixit/阅读有关此临时修复技术先前实例的更多信息。Fix it已成为我们客户在利用出现和最终、全面、经过充分测试的安全更新可供广泛分发之间的时间段内流行的缓解技术。上一个解决Internet Explorer漏洞的Fix it工具(由MS13-080解决)在2300万台计算机上安装。最近的安全相关Fix it解决方案缓解了随后由MS13-096解决的Office漏洞。该Fix it解决方案在5700万台计算机上安装。我们提到这些数字,希望让您相信许多IT专业人士正在使用Fix it解决方案保护其企业网络。

有关漏洞和利用的更多细节

CVE-2014-0322描述了一个mshtml.dll use-after-free漏洞,涉及在CMarkup对象被释放后访问它。如上所述,此漏洞存在于Internet Explorer 9和Internet Explorer 10中,但我们看到的利用仅针对32位Internet Explorer 10。该利用在FireEye安全博客上有更详细的解释。概括来说,它使用Javascript触发use-after-free条件,然后使用Flash将写入原语转换为读/写原语,从而绕过DEP和ASLR。原语转换通过基于已释放对象的数据(现在已被攻击者重新分配)重定向写入以破坏Flash对象内部的大小字段。Flash对象中损坏的大小字段用于在对象边界之外读取和写入,从而发现Internet Explorer地址空间中的模块地址。我们不知道任何用于“突破”Internet Explorer保护模式沙箱的权限提升或沙箱逃逸漏洞。因此,即使在利用获得代码执行后,它仍然需要一个非平凡的元素才能导致计算机的持久性妥协。

有关Fix it工具的更多细节

Fix it重定向两个函数的执行,mshtml!CMarkup::InsertElementInternal和mshtml!CMarkup::InsertTextInternal,到由appcompat shim引入的代码。两个函数中都进行了类似的更改。让我们仔细看看mshtml!CMarkup::InsertElementInternal:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
0:020> u mshtml!Cmarkup::InsertElementInternal
MSHTML!CMarkup::InsertElementInternal:
e9d3d2a500      jmp     MSHTML!SZ_HTMLNAMESPACE+0xf (66bb43c7) // 我们重定向执行

0:020> u 66bb43c7
MSHTML!SZ_HTMLNAMESPACE+0xf:
60              pushad //保存寄存器
8bc8            mov     ecx,eax //将this*指针移动到ecx
e818468bff      call    MSHTML!CMarkup::CLock::CLock+0x2 (664689e7) //调用我们在此CMarkup对象上AddRef()的代码
61              popad //恢复我们的寄存器
55              push    ebp  //执行我们在跳转到此shim时覆盖的代码
8bec            mov     ebp,esp
e91c2d5aff      jmp     MSHTML!CMarkup::InsertElementInternal+0x5 (661570f4) //跳回到我们重定向点后的下一条指令

与CVE-2013-3893的Fix it解决方案类似,shim利用mshtml.dll .text部分末尾的松弛空间。敏锐的读者可能会注意到,appcompat shim没有引入任何代码来减少CMarkup对象的引用计数。换句话说,appcompat shim引入了内存泄漏。内存会在IE标签(进程)终止时恢复。此修复工具的小副作用是无害的,当然不会出现在此漏洞的最终全面安全更新中。

致谢

感谢Richard Van Eeden、Axel Souchet、Chengyun Chu和Elia Florio帮助分类此漏洞并帮助构建Fix it临时修复工具。

结论

如果您对此漏洞带来的风险、我们看到的利用此漏洞进行代码执行的利用或可用于保护系统的缓解机会有任何疑问,请告诉我们。您可以通过secure@microsoft.com向我们发送电子邮件,主题行中带有[SRD]。或者,如果您计划下周参加在加利福尼亚州旧金山举行的RSA会议,请随时到Microsoft展位#3005与我们面对面交谈。我们期待在周二早上宣布EMET新闻。

  • Neil Sikka, MSRC Engineering (@neilsikka)
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计