近日,研究人发现一个危险的Intel芯片漏洞,该漏洞能够让攻击者对所有软件平台执行有效的攻击,甚至跨越虚拟化边界。
纽约州立大学宾汉姆顿分校计算科学学院Dmitry Evtyushkin和Dmitry Ponomarev以及加州大学河滨分校Nael Abu-Ghazaleh在其论文《Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR》中描述了一种攻击,当这种攻击在运行最新版Linux的Haswell处理器执行时,可在约60毫秒内可靠地恢复内核地址空间布局随机化(ASLR)。
根据这些研究人员表示,这个问题出在Intel芯片对分支目标缓冲器(BTB)的使用。
“分支预测器是现代处理器性能的关键,分支预测硬件的主要组件之一是分至目标缓冲器,”他们写道,“BTB会存储最近执行的分支指令的目标地址,这些地址可直接从BTB查找中获取在下一周期目标地址开始的指令。由于BTB在相同内核执行多个应用共享,这可能导致通过BTB侧信道出现信息泄露。”
Abu-Ghazaleh指出,虽然该团队使用Intel的Haswell芯片进行测试,但其他Intel芯片也可能易受到攻击,因为它们为分支预测器使用相同的原则,但相关具体细节以及我们是否可恢复所有ASLR取决于配置情况。
在这些研究人员描述的新攻击中,通过利用BTB的侧信道信息,攻击者可恢复内核地址的所有随机位,减少用户级随机化的熵。
“我们的攻击只需要控制用户级进程,而不需要依靠任何明确的内存泄露,”这些研究人员写道,“这种基于BTB侧信道攻击可能实现的关键在于,攻击者能够以可控制和稳定的方式在两个用户级进程之间、用户进程和内核之间制造BTB冲突。”
研究人员称,ASLR的目的是让攻击者难以知道程序地址空间具体代码页的位置,这意味着,绕过ASLR可能导致大量攻击。
这些研究人员称:“所有支持随机化的现有操作系统都部署了某种ASLR用于用户和内核级地址空间。内核级ASLR(KASLR)可随机化内核代码段,可阻止需要知道内核地址空间布局(包括返回定向编程、跳转定向编程、return-to-libc、ret-2-user以及其他攻击)的攻击。”
Cigital公司顾问Andre Joseph称,而绕过ASLR的能力可让攻击者变得非常危险。
“这是重要的纵深防御做法,因为它通过随机化攻击者代码的位置让攻击者更难利用溢出攻击,”Joseph称,“在充分随机化后,攻击者不会知道在哪里进行指令指示流量以执行其代码。”
除了Intel芯片漏洞可能允许攻击者绕过任何平台的ASLR,ERNW Research安全研究人员Felix Wilhelm还展示了概念验证工具,可从客户虚拟机泄露KVM管理程序基本地址。然而,Wilhelm指出了在虚拟化环境中执行这种攻击的一些局限性,这主要取决于部署情况。
Joseph称部署多个处理器可能让这种攻击非常难以执行。
“内核ASRL似乎比用户应用ASLR位更容易获取,如果你有多个内核,对于应用ASLR,这特别危险,”Joseph称,“攻击者采取的方法是,迫使受害者应用到相同的内核作为恶意进程,但我不确定这些方法在实际中是否可靠。为了让用户空间ASLR漏洞利用有效运行,你需要两个进程在同一处理器,因为每个处理器都有不同的BTB。”
研究人员称软件措施可能有有限的功效,因为他们不能控制分支如何映射到BTB条目,让他们无法解决侧信道的根本问题。同时,研究人员指出更细粒度的ASLR机制或者模糊时间戳计数器也可能让攻击变得更困难。
研究人员总结称,对Intel处理器做出更改是更有效的做法。
“硬件解决方案可从根本上缓解基于BTB的攻击,这种解决方案会改变BTB寻址机制,防止BTB中可利用的冲突。而对于针对KASLR的攻击,可利用完全虚拟机制来访问BTB来缓解,消除用户代码和内核代码之间的冲突。”
本文转自d1net(转载)