eBPF 中的漏洞允许绕过针对 Spectre 攻击的保护

昨天我们在博客上发布了关于 Aya,用于创建 eBPF 驱动程序的库 在 Rust 中,这样做的目的是创建更安全的驱动程序或 Prossimo 项目保证内存 使用 Rust 的 Linux 内核(这两个伟大的项目将在接下来的几个月中进行很多讨论)。

在很短的时间内,已经报告了各种漏洞 在其中 利用 eBPF 中的错误 这是一个内核开发人员没有停止工作的问题,也许 Rust 是解决方案。

触及这个话题的原因是 最近有消息称,他们已经确定 Linux 内核中的“其他”漏洞(CVE-2021-33624)为 绕过针对 Spectre 级漏洞的保护, 因为这允许使用 eBPF 子系统能够确定内存的内容,作为为某些操作的执行推测创建条件的结果。

提到漏洞 它是由验证器中的失败引起的,验证器用于检测 BPF 程序中的错误和无效活动. 验证器列出可能的代码执行路径,但忽略从指令集架构语义的角度来看无效的任何分支选项。

在运行 BPF 程序时,验证器未考虑的分支选项可能会被处理器错误地预测并以推测模式执行。

在受影响的系统上,无特权的 BPF 程序可以利用此漏洞通过侧通道过滤任意内核内存(以及所有物理内存)的内容。

例如: 在分析“加载”操作时,验证器假定指令使用寄存器 具有其值始终在指定范围内的地址, 但攻击者可以创造条件 在其中 处理器将投机性地尝试执行交易 地址不符合验证条件。

幽灵攻击 需要在特权代码中存在特定脚本,导致指令的推测执行。 通过操纵传入执行的 BPF 程序,可以在 eBPF 中生成此类指令,并通过侧通道过滤内核内存和物理内存的任意区域的内容。

另外, 您可以标记有关性能影响的注释 资产 以防止 Spectre 类漏洞。

本笔记总结了结果 调试器优化 rr(记录和重放),曾经由 Mozilla 创建,用于调试 Firefox 中难以重复的错误。 缓存用于验证目录存在的系统调用将测试项目的“rr 源”操作从 3 分 19 秒减少到 36 秒。

优化作者决定查一下 会有多大变化 禁用 Spectre 保护后的性能. 使用参数“mitigations = off”启动系统后,未优化的“rr sources”的执行时间为2分5秒(快1.6倍),优化为33秒(快9%)。

奇怪的是 禁用 Spectre 保护不仅会减少运行时间 内核级代码的 1.4 倍(从 2 分 9 秒到 1 分 32 秒), 它还将用户空间中的执行时间减半 (从 1 分钟 9 秒到 33 秒),大概是由于启用 Spectre 保护时 CPU 缓存和 TLB 被重置的效率降低。

这个问题从 4.15 内核版本开始就出现了 已以补丁的形式修复,目前仍未覆盖所有发行版,因此建议用户现在在收到通知后立即进行相关更新。

Si 您想了解更多,您可以查看详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。