Branch Privilege Injection:利用 Branch Predictor 竞争条件

Branch Privilege Injection (CVE-2024-45332) 使分支目标注入攻击 (Spectre-BTI) 在 Intel 平台上卷土重来。Intel 针对此类攻击的硬件缓解措施已经坚守了近 6 年。在我们的工作中,我们展示了由于 Intel CPU 中的竞争条件,这些缓解措施是如何被打破的。

我们的 Branch Privilege Injection 攻击之所以成为可能,归功于以下两个主要发现:

我们利用上述发现构建了一个端到端的 Branch Privilege Injection 攻击,该攻击在启用了所有默认缓解措施的最新 Ubuntu 24.04 上以 5.6KiB/s 的速度泄漏任意内存。以下视频演示了 Branch Privilege Injection 如何在 Intel Raptor Lake(第 13 代)处理器上泄漏任意内存。

受影响的缓解措施

eIBRS: Intel 自第 9 代(Coffee Lake Refresh)以来的所有处理器都引入了增强型间接分支限制推测 (enhanced Indirect Branch Restricted Speculation, eIBRS) 作为 Spectre-BTI 缓解措施。eIBRS 旨在通过将每个预测与其原始域相关联,并在以后仅使用来自当前域的预测,来分离不同安全域之间的间接分支预测。

IBPB: eIBRS 仅防止不同硬件安全域之间的跨域攻击。这在某些沙盒场景或分离在同一硬件安全域中运行的不信任虚拟机时是不够的。对于此类用例,间接分支预测屏障 (Indirect Branch Prediction Barrier, IBPB) 提供了一种使所有间接分支预测失效的机制。

建议将这两种缓解措施作为各自用例的默认缓解策略。

Branch Predictor 竞争条件

我们的工作演示了分支预测器中的竞争条件,这些条件会使 eIBRS 和 IBPB 的安全保证失效。虽然 eIBRS 似乎正确地将预测限制为与其关联的安全域,但可以操纵这种关联。在发生权限切换时正在进行中的分支预测器更新与新的安全域相关联,而不是与先前的安全域相关联。此外,我们发现当间接分支预测器失效 (IBPB) 时,正在进行中的更新不会被刷新。因此,尽管使其失效,这些更新仍存储在分支预测器中。

针对 Branch Predictor 竞争条件的缓解措施

Intel 已经为受影响的处理器开发了微代码更新,并为我们提供了一个在 Alder Lake 上进行评估。我们能够验证微代码更新停止了我们在论文中用于检测漏洞的原语。我们的性能评估表明,Alder Lake 上的微代码缓解措施的开销高达 2.7%。我们还评估了几种潜在的替代软件缓解策略,开销在 1.6%(Coffee Lake Refresh)和 8.3%(Rocket lake)之间。请参阅我们的论文 了解更多详细信息。

资源

一篇关于 Branch Privilege Injection 的论文 将在 USENIX Security 2025 上发表。 还将在 Black Hat USA 2025 上进行一次演讲,重点是漏洞发现和利用。 您可以在 GitHub 上找到攻击和我们所有实验的源代码。

常见问题解答