研究表明,新的网络攻击可以绕过针对英特尔和ARMCPU中如此强大的Spectre漏洞的硬件防御。研究人员设计了一种新的攻击方法,可以击败这种防御系统,但并不像以前那么容易。网络安全机构VUAmsterdam(VUSec)的研究人员发现了这种新攻击,称为Spectre-BHI(分支历史注入),英特尔和ARM给它起了不同的名字。研究团队声称它是2017年Spectrev2攻击的扩展,被称为Spectre-BTI(分支目标注入),类似于Spectrevv2,可能导致特权内核内存空间的敏感信息泄漏。VUSec研究人员创建的概念验证漏洞利用一个非特权帐户从/etc/shadow文件中泄露根密码哈希值。/etc/shadow文件是Linux上的系统文件,只能由root管理帐户访问。从本质上讲,该漏洞会强制内核将文件加载到内存中,在内存中通常会保护它免受非特权进程的攻击,但随后会利用Spectre-BHI攻击来访问和泄露其内容。这是对现代操作系统基本安全边界的重大安全漏洞,现代操作系统将用户模式应用程序和内存空间与特权内核内存空间分开。什么是幽灵?Spectre是一个安全漏洞,最初于2017年1月披露,它源于现代CPU的一个与性能相关的功能,称为推测执行,其中CPU试图提前预测程序在到达条件分支时将执行哪个程序。路径执行,提前执行路径上的指令。如果基于内部算法的预测被证明是错误的,存储在临时CPU缓存中的结果将被丢弃。诸如Spectre之类的推测执行攻击以及随后发生的许多其他攻击会诱使此机制从充当侧通道的临时缓存中泄漏信息。VUSec研究人员解释说:“分支目标注入(BTI或Spectre-v2)是跨越特权级别的Spectre最危险的变体,当Spectre被发现时很容易被利用。例如,一个没有特权的用户态攻击者可以从用户态提供任何分支目标到间接分支预测器并欺骗内核推测性地跳转到注入的目标代码位置并执行在那里找到的代码。”为了降低风险,谷歌和Linux内核开发人员等软件供应商提出了基于软件的解决方案,例如retpoline。虽然这些措施很有效,但它们对性能产生了重大影响,因此CPU供应商后来开发了基于硬件的防御措施,英特尔的名称为EIBRS,ARM的名称为CSV2。“这些解决方案很复杂,但它们的要点是预测器‘以某种方式’跟踪执行目标的特权级别(用户/内核)。正如人们所期望的那样,如果目标属于较低特权级别,内核执行将不会使用它(即网络攻击者不再提供任意代码位置来推测劫持内核控制流)。”然而,问题是CPU的预测器依赖于全局历史来选择目标条目是推测性执行的,正如VUSec研究人员所证明的那样,这个全局历史可能会被破坏。换句话说,虽然最初的Spectrev2允许攻击者实际注入目标代码位置,然后欺骗内核执行该代码,但新的Spectre-BHI/Spectre-BHB攻击只能迫使内核错误预测并执行什么历史上一直是过去执行过的有趣的小工具或代码片段,但可能会泄漏数据。“英特尔eIBRS和ArmCSV2是否已损坏?也就是说,缓解措施按预期工作,但剩余的攻击面比供应商最初假设的要重要得多,”研究人员说。然而,找到可利用的小工具比以前更难,因为网络攻击者无法跨权限直接注入预测目标。”新Spectre-BHI漏洞的缓解英特尔已将新的Spectre-BHI漏洞跟踪为CVE-2022-0001,用于跨权限变体,CVE-2022-0002用于相同的许可变体。对于这两种变体,ARM将其跟踪为CVE-2022-23960。英特尔声称该公司的大部分CPU都受到影响,但Atom系列除外。对于ARM,易受攻击的CPU型号是Cortex-A15、Cortex-A57、Cortex-A72、Cortex-A73、Cortex-A75、Cortex-A76、Cortex-A76AE、Cortex-A77、Cortex-A78、Cortex-A78AE、Cortex-A78C、Cortex-X1、Cortex-X2、Cortex-A710、NeoverseN1、NeoverseN2和NeoverseV1。两家公司都表示他们将提供软件缓解措施。ARM有五种不同的缓解措施,具体取决于系统。为了利用Linux,VUSec研究人员滥用了eBPF,这是一种自内核4.4以来可用的技术,用于在操作系统内核中运行沙盒程序。研究人员表示,虽然eBPF不是潜在问题的一部分,并且可以发现其他代码小工具会泄露数据,但非特权eBPF的存在确实极大地促进了推测执行(和其他)攻击。这就是为什么这两家公司建议禁用它,一些Linux发行版已经开始默认禁用它。
