Interrupt Injection 繞過 Spectre v2 防線,Intel/AMD 影響要分開睇
Tech News

Interrupt Injection 繞過 Spectre v2 防線,Intel/AMD 影響要分開睇

圖片:via iThome — https://www.ithome.com.tw/news/178200
TechLab 編輯部(譯)·

完整偷資料示範集中喺 AMD Zen 2,Linux 管理員應盡快更新 kernel

防線清完場,兩條指令後又俾人寫返入去

iThome 報道,MIT CSAIL 團隊公開咗名為 TONTOU 嘅攻擊類別,當中 Interrupt Injection 會針對 Spectre v2 防禦清理分支預測器之後、CPU 真正用到預測結果之前嗰段空隙。標題睇落似 Intel 同 AMD 全線失守,不過研究證據要拆開睇:團隊喺幾款 Intel/AMD CPU 做到錯誤預測,完整讀取 kernel 記憶體嘅攻擊就只喺 AMD Zen 2 加 Linux 上完成

MIT CSAIL 用時間線示意分支預測防線清理狀態後,Interrupt Injection 點樣攝入極短空隙

圖片:MIT CSAIL/Gabriel Maragaño

Interrupt Injection 點樣捉中極短空隙

現代 CPU 會預先估下一步行邊段程式,估中就慳時間,估錯嘅運算雖然會作廢,cache 等微架構狀態仍可能留下痕跡。Spectre v2 正正利用呢點偷資料。近年防線會先清走或隔離可疑嘅分支預測狀態;AMD Safe RET 甚至喺 return 前先寫入安全目標。不過清理同使用係兩個動作,中間仍隔住兩條指令。攻擊者用普通程式設定高精度 timer,安排硬件中斷啱啱喺呢度發生,CPU 跳去跑 interrupt handler 時,分支預測器就有機會再次受污染。

可以想像有人抹乾淨塊白板,轉身攞筆準備讀取內容,另一個人就趁嗰一刻寫咗新指示上去。關鍵位係中斷本身屬於正常 kernel 工作,過往設計多數當佢只會帶來雜訊。呢份研究證明,攻擊者只要控制中斷時間,正常系統機制都可以變成重新訓練預測器嘅工具。研究人員仲會刻意趕走 cache 入面相關指令,拖慢嗰幾步,令原本只有數十納秒嘅窗口較易命中。

四款 CPU 有測試,結果差異好大

論文測試咗 Intel Xeon Gold 5220R、Core Ultra 9 285H、AMD Ryzen 7 4700G 同 EPYC 9124,Linux kernel 介乎 5.15.0-168-generic 至 6.14.0-37-generic。兩款 Intel CPU 都出現由中斷訓練造成嘅錯誤預測;Zen 2 亦成功,Zen 4 嗰組 Safe RET 測試就錄得零次。團隊另外試過 Raptor Lake,冇見到同樣錯誤預測,反映即使防禦名稱一樣,唔同 CPU 世代嘅硬件實作都可能有明顯分別,唔應該由一款晶片推廣到整個品牌。

最完整嘅示範用 Ryzen 7 4700G、Linux 6.14.0-37-generic 同八個實體核心完成。研究人員先破解 KASLR,再以平均每秒 5.47 bytes、91.97% 準確率讀取任意 kernel 記憶體;搜尋 /etc/shadow 時,十次有五次成功,平均約 18 分鐘。呢度攞到嘅係 root 密碼 hash,唔等於即時取得明文密碼。不過能夠由冇特權嘅程式越界讀 kernel 資料,對共用主機已經係實質隔離風險。

要先喺部機執行程式,網頁遙距攻擊未有示範

研究假設攻擊者已經可以喺目標 Linux 主機執行任意但冇特權嘅程式,預設 Spectre v2 防禦、KASLR 同 Safe RET 全部開啟。佢仲要調校 timer、固定 CPU core、控制 system call、處理 cache eviction,再搵到啱用嘅 disclosure gadget。呢套條件令佢暫時較似研究級本機攻擊,冇證據顯示單靠開一個網頁就可以直接偷資料。風險較集中喺多人共用 server、容許陌生程式運行嘅 CI runner、shell hosting,同依賴 kernel 隔離租戶嘅雲端平台;一般只跑可信軟件嘅個人電腦,實際暴露程度低好多。

AMD 有 Linux 修補,Intel 暫時沿用既有指引

AMD-SB-7061 將 Zen 1 至 Zen 4 列入受影響產品範圍,不過公告同時講明:研究人員展示過 Zen 1、Zen 2,Zen 3、Zen 4 就屬可能受影響而未完成同級示範。AMD 判斷問題同 Linux Safe RET 實作有關。Linux 喺 8 月 5 日合併修補,當中會識別中斷打斷 Safe RET 嘅情況,改用模擬 Safe RET 步驟避開原本容易受干擾嘅 RET 路徑。

Intel 向研究團隊確認相關行為,但認為實際利用受多項條件限制,已有 Branch History Injection 指引可以涵蓋,暫時冇要求新增專屬防禦。研究團隊嘅睇法較保留,指出 Linux 預設 SW loop 同 BHI_DIS_S 仍未阻止佢哋喺兩款測試 CPU 製造錯誤預測。論文同 AMD 公告亦冇列出呢次研究專屬嘅 CVE,所以唔應該用一個未經確認嘅編號代稱件事。

Linux 管理員要更新 kernel,再重開主機

用 AMD Zen 1 至 Zen 4 處理器、又跑 Linux 嘅電腦同 server,應安裝發行版提供、已包含 Safe RET interrupt injection 修補嘅 kernel 安全更新,完成後重新開機,確保新 kernel 真正載入。各發行版 backport 時間同版本號可能唔同,管理員應查 package changelog 或供應商公告有冇列出「Make Safe-RET robust against interrupt injection」相關修補。自行管理雲端主機嘅人要更新 guest kernel;實體 host 同多租戶 hypervisor 就要由雲端供應商處理。

CPU microcode、BIOS 同一般系統更新仍應保持最新,不過 AMD 今次公開嘅直接修補係 Linux kernel,單獨更新瀏覽器或者 app 幫唔到。Intel 系統暫時未有同級專屬修補公告,管理員可以先更新 kernel、microcode 同 BIOS,再跟發行版及 Intel 後續指引。研究冇完成 Windows 或 macOS 攻擊示範,亦冇足夠資料判斷佢哋受幾大影響,現階段唔適合照搬 Linux 結論。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook