來自 VUSec 和 Scuola Superiore Sant'Anna 的一群學者揭露了一種新型 Spectre CPU 漏洞變體,該漏洞影響了網頁瀏覽器、語言運行環境和作業系統核心中普遍存在的 Just-In-Time (JIT) 引擎,並橫跨多個 CPU 廠商。

這個新的 Spectre-v2 變體被命名為「分支目標重用」(Branch Target Reuse, BTR)。

研究人員 Sander Wiebing、Yuhui Zhu、Alessandro Biondi 和 Cristiano Giuffrida 在一篇論文中表示:「關鍵的洞見在於,儘管現代 CPU 在自我修改後會恢復架構程式碼的一致性,但它們不一定會使過時的間接分支預測條目(即分支目標)失效。」

「在 JIT 引擎中,這些過時的目標可能會比原始程式碼存活更久,並在程式碼快取被重新填充時被重複使用,從而產生一個暫時性的釋放後執行(execute-after-free)原語。這使得攻擊者能夠劫持暫時性的控制流程,導向到過時偏移量處的新程式碼,從而繞過軟體加固措施或觸及錯位的 gadgets。」

BTR 已針對 SpiderMonkey(Mozilla Firefox 的 JIT 引擎)、GraalVM 和 Linux 核心的 cBPF JIT 進行了評估,結果發現它們都受到影響,儘管「可利用性特徵和洩漏率有顯著差異」。

作為概念驗證,研究人員針對 Linux 核心設計了兩個端對端的攻擊手法,可以在已啟用預設防護的完整修補 Intel 系統上,於數分鐘內洩漏並恢復 root 密碼雜湊值。

Spectre 是指一類於 2017 年首次發現的 CPU 安全漏洞,它利用了現代處理器用來預測和預先執行指令的效能優化技術——推測執行(speculative execution)。

攻擊者可以利用這個漏洞,誘騙 CPU 執行推測性操作,從而存取敏感資料,然後透過快取計時側通道(cache timing side channel)推斷出這些資料。

Spectre v2 是 Spectre 攻擊的一種特定類型,它濫用現代處理器中的間接分支預測來達成相同目標。具體來說,它會毒化 CPU 的分支預測機制,導致受害者程式執行一個間接分支,進而導致 CPU 錯誤預測分支,並推測性地執行攻擊者控制的程式碼或 gadget。

儘管錯誤預測的結果會被捨棄,但攻擊者可以利用快取狀態的變化並測量快取變化,從而推斷出受害者推測性執行存取了什麼。

研究人員表示:「BTR 目標是 JIT 引擎,並源於自我修改程式碼(Self-Modifying Code, SMC)與間接分支預測之間的互動。」他們補充說:「JIT 引擎首次暴露了由 SMC 引起的、可被利用的暫時性執行機會。」

此攻擊假設攻擊者能夠在 JIT 引擎中執行未經授權的程式碼,並試圖揭露主機環境中的敏感資料。整個行動序列如下:

研究人員解釋說:「透過將控制流程重定向到架構上無效的進入點,攻擊者可以繞過 Spectre 加固緩解措施或執行錯位的指令,最終洩漏秘密資料。」

然而,BTR 成功的關鍵在於,在 JIT 引擎釋放訓練區塊後,過時的 BTB(Branch Target Buffer)條目不得被失效或替換,並且分支預測器必須選擇過時的 BTB 條目進行預測。

在負責任的揭露之後,針對 BTR 的緩解措施已經發布並合併到 Linux 核心中(CVE-2026-64507 和 CVE-2026-64508)。

研究人員說:「GraalVM 透過隨機化 JIT 程式碼快取位置來阻礙區域重用。」「Mozilla 考慮了基於 IBPB(間接分支預測器屏障)的緩解措施,但目前正優先完成並部署網站隔離。」

此次揭露發生在麻省理工學院 CSAIL 研究人員 Daniël Trujillo 和 Mengjia Yan 揭露一種名為「中斷注入」(Interrupt Injection)的推測執行攻擊技術約兩個月後,該技術可以繞過 Spectre v2 防禦,並從基於 Intel 和 AMD 的 Linux 系統中洩漏任意核心記憶體。

新型 Spectre-v2 BTR 攻擊能繞過現有防禦機制,洩漏 Linux 記憶體新型 Spectre-v2 BTR 攻擊能繞過現有防禦機制,洩漏 Linux 記憶體新型 Spectre-v2 BTR 攻擊能繞過現有防禦機制,洩漏 Linux 記憶體新型 Spectre-v2 BTR 攻擊能繞過現有防禦機制,洩漏 Linux 記憶體新型 Spectre-v2 BTR 攻擊能繞過現有防禦機制,洩漏 Linux 記憶體