針對Intel和AMD處理器微架構的新攻擊

來自維吉尼亞大學和加州大學的一組研究人員提出了一種針對英特爾和 AMD 處理器微架構的新型攻擊,這種攻擊是在對未記錄的 CPU 功能進行逆向工程時發現的。 所提出的攻擊方法涉及在處理器中使用中間微操作緩存,該緩存可用於檢索指令推測執行期間累積的資訊。

出於最佳化目的,處理器開始以推測模式執行一些指令,而不等待先前的計算完成,如果隨後確定預測不合理,則它將操作回滾到其原始狀態,但期間處理的數據推測執行被存放在高速緩存中,其內容是可以決定的。

值得注意的是,新方法明顯優於 Spectre v1 攻擊,使攻擊難以檢測,並且無法被現有的側通道攻擊防護方法所阻止,這些方法旨在阻止推測性執行指令引起的漏洞(例如,使用LFENCE指令會阻止推測執行最後階段的洩漏,但不能防止透過微架構結構發生洩漏。

此方法影響自 2011 年以來發布的 Intel 和 AMD 處理器型號,包括 Intel Skylake 和 AMD Zen 系列。 現代 CPU 將複雜的處理器指令分解為更簡單的類似 RISC 的微操作,這些微操作緩存在單獨的快取中。 此高速緩存與高級快取有根本的不同,不能直接訪問,而是充當流緩衝區,用於快速訪問將 CISC 指令解碼為 RISC 微指令的結果。 然而,研究人員找到了一種方法,可以在快取存取衝突時創建條件,並透過分析某些操作的執行時間差異來判斷微操作快取的內容。

針對Intel和AMD處理器微架構的新攻擊

Intel處理器中的微操作緩存是根據CPU線程(超線程)進行分段的,而AMD Zen處理器則使用共享緩存,這不僅為一個執行線程內的資料洩漏創造了條件,而且在SMT中的不同執行緒之間也為資料外洩創造了條件(不同邏輯 CPU 核心上執行的程式碼之間可能存在資料外洩)。

研究人員提出了一種檢測微操作快取變化的基本方法,以及幾種允許在單一進程內創建隱藏資料傳輸通道並使用易受攻擊的程式碼洩露機密資料的攻擊場景(例如,在執行時洩露進程數據)具有 JIT 的引擎和虛擬機器中的第三方程式碼),以及用戶空間中的核心和進程之間。

當使用微操作緩存組織 Spectre 攻擊的變體時,在組織同一位址內的洩漏的情況下,研究人員能夠實現 965.59 Kbps 的效能,錯誤率為 0.22%;使用糾錯時,能夠實現 785.56 Kbps 的效能空間和特權等級。 對於跨越不同權限等級(核心與使用者空間之間)的洩漏,新增糾錯後效能為 85.2 Kbps,錯誤率為 110.96% 時效能為 4 Kbps。 當攻擊 AMD Zen 處理器時,在不同邏輯 CPU 核心之間造成洩漏,效能為 250 Kbps,錯誤率為 5.59%,錯誤校正率為 168.58 Kbps。 與經典的 Spectre v1 方法相比,新的攻擊速度快了 2.6 倍。

預計,防禦微操作快取攻擊將需要進行一些更改,這些更改會比啟用 Spectre 攻擊保護時更降低效能。 作為最佳折衷方案,建議不是透過停用快取來阻止此類攻擊,而是在監視異常和識別典型攻擊的快取狀態的層級上進行封鎖。

與 Spectre 攻擊一樣,組織內核或其他進程的洩漏需要在受害進程一側執行特定的命令序列(小工具),從而導致指令的推測執行。 Linux 核心中已發現約 100 個類似的小工具,這些小工具將被刪除,但會定期找到其產生的變通方法,例如與在核心中執行專門設計的 BPF 程式相關的方法。

來源: opennet.ru

添加評論