GhostRace - 针对 Intel、AMD、ARM 和 IBM 处理器中推测执行机制的攻击

来自阿姆斯特丹自由大学和 IBM 的一组研究人员开发了一种针对现代处理器中推测执行机制的新攻击,代号为 GhostRace (CVE-2024-2193)。该问题出现在 Intel、AMD、ARM 和 IBM 制造的处理器中。为了演示攻击原理,我们发布了一个漏洞利用原型,该原型允许从 Linux 内核内存中提取数据,性能为每秒 12 KB,具有 Spectre 级攻击典型的可靠性级别。当对虚拟化系统进行攻击时,来自客户系统的攻击者可以确定主机环境或其他客户系统的内存内容。

所提出的攻击方法操纵推测竞争条件的发生,如果处理器错误地预测使用线程同步原语(例如互斥锁和自旋锁)执行条件操作的代码中的分支,则可能导致对已释放内存区域的访问。检测到错误预测后发生的推测内存访问将被处理器丢弃,但其执行痕迹仍保留在处理器缓存中,然后可以使用旁路分析进行检索。

与 Spectre v1 漏洞的利用类似,GhostRace 攻击需要内核中存在某些指令序列(小工具),从而导致根据可能受到攻击者影响的外部条件进行推测性代码执行。出于优化目的,处理器开始以推测模式执行此类小工具,但随后确定分支预测不合理,并将操作回滚到其原始状态。

例如,小工具是由代码段形成的,其中在无限循环中检查状态,并在资源的访问锁被移除后退出循环。因此,当推测性地执行指令时,尽管资源锁保持未释放,但仍可能实现受锁保护的一组指令的转换和执行的错误触发。

GhostRace - 针对 Intel、AMD、ARM 和 IBM 处理器中推测执行机制的攻击

在分析 Linux 5.15.83 内核的代码时,研究人员发现了 1283 个小工具,这些小工具会导致对已释放内存的推测性访问(SCUAF - 释放后推测并发使用)。可能会对虚拟化系统、任何操作系统内核和使用条件语句检查线程同步原语的程序进行攻击,并且代码在允许推测执行分支操作的平台(x86、ARM、RISC-V、 ETC。) 。

为了阻止攻击,建议使用同步原语的序列化,即在 cmpxchq 指令后添加 LFENCE 处理器指令,用于检查锁定状态。所提议的包含在 Linux 内核中的保护方法会导致 LMBench 基准测试的性能损失大约 5%,因为 LFENCE 调用会在提交所有先前操作之前禁用后续指令的抢占执行。

Linux 内核开发人员和 CPU 制造公司已于 2023 年底收到有关该问题的通知。 AMD 发布了一份有关该漏洞存在的报告,其中建议使用标准技术来防范 Spectre v1 攻击。英特尔和ARM尚未对此做出回应。由于性能损失,Linux 内核开发人员不打算在不久的将来使用所提出的序列化同步原语的方法,但已经实施了必要的限制以防止相关的 IPI Storming(进程间中断风暴)利用技术( CVE-2024-26602),用于在适当的时刻中断进程(用中断淹没 CPU 内核,阻止进程运行时触发的中断处理程序完成),以便提供时间用于推测访问已释放内存的窗口。

尽管Xen虚拟机管理程序中尚未识别出泄漏的小工具,但Xen开发人员已准备好进行更改以实现受保护的LOCK_HARDEN锁定机制,类似于之前添加的BRANCH_HARDEN保护方法。由于可能对性能产生负面影响,并且缺乏证据表明 Xen 可能受到攻击,因此默认情况下禁用 LOCK_HARDEN 模式。

来源: opennet.ru

添加评论