ThreatsDay: Adobe RCE, DNS 钱包盗窃, NVIDIA 容器逃逸, 自愈后门 + 另外 23 个 · 2h Silent Lynx 利用 WinRAR 漏洞在独立国家联合体政府攻击中部署反向 Shell · 5h NGINX 修复 5 个漏洞,包括可能的 RCE 和可能跳过客户端证书检查的 TLS 漏洞 · 8h Next.js 发布了针对缓存和 SVG 处理中的两个关键 RCE 漏洞的紧急补丁 · 8h Drupal 修补了通过贡献模块无需登录路径的关键核心 RCE 漏洞 · 9h Sparx Systems Enterprise Architect软件中的漏洞 · 9h Curl 修复了由 Anthropic 发现的“高” RCE 漏洞 · 9h Slican电话交换机中的漏洞 · 10h Palo Alto Networks警告防火墙安全漏洞被滥用 · 13h 思科报告称Secure Email Gateway中的关键漏洞被积极利用 · 14h ThreatsDay: Adobe RCE, DNS 钱包盗窃, NVIDIA 容器逃逸, 自愈后门 + 另外 23 个 · 2h Silent Lynx 利用 WinRAR 漏洞在独立国家联合体政府攻击中部署反向 Shell · 5h NGINX 修复 5 个漏洞,包括可能的 RCE 和可能跳过客户端证书检查的 TLS 漏洞 · 8h Next.js 发布了针对缓存和 SVG 处理中的两个关键 RCE 漏洞的紧急补丁 · 8h Drupal 修补了通过贡献模块无需登录路径的关键核心 RCE 漏洞 · 9h Sparx Systems Enterprise Architect软件中的漏洞 · 9h Curl 修复了由 Anthropic 发现的“高” RCE 漏洞 · 9h Slican电话交换机中的漏洞 · 10h Palo Alto Networks警告防火墙安全漏洞被滥用 · 13h 思科报告称Secure Email Gateway中的关键漏洞被积极利用 · 14h
🛡️
ACyber Sentinel 安全评估团队
← 返回
⚡ 情报报告

新的 Spectre-v2 BTR 攻击泄露 Linux 内存,尽管已有防御措施

来自 VUSec 和 Scuola Superiore Sant'Anna 的一组学者披露了一种新的 Spectre CPU 漏洞变体的细节,该变体影响多个 CPU 供应商的网页浏览器、语言运行时和操作系统内核中的即时编译 (JIT) 引擎。

新的 Spectre-v2 变体被命名为分支目标重用 (BTR)。

“关键的见解是,尽管现代 CPU 在自我修改后恢复了架构代码的一致性,但它们并不一定会使过时的间接分支预测条目(即分支目标)失效,”研究人员 Sander Wiebing、Yuhui Zhu、Alessandro Biondi 和 Cristiano Giuffrida 在一篇附带论文中表示。

“在 JIT 引擎中,这些过时的目标可以在原始代码之后存活,并在代码缓存重新填充时被重用,从而产生一个瞬态的执行后释放原语。这使得攻击者能够劫持瞬态控制流,以访问过时偏移处的新生成代码,绕过软件加固或达到未对齐的 gadget。”

BTR 已针对 SpiderMonkey(Mozilla Firefox 的 JIT 引擎)、GraalVM 和 Linux 内核的 cBPF JIT 进行了评估,发现它们都受到影响,尽管“可利用性特征和泄露率明显不同”。

作为概念验证,针对 Linux 内核设计了两个端到端的利用程序,可以在几分钟内从完全修补的 Intel 系统中泄露和恢复 root 密码哈希,且默认保护已启用。

Spectre 是一类 CPU 安全漏洞,首次发现于 2017 年,利用了投机执行,这是一种现代处理器用来预测和提前执行指令的性能优化技术。

攻击者可以利用这个漏洞欺骗 CPU 执行投机操作,从而访问敏感数据,然后通过缓存时序侧信道推断出该数据。

Spectre v2 是 Spectre 攻击的一种特定类型,利用现代处理器中的间接分支预测来实现相同的目标。具体而言,它毒化 CPU 的分支预测机制,导致受害程序执行间接分支,从而导致 CPU 错误预测分支并投机性地执行攻击者控制的代码或 gadget。

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

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

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

攻击者诱使 JIT 引擎分配一个训练块,并强制受害分支跳转到它,从而插入一个引用当前入口点的 BTB 条目。

攻击者强制释放训练块并分配一个部分重用相同地址的目标块。

攻击者再次触发间接分支,CPU 使用现在过时的分支目标缓冲区 (BTB) 条目,并投机性地跳转到旧训练块的入口点。

最终结果是控制流劫持和秘密数据泄露。

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

然而,BTR 的一个关键方面是,过时的 BTB 条目在 JIT 引擎释放训练块后必须不被失效或替换,并且分支预测器必须选择过时的 BTB 条目进行预测。

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

“GraalVM 通过随机化 JIT 代码缓存位置来阻止区域重用,”研究人员表示。“Mozilla 考虑了基于 IBPB [间接分支预测器屏障] 的缓解措施,但目前优先考虑完成和部署站点隔离。”

该披露是在麻省理工学院 CSAIL 的研究人员 Daniël Trujillo 和 Mengjia Yan 披露了一种名为中断注入的投机执行攻击技术后近两个月,该技术可以绕过 Spectre v2 防御并从基于 Intel 和 AMD 的 Linux 系统中泄露任意内核内存。

觉得这篇文章有趣吗?请在 Google 新闻、Twitter 和 LinkedIn 上关注我们,以阅读更多我们发布的独家内容。

相关漏洞

CVE-2026-64508 NA Received
CVE-2026-64508 - bpf: Support for hardening against JIT spraying
In the Linux kernel, the following vulnerability has been resolved: bpf: Support for hardening against JIT spraying The BPF JIT allocator packs many small programs into larger executable allocations and reuses space within those allocations as programs are loaded and freed. When fresh code is written into space that a previous program occupied, an indirect jump into the new program can reuse a branch prediction left behind by the old one. Flush the indirect branch predictors before reusing JIT memory so that indirect jumps into a newly written program don't reuse predictions from an old program that occupied the same space. Introduce bpf_arch_pred_flush_enabled static key and bpf_arch_pred_flush static call for flushing the branch predictors on JIT memory reuse. Architectures that need a flush, can update it to a predictor flush function. By default, its a NOP and does not emit any CALL. Allocations larger than a pack are not covered by this flush. That is safe because cBPF programs (the unprivileged attack surface) are bounded well below a pack size. Issue a warning if this assumption is ever violated while the flush is active.
CVE-2026-64507 NA Received
CVE-2026-64507 - x86/bugs: Enable IBPB flush on BPF JIT allocation
In the Linux kernel, the following vulnerability has been resolved: x86/bugs: Enable IBPB flush on BPF JIT allocation Enable hardening against JIT spraying when Spectre-v2 mitigations are in use. Specifically, issue an IBPB flush on BPF JIT memory reuse. Skip enabling the IBPB flush if the BPF dispatcher is already using a retpoline sequence. This hardening applies only when BPF-JIT is in use. Guard the enabling under CONFIG_BPF_JIT so that bugs.c still builds with CONFIG_BPF_JIT=n.