Spectre v2 的緩解措施(如 eIBRS 和 Safe RET)透過在特權邊界(例如從使用者空間切換到核心空間時)淨化或隔離分支預測器狀態來運作 。這些防禦的核心假設是:攻擊者無法在淨化完成後、預測器被使用前的短暫間隔內操控預測器。
TONTOU 推翻了這個假設。在 AMD 的 Safe RET 上,這個漏洞窗口僅有 兩道指令 的寬度 。一個無特權的攻擊者可以注入一個精確定時的硬體中斷(稱為 INTERRUPT INJECTION,中斷注入),使其恰好落在這個間隙中,從而在防禦機制已經運行完畢、但核心尚未使用預測器狀態時,重新污染 分支預測器 。這使得所有預期的保護措施雖已到位,卻仍能重新啟用推測性執行的旁路洩漏。
此攻擊僅需在目標機器上執行無特權的使用者空間程式碼,無需任何較高權限 。
研究人員建立了一個完整的端到端漏洞利用程式,並在多個處理器世代上進行了測試:
在 Intel 平台上,研究人員展示了對 Cascade Lake Refresh 和 Arrow Lake 上 eIBRS 的部分繞過,但其攻擊面與 AMD Safe RET 的情況有所不同 。該研究未確認在 AMD Zen 4 上使用相同方法能成功誤導分支 。
從揭露到回應的時間線相當迅速:
Intel 在協調式揭露過程中承認了這項發現,並從其漏洞獎勵計畫中頒發了獎金,但告知研究人員,考量到實際利用需要具備的「揭露手法」(disclosure gadgets)等諸多因素,他們不會開發額外的緩解措施 。
TONTOU 代表了推測性執行攻擊的一次重大演進。與早期針對核心預測機制本身的 Spectre 變種不同,TONTOU 攻擊的是緩解措施本身——那些為阻止先前攻擊而建立的軟硬體防禦。透過識別淨化與使用之間的競爭條件,研究人員開闢了一類新的漏洞,將需要根本不同的防禦方法。
此攻擊同時也證明,CPU 安全無法僅靠軟體修補程式解決。雖然 Linux 核心修補程式關閉了 AMD Zen 處理器上特定的中斷注入窗口,但其底層的架構假設——即預測器淨化和預測器使用可以被視為一個原子操作——已被證明是錯誤的。