9 月 29 号,VUSec 和比萨圣安娜高等研究院(Scuola Superiore Sant'Anna)的几个人放了一篇论文,讲 Spectre-v2 的一个新变种,代号 BTR,Branch Target Reuse。
Spectre 这名字从 2017 年听到现在,年年有变种,人都快麻木了。但这次有点不一样——它打的是 JIT 引擎,而且说白了,就是冲着你"补丁打全也没用"来的。
先说影响面。按 FreeBuf 转 thehackernews 的说法,这变种影响所有主流 CPU 厂商的产品,落点是浏览器、语言运行时和操作系统内核里的各类 JIT 引擎。研究者挑了三个环境验证:Firefox 的 SpiderMonkey、GraalVM,还有 Linux 内核的 cBPF JIT,三个都中招,只是利用难度和泄露速度差得挺多。
最扎心的是那个 Linux 的 PoC。团队做了两个端到端的利用,在一台默认防护全开、补丁打满的 Intel 机器上,几分钟就能把 root 的密码哈希泄露出来、还原掉。
原理说人话:CPU 为了跑得快,会缓存间接分支的预测目标(BTB 条目)。JIT 引擎的代码是运行时生成、又会自修改的,代码换了,那些过期的分支目标却不一定会被清掉。攻击者在 JIT 里跑一段非特权代码,把内存块分配、释放、再复用一遍,就能让 CPU 拿着过期条目、跳到早就失效的地址去执行,顺手把敏感数据带出来。论文里管这叫"自修改代码和间接分支预测的交互",还说这是第一次发现 JIT 引擎里有可被利用的这一类攻击面。
补丁已经在路上。Linux 内核社区把缓解补丁合进了主线,对应两个 CVE:CVE-2026-64507、CVE-2026-64508。GraalVM 的做法是把 JIT 代码缓存的位置随机化,不让内存区域被复用;Firefox 那边先上站点隔离。
站运维的角度,这事有两面。
一面不用慌。PoC 的前提是攻击者能在 JIT 引擎里跑非特权代码,单机、独占的整机业务,威胁面没那么直接。跑在云上的,内核补丁一般由云厂商推,比自己跟省事。
另一面,自建、多租户的场景就得当回事。共享主机、容器混跑的环境,"能在 JIT 跑非特权代码"这个前提反而很容易满足,同宿主机上别人的服务就是威胁源。这种时候,盯着内核 CVE、按发行版把补丁更上,是最基本的动作——有些补丁要重启,维护窗口得提前排。
这类漏洞看多了有个体会:安全上没有"打完补丁就一劳永逸"的时候。前阵子给 AI 助手做危险命令确认,我漏了 authorized_keys 那条,当时当个例看,事后想想,防护和绕过本来就是一直拉锯的事。
平时用它批量管服务器、推补丁、查内核版本,比一台台登进去快——七亿批量远程管理工具的教程里就有这类批量操作的做法。补丁该打打,别嫌麻烦。
评论