Google 安全研究人員發現 Intel 多個世代的 CPU 發生新一波旁路攻擊,造成資料透過 EFLAGS 暫存器 (register) 外洩。
這波攻擊是由清華大學和馬里蘭大學、以及中國教育部電腦實驗室的研究人員發現,迥異於大部份的旁路攻擊。
不同於許多旁路攻擊仰賴快取系統,新的一波攻擊是利用暫態執行 (transient-execution) 漏洞,讓駭客得以經由時序分析 (timing analysis) 從用戶記憶體空間汲取祕密資料。
引發 Meltdown 漏洞的也是這類攻擊,後者是 2018 年影響 Intel x86 處理器的知名重大安全漏洞。
Meltdown 是利用 CPU 中的推測執行 (speculative execution) 的效能最佳化過程,讓攻擊者繞過記憶體隔離機制而存取儲存在記憶體中的機密資訊,如密碼、加密金鑰或其他憑證。
Meltdown 發生時,廠商是以軟體更新、機碼更新和硬體重新設計加以減輕衝擊,但是其實都沒有 100% 解決。最新一次攻擊甚至還發生在完全修補好的系統上。
學者公佈的論文說明,新一波旁路攻擊與暫態執行中的 EFLAGS 暫存器 (register) 變更有關,後者影響到條件跳轉 (JCC) 指令的時序。
EFLAGS 暫存器是 CPU 暫存器,存放和各種處理器狀態有關的旗標 (flag),JCC 指令則是允許依據 EFLAGS 暫存器內容進行條件分支 (conditional branching) 的 CPU 指令。
研究人員以 Intel CPU 及 Ubuntu Linux 22.04 jammy 版系統進行攻擊實驗,分成二階段進行。第一是經由 EFLAGS 暫存器觸發暫態執行,將機密資訊編碼。第二階段則是量測 KCC 指令執行時間,目的在解碼資訊。
研究人員實驗結果顯示,可以從 Intel i7-6700 和 i7-7700 存取 100% 的資料,而從較新的 i9-10980XE CPU 及汲取部份資料。
不過研究人員也指出,這類攻擊不像快取狀態的旁路攻擊方法那麼穩當,若想在較新的 Intel 晶片系統上有良好效果,攻擊者得重覆試上數千次。此外,這類攻擊的問題根源沒那麼常見,且還有多種環境假設,使得攻擊變得更有難度。
不過研究人員仍然提出減輕災害的方法,像是變更 JCC 指令來防範惡意執行量測,或改寫暫態執行後的 EFLAS,以減低它對 JCC 指令的影響。
