学者们已经开发出一种通过滥用推测执行来攻击安全计算机系统的新技术,而推测执行是一种通常用于性能优化的CPU机制。
这项名为BlindSide的技术 在上周由新泽西州史蒂文斯技术学院,苏黎世联邦理工学院和阿姆斯特丹弗里耶大学的一组学者[ PDF ]中详细介绍了。
研究人员说,BlindSide可用于制作绕过 现代操作系统上的ASLR(地址空间布局随机化)的漏洞利用 程序。
BLINDSIDE可以绕过ASLR
内存地址对于攻击者很重要。如果攻击者知道某个应用程序在内存中的什么位置执行代码,则黑客可以调整攻击特定应用程序并窃取敏感信息的漏洞。顾名思义,ASLR通过随机执行代码在内存中执行的位置来工作,有效地消除了攻击,直到攻击者找到绕过ASLR的方法为止。
要绕过ASLR,攻击者通常需要找到一种“信息泄漏”类型的漏洞,该漏洞会泄漏内存位置。否则攻击者可以探查内存,直到他们找到另一个应用程序运行的正确位置,然后修改其代码以将该内存地址空间作为目标。
很难采用这两种技术,尤其是第二种技术,这通常会导致系统崩溃或安全系统检测到攻击者的嘈杂探测。
新的BlindSide攻击通过将这种探测行为移入推测执行领域来发挥作用。
推测执行 是现代处理器的一种提高性能的功能。在推测执行期间,CPU预先运行并与主计算线程并行运行操作。
当主CPU线程达到某些点时,推测执行允许它选择一个已经计算出的值并继续执行下一个任务,此过程可加快计算速度。在推测执行期间计算的所有值都将被丢弃,不会影响操作系统。
学者说,这个可以大大加快CPU速度的过程也可以“通过引入推测性探测来 [[放大]常见软件漏洞的严重性,例如内存损坏错误 ”。
实际上,BlindSide可以利用软件应用程序中的漏洞,并在推测执行域中反复利用该漏洞,反复探测内存,直到攻击者绕过ASLR。
由于此攻击发生在推测执行的范围内,因此所有失败的探测和崩溃在发生并被抑制然后丢弃后,都不会影响CPU或其稳定性。
攻击者需要的只是一个简单的内存损坏漏洞,他们可以在系统上利用该漏洞。在他们的研究论文中,该团队使用Linux内核上的单个缓冲区溢出来:
用BlindSide打破KASLR,以安装可靠的ROP漏洞;
使用BlindSide打破任意随机方案,以挂载仅用于数据的体系结构漏洞(泄漏根密码散列);
中断细粒度的随机化和仅内核执行的内存,以转储完整的内核文本并安装可靠的ROP漏洞。
研究人员说,BlindSide有效地使攻击者可以“盲人”,而不必担心ASLR。
无论采用哪种架构,BlindSide攻击都可以起作用,并且在Intel和AMD CPU上都经过了测试。
此外,尽管CPU供应商最近针对诸如Spectre,Meltdown等推测性执行攻击增加了缓解措施,但BlindSide攻击仍然有效。
该团队的研究论文提出了一些缓解措施,操作系统制造商可以采用这些缓解措施来对抗BlindSide攻击。