英特尔和AMD容易受到新发现的推测性执行攻击,这种攻击可以秘密泄露密码数据和其他敏感材料,导致两家芯片制造商再次争先恐后地遏制被证明是顽固的持久性漏洞。

苏黎世联邦理工学院的研究人员将他们的攻击命名为 Retbleed,因为它利用了一种名为 retpoline 的软件防御,芯片制造商于 2018 年推出该软件以减轻投机执行攻击的有害影响。推测执行攻击,也称为Spectre,利用了这样一个事实,即当现代 CPU 遇到直接或间接指令分支时,它们会预测它们将要接收的下一条指令的地址,并在预测得到确认之前自动执行它。Spectre 的工作原理是诱使 CPU 执行访问内存中敏感数据的指令,这些数据通常对低权限应用程序是禁止的。Retbleed 然后在操作取消后提取数据。

2022-07-30 231203.png

它是蹦床还是弹弓?

Retpoline 的工作原理是使用一系列返回操作将间接分支与推测性执行攻击隔离开来,实际上是建立了相当于蹦床的软件,使它们能够安全地弹跳。换句话说,retpoline 的工作原理是用返回代替间接跳转和调用,许多研究人员认为这并不容易受到影响。该防御旨在对抗 2018 年 1 月开始的原始推测执行攻击的变体 2。缩写为 BTI,该变体强制间接分支执行所谓的小工具代码,从而创建数据通过侧通道泄漏。

一些研究人员多年来一直警告说,retpoline 不足以减轻投机性执行攻击,因为使用的回报 retpoline 容易受到 BTI 的影响。Linux的创造者Linus Torvalds拒绝了这样的警告,认为这样的利用是不切实际的。

苏黎世联邦理工学院的研究人员最终表明,retpoline 不足以防止投机性执行攻击。他们的 Retbleed 概念验证适用于采用 Kaby Lake 和 Coffee Lake 微架构以及 AMD Zen 1、Zen 1+ 和 Zen 2 微架构的 Intel CPU。

研究人员 Johannes Wikner 和 Kaveh Razavi 写道:“Retpoline 作为一种 Spectre-BTI 缓解措施,未能将返回指令视为攻击向量。” “虽然可以通过在执行返回指令之前向 RSB 返回堆栈缓冲区添加一个有效条目来保护返回指令,但以这种方式将每个返回视为潜在可利用将产生巨大的开销。以前的工作试图在跟踪调用堆栈深度的 perCPU 计数器达到某个阈值时,用无害的返回目标有条件地重新填充 RSB,但它从未被批准用于上游。鉴于 Retbleed,英特尔正在重新评估这种缓解措施,但 AMD CPU 需要不同的策略。”

在一封电子邮件中,Razavi 是这样解释的:

Spectre 变体 2 利用间接分支在内核中获得任意推测执行。使用 retpoline 将间接分支转换为返回以减轻 Spectre 变体 2。

Retbleed 表明返回指令不幸地在类似于间接分支的某些条件下泄漏。不幸的是,这些情况在 Intel(基于 Skylake 和 Skylake)和 AMD(Zen、Zen+ 和 Zen2)平台上都很常见。这意味着不幸的是,retpoline 从一开始就是一个不充分的缓解措施。

作为对这项研究的回应,英特尔和 AMD 都建议客户采用新的缓解措施,研究人员称这将增加多达 28% 的运营开销。

Retbleed 可以以每秒约 219 字节的速度从 Intel CPU 泄漏内核内存,准确率达到 98%。该漏洞利用可以以每秒 3.9 kB 的带宽从 AMD CPU 中提取内核内存。研究人员表示,在运行 Intel CPU 时,它能够在大约 28 分钟内从物理内存中定位并泄露 Linux 计算机的 root 密码哈希,而对于 AMD CPU,它大约需要 6 分钟。

Retbleed 的工作原理是使用基本上毒化 CPU 赖以进行猜测的分支预测单元的代码。一旦中毒完成,这个 BPU 就会做出攻击者可以控制的错误预测。

研究人员在一篇博文中写道:“我们发现我们可以注入驻留在内核地址空间内的分支目标,即使作为非特权用户也是如此。” “即使我们无法访问内核地址空间内的分支目标(分支到这样的目标会导致页面错误),分支预测单元也会在观察到分支时自我更新并假设它是合法执行的,即使它是到一个内核地址。”

英特尔和 AMD 回应

英特尔和 AMD 均已发布公告作为回应。英特尔已确认该漏洞存在于 Skylake 一代处理器上,这些处理器没有提供称为增强型间接分支限制推测 (eIBRS) 的保护。

“英特尔已与 Linux 社区和 VMM 供应商合作,为客户提供软件缓解指南,该指南应在今天的公开披露日期或前后提供,”英特尔在博客文章中写道。“请注意,Windows 系统不会受到影响,因为这些系统默认使用间接分支限制推测 (IBRS),这也是 Linux 用户可以使用的缓解措施。英特尔不知道这个问题在受控实验室环境之外被利用。”

与此同时,AMD 也发布了指南。“作为识别和应对新的潜在安全漏洞的持续工作的一部分,AMD 建议软件供应商考虑采取额外措施来帮助防范类似 Spectre 的攻击,”一位发言人在一封电子邮件中写道。该公司还发布了一份白皮书。

研究人员的研究论文和博客文章都解释了利用 Retbleed 所需的微架构条件:

英特尔。在 Intel 上,当保存返回目标预测的返回堆栈缓冲区下溢时,返回开始表现得像间接跳转。这发生在执行深度调用堆栈时。在我们的评估中,我们发现了超过一千个可以由系统调用触发的此类条件。英特尔 CPU 的间接分支目标预测器已在 以前的工作中进行了研究。

超微。在 AMD 上,无论其返回地址堆栈的状态如何,返回都将表现得像一个间接分支。事实上,通过使用间接跳转来毒化返回指令,AMD 分支预测器将假定它将遇到间接跳转而不是返回,并因此预测间接分支目标。这意味着我们可以通过系统调用获得的任何返回都可以被利用——而且有很多。

在一封电子邮件中,Razavi 补充道:“Retbleed 不仅仅是英特尔的 retpoline 绕过,特别是在 AMD 机器上。AMD 实际上将发布一份白皮书,介绍基于 Retbleed 的 Branch Type Confusion。本质上,Retbleed 使 AMD CPU 混淆了返回指令和间接分支。这使得 AMD CPU 上的回报利用变得非常简单。”

这些缓解措施的代价是研究人员测量的计算开销增加了 12% 到 28%。依赖受影响 CPU 的组织应仔细阅读研究人员、英特尔和 AMD 的出版物,并确保遵循缓解指南。

Tags: none

我有个想法