近日斯蒂文斯理工学院、苏黎世理工学院和阿姆斯特丹自由大学的研究人员发现了一种名为 BlindSide 的攻击技术,利用该技术可以构造绕过主流操作系统ASLR (Address Space Layout Randomization,地址空间配置随机化)的漏洞利用。
BLINDSIDE攻击
内存地址对于攻击者来说是非常重要的。如果攻击者知道了APP要执行内存中的哪些代码,就可以调整漏洞利用来对特定应用发起攻击并窃取敏感信息。ASLR 的工作原理是随机化内存中执行的代码的位置,可以有效应对缓冲区溢出攻击的安全保护技术。
为绕过ASLR,攻击者需要找到泄露内存位置的漏洞,或者找到另一个app 运行的适当位置,然后修改攻击代码来攻击内存地址空间。这两种攻击技术都是非常难的,尤其是第二种攻击方式可能会引发系统奔溃或被安全防护系统检测到。
研究人员发现的新的BlindSide 攻击可以将探测的行为放在推测执行过程中。推测执行是一种提升主流处理器性能的方法。在推测执行过程中,CPU会提前运行一些与当前计算线程并行的操作。当主CPU 线程到达某个特定点后,推测执行就会取出提前计算好的值并进入下一个任务,这一过程可以提升整个计算操作的性能。推测执行过程中得到的所有的值都会被丢弃,对操作系统没有任何影响。
研究人员称提升CPU 性能的这一过程同样会放大常见软件中安全漏洞的严重性,比如推测探测引入的内存破坏错误。BlindSide利用了APP中的安全漏洞,并应用到推测执行中,可以重复地探测内存直到攻击者成功绕过ASLR 。
因为攻击发生在推测执行过程中,因此探测失败和奔溃等都不会到CPU和其稳定性带来任何影响。攻击者需要做的就是利用系统中的一个内存破坏漏洞即可。在论文中,研究人员使用了Linux kernel中的一个缓冲区溢出漏洞:
· 利用BlindSide打破了KASLR来挂载一个可靠的ROP 漏洞利用;
· 利用BlindSide打破了任意随机化方案来挂载架构数据漏洞利用,泄露root口令哈希值;
· 打破随机化和kernel 执行内存来复制kernel文本,并挂在一个可靠的ROP 漏洞利用。
PoC 视频参见:https://www.youtube.com/embed/m-FUIZiRN5o
研究人员称攻击者利用BlindSide 可以有效地实现盲劫持,无需考虑ASLR 。BlindSide 攻击可以适用于不同的架构,研究人员在Intel 和AMD CPU 上都做了测试。
此外,BlindSide 攻击在修复了Spectre、Meltdown等推测执行攻击的CPU 上仍然适用。
研究人员在文章中也提到了多种缓解BlindSide 攻击的方法。
更多参见发表于安全顶会 CCS 2020的学术论文,下载地址:https://download.vusec.net/papers/blindside_ccs20.pdf
本文翻译自:https://www.zdnet.com/article/new-blindside-attack-uses-speculative-execution-to-bypass-aslr/如若转载,请注明原文地址