Bitdefender 的研究人员 新漏洞()在现代CPU的推测指令执行机制中,它被命名为SWAPGS,它对应于导致问题的处理器指令的名称。 漏洞 允许非特权攻击者确定内核内存区域或正在运行的虚拟机的内容。 问题 在 Intel 处理器 (x86_64) 中并且部分 AMD处理器,其主要攻击途径并未显现。先前针对Spectre和Meltdown漏洞实施的缓解措施,在使用Intel处理器时无法抵御SWAPGS攻击,但对于AMD处理器则有效。 Linux、Chrome操作系统、 Android и Windows 已经提出了修正方案。
该漏洞属于 Spectre v1 类,基于从推测执行指令后剩余的处理器缓存中恢复数据的想法。 为了提高性能,现代CPU的分支预测单元对一些最有可能被执行的指令使用抢占式执行,但无需等待决定其执行的所有因素的计算(例如,当分支条件或访问参数尚未确定时)尚未计算)。 如果预测未得到确认,处理器将丢弃推测执行的结果,但在此过程中处理的数据仍保留在处理器缓存中,并且可以使用通过侧通道确定缓存内容、分析访问变化的方法来恢复缓存和未缓存数据的时间。
这种新攻击利用了SWAPGS指令推测执行期间发生的漏洞。SWAPGS指令在操作系统中用于在控制权从用户空间转移到操作系统内核时替换GS寄存器的值(用户空间中使用的GS值会被替换为内核操作期间使用的值)。 Linux GS 存储用于访问内核数据的 per_cpu 指针,用户空间存储指向 TLS(线程本地存储)的指针。
为了避免在从内核空间再次访问内核或执行不需要更改 GS 寄存器的代码时调用 SWAPGS 指令两次,在该指令之前执行检查和条件分支。 推测执行引擎主动继续使用 SWAPGS 指令执行代码,而不等待检查结果,如果所选分支未得到确认,则丢弃结果。 因此,可能会出现这样的情况:推测性地选择了不涉及 SWAPGS 执行的分支,但在推测性执行期间,GS 寄存器的值将被 SWAPGS 指令更改并用于最终进入 CPU 高速缓存的相关存储器操作。
研究人员提出了两种攻击场景,并为其准备了漏洞利用原型。 第一种情况是基于SWAPGS指令未被推测执行的情况,尽管它实际上在执行中使用,而第二种情况则相反,当SWAPGS指令被推测执行时,尽管它实际上不应该被执行。 对于每种情况,有两种利用选项:攻击者可以确定内核区域中特定地址处的值,攻击者可以在内核中的随机地址处搜索特定值。 实施攻击需要很长时间,并且漏洞利用可能需要几个小时才能完成泄漏。

在核心 Linux 问题 通过更改调用 SWAPGS 指令的逻辑(阻止推测执行),类似于修复其他 Spectre v1 类漏洞。 增加的保护预计将对典型工作负载的性能产生最小的影响。 用户空间和内核空间之间的切换阶段会出现延迟,这可能会导致性能不佳,例如,当应用程序进行大量系统调用或频繁生成 NMI 和中断时。
此修复方法需要在主机系统和客户机环境中都安装内核更新,然后重启系统。要禁用保护,请执行以下操作: Linux 可以使用“nospectre_v1”选项,该选项还会禁用阻止SWAPGS漏洞的措施。修复程序已发布。 对于核心 Linux已包含在发布版本中 , 4.14.137、4.9.188 和 4.4.188。发行版更新 Linux 尚未发布(, , , , , ) 在 Windows 问题已在不引起不必要关注的情况下得到解决。 。 谷歌公司 修复了 ChromeOS 附带的内核 4.19 和 .
据Bitdefender的研究人员称,英特尔早在去年8月就已获悉该问题。双方决定采用软件修复方案,并为此召集了来自微软、谷歌和内核的开发人员协调开发补丁。 Linux由于不支持漏洞利用中使用的 WRGSBASE 指令,Ivy Bridge 之前的旧款 Intel 处理器更难受到攻击。ARM、POWER、SPARC、MIPS 和 RISC-V 系统不受此问题影响,因为它们不支持 SWAPGS 指令。
该问题主要影响英特尔处理器的所有者 -
在 AMD 系统上,只能重现第二种攻击场景,该场景仅限于对 GS 寄存器基值的推测处理,可用于在随机存储区域中查找特定值。 阻止此攻击选项 针对 Spectre v1 的现有防护方法。
来源: opennet.ru
