ASLR如何成为安全防御的关键屏障

本文详细探讨了地址空间布局随机化(ASLR)在防御现实攻击中的关键作用,通过分析多个实际漏洞案例(如CVE-2014-0502和CVE-2014-0324),展示了ASLR如何阻止攻击者可靠利用漏洞,并提供了针对非ASLR模块的解决方案,包括使用EMET和强制ASLR更新。

当ASLR发挥作用时

我们曾多次在本博客中讨论在现代软件中启用地址空间布局随机化(ASLR)缓解措施的重要性,因为它是一种非常重要的防御机制,可以增加攻击者编写漏洞利用的成本,并在某些情况下防止可靠的利用。在今天的博客中,我们将再次深入探讨ASLR,通过实际案例展示它如何有效缓解两个在野攻击中看到的真实漏洞利用,并为尚未配备ASLR的程序提供解决方案建议。

天生具备ASLR

ASLR缓解措施在漏洞利用开发中增加了重要障碍,但我们意识到,有时程序中加载的单个未启用ASLR的模块就足以一次性破坏所有保护效益。因此,最近版本的多数流行Microsoft程序都原生开发为自动为加载到进程空间的每个模块强制执行ASLR。实际上,Internet Explorer 10/11和Microsoft Office 2013设计为充分利用此缓解措施的优势,它们在Win7及更高版本上原生强制执行ASLR随机化,无需任何额外设置,即使对于那些最初未使用/DYNAMICBASE标志编译的DLL也是如此。因此,使用这些程序的客户已经具有良好的原生保护,他们只需要关注其他可能被未使用ASLR的漏洞利用针对的程序。

ASLR有效性的实际展示

鉴于ASLR的重要性,我们正在付出额外努力来弥补ASLR绕过漏洞,这些漏洞不时在安全会议上出现或在定向攻击中被发现。这项工作的成果是加强保护,包括针对无法像IE 10/11和Office 2013那样原生强制执行ASLR的旧版Microsoft操作系统和浏览器的保护。下表展示了一些旨在打破知名ASLR绕过漏洞的近期更新示例。

MS 公告 ASLR 绕过 参考
MS13-063 LdrHotPatchRoutine Ref: http://cansecwest.com/slides/2013/DEP-ASLR%20bypass%20without%20ROP-JIT.pdf 在Pwn2Own 2013中报告,仅适用于Win7 x64
MS13-106 HXDS.DLL (Office 2007/2010) Ref: http://www.greyhathacker.net/?p=585 在野与IE/Flash漏洞利用(CVE-2013-3893、CVE-2013-1347、CVE-2012-4969、CVE-2012-4792)一起使用
MS14-009 VSAVB7RT.DLL (.NET) Ref: http://www.greyhathacker.net/?p=585 在野与IE漏洞利用(CVE-2013-3893)一起使用

我们很高兴看到这些近期ASLR更新在两个最近的攻击中发挥作用:2月份在某些定向攻击中发现的Flash漏洞利用(CVE-2014-0502)和今天刚刚修补的IE8私有报告漏洞(CVE-2014-0324)。如下面的代码片段所示,这两个漏洞利用在安装了MS13-106更新的完全修补机器(运行Vista或更高版本)上不会有效。

CVE-2014-0502(Flash)漏洞利用代码
尝试使用HXDS.DLL进行ASLR绕过的失败尝试,该漏洞已被MS13-106修复。
注意:代码还尝试了基于Java 1.6.x的第二种ASLR绕过。

CVE-2014-0324(IE8)漏洞利用代码
尝试使用HXDS.DLL进行ASLR绕过的失败尝试,该漏洞已被MS13-106修复。

针对非ASLR模块的解决方案

上述两个漏洞利用代码展示了另一个重要教训:即使Microsoft库原生编译了ASLR,即使我们努力修复产品中已知的ASLR漏洞,攻击者仍有机会使用第三方DLL来破坏ASLR生态系统。Java 1.6.x的例子是一个知名案例:由于该软件套件的流行性以及它将一个旧的未启用ASLR的库(MSVCR71.DLL)加载到浏览器中,它成为漏洞利用中非常流行的ASLR绕过向量。实际上,安全研究人员经常扫描未使用/DYNAMICBASE编译的流行第三方库,这些库可能允许绕过;以下列表仅是一些常见示例。

第三方ASLR绕过 参考
Java 1.6.x (MSVCR71.DLL) 在野用于多个CVE的非常常见的ASLR绕过 注意:Java 1.7.x使用支持ASLR的MSVCR100.DLL
DivX Player 10.0.2Yahoo Messenger 11.5.0.228AOL Instant Messenger 7.5.14.8 Ref: http://www.greyhathacker.net/?p=756(未在真实攻击中看到)
DropBox Ref:http://codeinsecurity.wordpress.com/2013/09/09/installing-dropbox-prepare-to-lose-aslr/(未在真实攻击中看到)
veraport20.Veraport20Ctl Gomtvx.LauncherINIUPDATER.INIUpdaterCtrl Ref: KISA报告 http://boho.or.kr/upload/file/EpF448.pdf(在野与CVE-2013-3893一起使用)

如本博客开头所述,Internet Explorer 10/11和Office 2013不受第三方模块和插件引入的ASLR绕过影响。相反,仍运行旧版Internet Explorer和Office的客户可以利用两种有效工具来为任何模块强制执行ASLR缓解措施:

  • EMET(增强缓解体验工具包):可用于系统范围内启用ASLR或选择性为任何进程启用“MandatoryASLR”;
  • “强制ASLR”更新KB2639308:使选定应用程序能够使用映像文件执行选项(IFEO)注册表键强制重定位未使用/DYNAMICBASE构建的映像;

结论

ASLR绕过并不代表漏洞,因为它们必须与真实的内存损坏漏洞结合才能允许攻击者创建漏洞利用,但很高兴看到关闭ASLR绕过可以对某些定向攻击的可靠性产生负面影响。我们鼓励所有客户在可能的情况下主动测试和部署建议的工具,特别是针对常被内存损坏漏洞利用针对的旧程序。我们预计攻击者将继续增加对更复杂ASLR绕过研究的关注,这些绕过依赖于内存地址的披露而非非ASLR库。

  • Elia Florio, MSRC Engineering
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计