TONTOU:针对 AMD 和英特尔的新型 Spectre v2 攻击

关键点:
  • TONTOU 利用了清理预测缓冲区和使用该缓冲区之间的时间间隔。
  • 攻击者利用“中断注入”来重定向内核流并污染预测机制。
  •  它会影响 AMD 的 Zen 1 至 Zen 4 架构以及多代英特尔处理器。
  • 缓解补丁已纳入最近的 Linux 内核更新(8 月 5 日)。

通图攻击

你的处理器速度会不会正是威胁你安全的罪魁祸首?要了解处理器是如何达到如此高速的,我们必须明白它们的工作原理是“预测未来”……不,它们可不是魔法师,也没有水晶球……

处理器的工作原理是,芯片不会等待程序执行特定路径,而是预测可能的路径并进行预判。如果预测错误,则丢弃已执行的工作,但痕迹会保留在内存中。Spectre漏洞正是利用了这一点,它是近年来发现的最严重的漏洞之一。自发现以来,攻击者已经学会了如何读取这些痕迹,并创建了越来越复杂的变种;TONTOU就是其中一种新型漏洞。

麻省理工学院的研究人员发现了一种名为 TONTOU(中和时间到使用时间)的复杂新技术,该技术利用 Spectre v2 漏洞,允许从用户空间读取内核内存。

尽管制造商和开发人员多年来设计了各种保护机制来抵御预测性攻击,但攻击者还是设法发现了新的途径,而这项新的 CSAIL 研究展示了如何绕过这些保护措施。

研究人员发现,从缓冲区被清除到预测结果被使用之间存在不可避免的时间间隔,而正是在这段短暂的时间间隔内,代码(有时只有几条指令)通过系统中断被注入,从而有可能重新污染硬件并提取关键数据。

关于此次攻击:Safe-RET 中的中断和漏洞

AMD有一种名为 Saferet 的机制可以防御SRSO(推测性返回堆栈溢出)漏洞,它会在每次使用预测机制之前立即清除预测数据。但这会留下一个短暂的漏洞窗口,攻击者可以在几十纳秒内利用该漏洞。为了攻击如此短暂的漏洞窗口,研究人员开发了一种名为中断注入的技术。

处理器会不断暂停任务以处理中断,而常见的程序可以配置这些定时器。基于此,研究人员精确地调整了一个定时器,并利用一种降低CPU速度的技术,使处理器在错误的时间点被中断。在这次中断期间,攻击者可以强制执行大量调用,导致地址栈溢出。当错误执行结束后,处理器会丢弃该进程,但访问的数据仍然保留在共享缓存中,攻击者可以通过分析访问时间从中提取这些数据。

在真实系统上进行密码提取和测试

为了展示TONTOU的严重性,该团队在一台运行最新Linux内核的AMD系统上构建了一个可用的漏洞利用程序。第一个难关是绕过操作系统在内存中随机化位置的防御机制,他们尝试了十次才成功,每次测试耗时约九分钟。

随后,他们以非特权用户身份进行了本地攻击,成功获取了root密码哈希值,提取速度为每秒5.47字节,准确率达91.97%。在50%的测试中(平均耗时18分钟),他们成功检测并提取了密码文件的内容。虽然速度较慢,但​​足以严重攻破服务器。

对英特尔、AMD 和缓解补丁的影响

研究团队测试了四代英特尔和AMD处理器,在两种架构上均实现了预测失败。虽然该技术在AMD的Zen 1至Zen 4系列处理器上有效,但在英特尔芯片上,该攻击绕过了两种不同的保护机制。不过,不同代英特尔处理器之间的表现并不一致,这表明硬件中对名义防御机制的实现方式有所不同。

研究人员建议,作为一种解决方案,在中断结束后再次清除预测机制。虽然这一措施对AMD来说似乎可行,但对英特尔来说可能适得其反,因为该攻击依赖于中断留下一致的状态,而清除预测机制可能会使攻击更加可靠。

研究人员在2月初通知了AMD和英特尔,并在3月份通知了Linux内核维护者。因此,用于缓解该漏洞的代码已于8月5日集成到Linux内核中。

最后,如果您有兴趣了解更多信息,可以点击以下链接查看详情。


在 Google 中将其添加为首选来源