Black Hat USA 2025 | Racing for Privilege
三句話摘要
研究人員發現 Intel 處理器分支預測器中的微架構競態條件,可繞過 EIBRS 安全防護,讓非特權用戶從作業系統核心洩漏任意記憶體(包括 /etc/shadow 密碼雜湊)。 Intel 的 EIBRS 防護存在微架構競態條件盲點——分支預測的延遲寫入佇列在特權切換時會以錯誤標籤被提交,導致 2018 年以來所有依賴此機制的 Intel 平台均可被非特權用戶任意洩漏核心記憶體,Spectre 攻防戰遠未結束。 EIBRS 緩解機制存在根本性設計盲點:Intel 的 EIBRS 透過在分支預測條目中加入「特權模式標記」來防止跨特權域注入,但它假設預測完成時的特權狀態等同於分支執行時的特權狀態——這個假設在硬體流水線中並不成立,導致防護形同虛設。
重點整理
重點- 1
EIBRS 緩解機制存在根本性設計盲點:Intel 的 EIBRS 透過在分支預測條目中加入「特權模式標記」來防止跨特權域注入,但它假設預測完成時的特權狀態等同於分支執行時的特權狀態——這個假設在硬體流水線中並不成立,導致防護形同虛設。
- 2
競態條件的核心:預測佇列的延遲寫入:分支預測並非瞬間完成,硬體需時間收集目標、尋找結構中的替換位置。若在這段「預測在途」期間執行 syscall 切換特權,處理器會以當前特權(kernel mode)而非原始特權(user mode)標記該預測,注入就此成立。
- 3
Intel 對前一漏洞的防護(BHIDS)反而使攻擊更容易:為緩解 Branch History Injection,Intel 實作了 BHIDS,直接關閉核心模式下的 history-based 預測器;攻擊者原本需費心繞過這個高優先級、但不受影響的預測器,BHIDS 卻把它自動關掉,讓低優先級的 IP-based 預測器成為唯一目標。
- 4
Spectre 攻防是持續性貓鼠遊戲,blackbox microcode 難以有效評估:自 2018 年起,每一輪緩解措施都衍生出新的繞過手法。Intel 的 microcode 修補因加密無法驗證其完整性,學術界認為必須建立對硬體廠商黑箱緩解措施的獨立評估機制。
實用技巧與重點
乾貨- 具體數字與指標
- 訊號強度初期:一百萬次才出現一次(1-in-a-million)
- 展示用伺服器:第 13 代 Intel(Raptor Lake)
- 最終展示的 exploit 比論文原版快 10 倍
- 攻擊延遲測試:使用 NOP 指令插入延遲,繪製成功率曲線,清楚顯示注入在短延遲時有效、超過閾值後失效
- 工具與機制名稱
- EIBRS(Enhanced Indirect Branch Restricted Speculation):Intel 主要長期 Spectre 緩解措施,寫入 MSR speculation control register 即啟用
- IBPB(Indirect Branch Prediction Barrier):虛擬機切換時使用的隔離屏障,同樣被此漏洞破壞
- BHIDS(BHI Disable in Supervisor Mode):Branch History Injection 的緩解措施,關閉 supervisor mode 下的 history-based 預測器
- KASLR(Kernel Address Space Layout Randomization):核心位址隨機化,被攻擊手法透過暴力碰撞 branch predictor 繞過
- 觸發點:`keyctl` 系統呼叫中的間接呼叫(function pointer call),攻擊者可控 buffer 與 buffer length 兩個暫存器
- 側通道:Cache 命中/未命中(Flush+Reload / Prime+Probe 類型)
- 攻擊流程
- 注入分支預測(branch training)
- 立即執行 syscall(`getpid` 等),在預測在途時切換特權
- 準備 cache 狀態(prime)
- 進入 kernel(觸發 ioctal / keyctl)
- kernel 中的間接分支採用被污染預測,跳至 disclosure gadget
- gadget 讀取秘密值並以 cache access 編碼回傳
- 攻擊者量測 cache(probe),還原秘密位元組
- 受影響範圍
- 所有帶有 in-silicon Spectre 緩解的 Intel 處理器(含發布前型號)
- 更早、無 EIBRS 但有 IBPB 的 Intel 處理器:IBPB 同樣被破壞
- ARM 也存在類似問題(各授權廠各自實作緩解,情形更分散)
- Apple M1 亦有相關論文,推測根本原因相同
- 修補方式
- Intel microcode 更新(加密,無法獨立驗證內容)
- 洩漏目標示範
- `/etc/shadow`(Linux 密碼雜湊檔,非特權用戶無讀取權限)
- 利用已知前綴(Ubuntu 設定密碼後必以固定字元開頭)進行頁面定位
結論
結論“Intel 的 EIBRS 防護存在微架構競態條件盲點——分支預測的延遲寫入佇列在特權切換時會以錯誤標籤被提交,導致 2018 年以來所有依賴此機制的 Intel 平台均可被非特權用戶任意洩漏核心記憶體,Spectre 攻防戰遠未結束。”
完整解析
詳細2017 年底,Intel 召集全球半導體與軟體產業代表舉行緊急閉門會議,討論一類前所未見的漏洞——Spectre。Spectre 的根源在於 CPU 的投機執行(speculative execution)機制:為了提升效能,處理器會在分支結果確定之前提前預測並執行後續指令;預測錯誤時,錯誤執行的指令雖被丟棄,卻仍會在 branch target prediction 與 cache 等微架構結構中留下痕跡。由於這些結構跨特權域共享(user space、kernel、hypervisor 均使用相同硬體),攻擊者可以注入錯誤預測、劫持受害者域的投機控制流,進而讀取不應被存取的記憶體。Intel 的長期解決方案 EIBRS 為每筆預測加入特權標記,使跨域注入在理論上失效,產業因此鬆了一口氣。
然而,Graz 大學研究生 Sandro 在接手前輩 Johannes 的實驗時,注意到一個令人困惑的現象:在特定條件下,EIBRS 啟用的情形下仍能偵測到微弱訊號,且一個與分支預測看似毫無關係的操作——在注入後插入 `getpid` 系統呼叫——竟讓訊號從百萬分之一的噪訊躍升為穩定可重現的結果。歷經數週、數百個微小差異的對照實驗後,研究團隊得出結論:分支預測的寫入並非瞬間完成,而是存在一段「在途」延遲;若在這個視窗內執行 syscall 觸發特權切換,處理器會以切換後的特權(kernel mode)標記仍在佇列中的預測,繞過 EIBRS 的核心假設。更諷刺的是,Intel 為對抗前一代攻擊 Branch History Injection 而推出的 BHIDS,直接關閉了核心模式下較高精度的 history-based 預測器,使得本研究鎖定的低優先級 IP-based 預測器成為唯一作用目標,無意間降低了攻擊難度。
建立理論模型後,團隊開始構建完整攻擊鏈。攻擊目標是以非特權用戶從 kernel 洩漏 `/etc/shadow`。攻擊流程包含:(1)掃描 kernel binary 找到可受攻擊的間接分支(`keyctl` 系統呼叫中的 function pointer)及 disclosure gadget(兩條連續記憶體讀取指令);(2)由於 KASLR 會隨機化 kernel 位址,透過暴力碰撞 branch predictor 的側通道反推 kernel 實際載入位置;(3)同樣以側通道定位包含 `/etc/shadow` 內容的記憶體頁,利用已知前綴字元縮小搜尋範圍;(4)以競態條件注入預測並觸發 disclosure gadget,逐位元組洩漏資料。現場示範在第 13 代 Intel Raptor Lake、最新版 Ubuntu LTS 且已啟用所有官方緩解措施的伺服器上執行,數秒內成功輸出 root 帳號的密碼雜湊。
受影響範圍遠超過預期:研究人員追溯發現,從第一批具有 in-silicon Spectre 緩解的 Intel 處理器起,到尚未正式發布的新型號,均存在此競態條件;連 IBPB(虛擬機切換用的分支預測隔離屏障)也因相同原因被繞過,意味著雲端環境中的 guest-to-host 攻擊同樣可行。Intel 已透過加密 microcode 更新修補此漏洞,但研究人員指出,由於 microcode 不透明,無法獨立驗證修補的完整性,呼籲學術界與產業建立對硬體廠商黑箱緩解措施的系統性評估機制。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

