HackerNews

HackerNews
新型 Spectre-v2 BTR 攻击绕过现有防御泄露 Linux 内存

新型 Spectre-v2 BTR 攻击绕过现有防御泄露 Linux 内存

给文章评分:

来自 VUSec 和 Scuola Superiore Sant'Anna 的一组学者披露了一种新的 Spectre CPU 漏洞变体,它影响 Web 浏览器、语言运行时和操作系统内核中的即时编译(JIT)引擎,波及多家 CPU 厂商。

这一新的 Spectre-v2 变体被命名为 Branch Target Reuse(BTR,分支目标重用)。

"关键洞察在于,尽管现代 CPU 在代码自修改后会恢复架构层面的代码一致性,但它们不一定会使过期的间接分支预测条目(即分支目标)失效," 研究人员 Sander Wiebing、Yuhui Zhu、Alessandro Biondi 和 Cristiano Giuffrida 在一篇配套论文中表示。

"在 JIT 引擎中,这些过期目标可以比原始代码存活得更久,并在代码缓存被重新填充时被再次使用,从而产生一种瞬态 use-after-free 原语。这使攻击者能够将瞬态控制流劫持到过期偏移处新生成的代码,绕过软件加固或抵达未对齐的 gadget。"

BTR 针对 SpiderMonkey(Mozilla Firefox 的 JIT 引擎)、GraalVM 以及 Linux 内核的 cBPF JIT 进行了评估,结果发现三者均受影响,但 "可利用性特征和泄露速率存在显著差异"。

作为概念验证,研究人员针对 Linux 内核设计了两套端到端利用程序,可在数分钟内从一台已完全打补丁、启用默认保护的 Intel 系统上泄露并恢复 root 密码哈希。

Spectre 指一类最早于 2017 年被发现的 CPU 安全漏洞,它利用推测执行——现代处理器用于预先预测和执行指令的一种性能优化技术。

攻击者可利用这一漏洞诱使 CPU 执行访问敏感数据的推测操作,然后通过缓存时序侧信道推断出这些数据。

Spectre v2 是 Spectre 攻击中的一种特定类型,它滥用现代处理器中的间接分支预测来达到相同目的。具体而言,它会污染 CPU 的分支预测机制,使受害程序执行一次间接分支,进而导致 CPU 错误预测该分支,并推测执行攻击者控制的代码或 gadget。

尽管错误预测的结果会被丢弃,但攻击者可以利用缓存状态变化并测量缓存变化,推断出受害者的推测执行访问了什么。

"BTR 针对 JIT 引擎,源于自修改代码(SMC)与间接分支预测之间的相互作用," 研究人员表示,并补充道,"JIT 引擎首次确实暴露了由 SMC 引发的可利用瞬态执行机会。"

该攻击假设攻击者能够在 JIT 引擎中运行非特权代码,并试图从宿主环境中泄露敏感数据。整个操作序列如下:

  • 攻击者诱使 JIT 引擎分配一个训练块,并强制受害分支跳转到它,从而插入一个引用当前入口点的 BTB 条目。
  • 攻击者强制释放该训练块,并分配一个部分重用相同地址的目标块。
  • 攻击者再次触发间接分支,CPU 使用现已过期的分支目标缓冲区(BTB)条目,推测性地跳转到旧的训练块入口点。
  • 最终结果是控制流劫持和机密数据泄露。

"通过将控制流重定向到架构上无效的入口点,攻击者可以绕过 Spectre 加固缓解措施或执行未对齐的指令,最终泄露机密数据," 研究人员解释道。


然而,BTR 的一个关键前提是:在 JIT 引擎释放训练块之后,过期的 BTB 条目必须未被失效或替换,且分支预测器必须选择该过期 BTB 条目进行预测。


在负责任披露之后,针对 BTR 的缓解措施已发布并合并到 Linux 内核(CVE-2026-64507 和 CVE-2026-64508)。


"GraalVM 则通过随机化 JIT 代码缓存位置来阻碍区域重用," 研究人员表示。"Mozilla 考虑过基于 IBPB(间接分支预测器屏障)的缓解措施,但目前优先推进 site isolation 的完成和部署。"


此次披露的近两个月前,MIT CSAIL 的研究人员 Daniël Trujillo 和 Mengjia Yan 披露了一种名为 Interrupt Injection 的推测执行攻击技术,可绕过 Spectre v2 防御,从基于 Intel 和 AMD 的 Linux 系统上泄露任意内核内存。




消息来源:thehackernews.com;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文
分享到:
hackernews

hackernews

该作者暂无简介