Branch Privilege Injection:利用分支预测器竞争条件
Branch Privilege Injection:利用 Branch Predictor 竞争条件
Branch Privilege Injection (CVE-2024-45332) 使分支目标注入攻击 (Spectre-BTI) 在 Intel 平台上卷土重来。Intel 针对此类攻击的硬件缓解措施已经坚守了近 6 年。在我们的工作中,我们展示了由于 Intel CPU 中的竞争条件,这些缓解措施是如何被打破的。
我们的 Branch Privilege Injection 攻击之所以成为可能,归功于以下两个主要发现:
- Intel 处理器上的分支预测器与指令流异步更新。我们是第一个揭示这种行为的人,并且我们可以证明在某些条件下,更新会延迟数十甚至数百个周期。这些异步更新本身是一种特性,而不是漏洞。
- 我们发现,在安全关键操作期间,分支预测器和指令流之间存在不足的同步。当受影响的处理器切换权限(例如,用户到内核或访客到 Hypervisor)或执行 IBPB 时,分支预测器更新可能仍在进行中。由于这些更新仍在进行中,因此一旦在权限切换后完成,它们将与错误的权限模式相关联。我们将这类新的漏洞称为 Branch Predictor Race Conditions(分支预测器竞争条件)。
我们利用上述发现构建了一个端到端的 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 上找到攻击和我们所有实验的源代码。
常见问题解答
- 我的机器是否受到影响? 自第 9 代(Coffee Lake Refresh)以来的所有 Intel 处理器都受到 Branch Privilege Injection 的影响。 但是,我们观察到早在第 7 代(Kaby Lake)的处理器上,预测就绕过了间接分支预测屏障 (IBPB)。
- Branch Privilege Injection 是否会影响非 Intel CPU? 不会。 我们的分析没有在评估的 AMD 和 ARM 系统上发现任何问题。
- 是否只有 Linux 系统受到影响? 虽然我们专门为 Linux 构建了我们的概念验证攻击,但底层问题存在于硬件中。 因此,在受影响硬件上运行的任何操作系统也会受到 Branch Privilege Injection 的影响。
- 我应该怎么做? 安装最新的操作系统和 BIOS 更新。