BHI 是 Intel 和 ARM 处理器中的一个新的 Spectre 类漏洞

阿姆斯特丹自由大学的一组研究人员在英特尔和 ARM 处理器的微架构结构中发现了一个新漏洞,该漏洞是 Spectre-v2 漏洞的扩展版本,可允许绕过处理器中添加的 eIBRS 和 CSV2 保护机制。 该漏洞有多个名称:BHI(分支历史记录注入,CVE-2022-0001)、BHB(分支历史记录缓冲区,CVE-2022-0002)和 Spectre-BHB(CVE-2022-23960),它们描述了同样的问题(BHI - 影响不同权限级别的攻击,例如用户进程和内核,BHB - 影响相同权限级别的攻击,例如 eBPF JIT 和内核)。

研究人员展示了一种有效的漏洞利用方法,可以从用户空间的内核内存中提取任意数据。 例如,它展示了如何使用准备好的漏洞利用程序从内核缓冲区中提取一个字符串,其中包含从 /etc/shadow 文件加载的 root 用户密码的哈希值。 该漏洞利用演示了使用用户加载的 eBPF 程序利用一个特权级别内的漏洞(内核到内核攻击)的可能性。 还可以使用内核代码中现有的 Spectre 小工具(导致指令推测执行的命令序列)来代替 eBPF。

该漏洞出现在当前大多数 Intel 处理器中(Atom 系列处理器除外)。 在 ARM 处理器中,Cortex-A15、Cortex-A57、Cortex-A7*、Cortex-X1、Cortex-X2、Cortex-A710、Neoverse N1、Neoverse N2、Neoverse V1 以及可能的一些 Cortex-R 芯片都受到该问题的影响。 据研究,该漏洞并未出现在AMD处理器中。 为了消除这个问题,已经提出了几种软件方法来阻止该漏洞,这些方法可以在未来的CPU型号中出现硬件保护之前使用。

为了阻止通过 eBPF 子系统的攻击,建议默认禁用非特权用户下载 eBPF 程序的能力,方法是向文件“/proc/sys/kernel/unprivileged_bpf_disabled”写入 1 或运行命令“sysctl -w kernel. unprivileged_bpf_disabled=1”。 要阻止小工具攻击,建议在可能导致推测执行的代码区域中使用 LFENCE 指令。 值得注意的是,大多数 Linux 发行版的默认配置已经包含了足以阻止研究人员演示的 eBPF 攻击的必要保护措施。 英特尔关于禁用对 eBPF 的非特权访问的建议也是自 Linux 内核 5.16 以来的默认设置,并将向后移植到早期分支。

从概念上讲,BHI 是 Spectre-v2 攻击的扩展版本,其中,为了绕过附加保护(Intel eIBRS 和 Arm CSV2)并组织数据泄漏,在分支历史缓冲区中使用值替换,在 CPU 中使用以增加预测通过考虑过去转换的历史来准确分支。 在攻击期间,通过对转换历史记录的操作,为转换的错误预测和必要指令的推测执行创建条件,其结果最终出现在缓存中。

除了使用分支历史缓冲区而不是分支目标缓冲区之外,新攻击与 Spectre-v2 相同。 攻击者的任务是创造条件,使得在执行推测操作时从定义的数据区域中获取地址。 执行推测间接跳转后,从内存读取的跳转地址保留在缓存中,之后可以使用确定缓存内容的方法之一基于对缓存和未缓存的访问时间变化的分析来检索它数据。

来源: opennet.ru

添加评论