Spectre v2 的缓解措施(如 eIBRS 和 Safe RET)通过在权限边界处(例如从用户态切换到内核态时)清理或隔离分支预测器状态来发挥作用 。这些防御的一个关键假设是:攻击者无法在清理之后、预测器被使用之前的短暂间隔内操纵预测器。
TONTOU 推翻了这一假设。在 AMD 的 Safe RET 上,这个可被利用的窗口仅有 两条指令 那么宽 。一个无权限的攻击者可以注入一个精确计时的硬件中断(称为 INTERRUPT INJECTION,即中断注入),使其正好落在这个间隙中——在防御已经执行完毕、但内核尚未使用预测器状态之时,重新“投毒”分支预测器 。这使得所有本应生效的防护都无法阻止推测执行侧信道泄漏。
该攻击仅需在目标机器上能够执行无特权的用户态代码,无需任何提权操作 。
研究人员构建了完整的端到端漏洞利用代码,并在多代处理器上进行了测试:
在 Intel 平台上,研究人员在 Cascade Lake Refresh 和 Arrow Lake 上演示了对 eIBRS 的部分绕过,但攻击面与 AMD Safe RET 的情况有所不同 。该研究未确认在 AMD Zen 4 上使用相同方法能够成功实现分支误导 。
披露与响应的时间线相当紧凑:
英特尔在协调披露过程中确认了该发现,并为其漏洞奖励计划颁发了奖金,但告知研究人员其不会开发额外的缓解措施,原因包括现实世界中利用该漏洞所需的信息泄露工具(gadgets)的可获取性等多种因素 。
TONTOU 代表了推测执行攻击的一次重大演变。与早期针对核心预测机制本身的 Spectre 变种不同,TONTOU 攻击的是 缓解措施本身——即先前为阻止攻击而构建的软件和硬件防御。通过识别“清除”与“使用”之间的竞态条件,研究人员开辟了一个全新的漏洞类别,这将需要根本不同的防御思路。
此次攻击还表明,CPU 安全无法仅靠软件补丁来解决。尽管 Linux 内核的修复措施关闭了 AMD Zen 处理器上特定的中断注入窗口,但底层的架构假设——即预测器清理和预测器使用可以被视为一个原子操作——已被证明是错误的。