Bitdefender 的研究人員
這個漏洞屬於 Spectre v1 類,基於從推測執行指令後剩餘的處理器快取中恢復資料的想法。 為了提高效能,現代CPU的分支預測單元對一些最有可能被執行的指令使用搶佔式執行,但無需等待決定其執行的所有因素的計算(例如,當分支條件或存取參數尚未確定時)尚未計算)。 如果預測未得到確認,處理器將丟棄推測執行的結果,但在此過程中處理的資料仍保留在處理器快取中,並且可以使用透過側通道確定快取內容、分析存取變更的方法來恢復快取和未快取資料的時間。
新攻擊的特點是利用了推測執行 SWAPGS 指令期間發生的洩漏,該指令在作業系統中用於在控制權從用戶空間傳遞到作業系統核心(GS 暫存器)時替換 GS 暫存器的值。用戶空間中使用的值會替換為內核中操作期間使用的值)。 在Linux核心中,GS儲存用於存取核心資料的per_cpu指針,用戶空間儲存指向TLS(線程本機儲存)的指針。
為了避免在從核心空間再次存取核心或執行不需要更改 GS 暫存器的程式碼時呼叫 SWAPGS 指令兩次,在該指令之前執行檢查和條件分支。 推測執行引擎主動繼續使用 SWAPGS 指令執行程式碼,而不等待檢查結果,如果所選分支未確認,則丟棄結果。 因此,可能會出現這樣的情況:推測性地選擇了不涉及 SWAPGS 執行的分支,但在推測性執行期間,GS 暫存器的值將被 SWAPGS 指令更改並用於最終進入 CPU 高速緩存的相關記憶體操作。
研究人員提出了兩種攻擊場景,並為其準備了漏洞原型。 第一種情況是基於SWAPGS指令未被推測執行的情況,儘管它實際上在執行中使用,而第二種情況則相反,當SWAPGS指令被推測執行時,儘管它實際上不應該被執行。 對於每種情況,都有兩種利用選項:攻擊者可以確定核心區域中特定位址處的值,攻擊者可以在核心中的隨機位址處搜尋特定值。 實施攻擊需要很長時間,漏洞利用可能需要幾個小時才能完成洩漏。
Linux核心有問題
此修復需要在主機系統和來賓環境上安裝核心更新,然後重新啟動系統。 若要停用 Linux 上的保護,可以使用「nospectre_v1」選項,這也會停用阻止 SWAPGS 漏洞的措施。 該修復程序可作為
據 Bitdefender 的研究人員稱,英特爾早在去年 XNUMX 月就已獲悉該問題。 我們決定以程式方式修復該問題,來自 Microsoft、Google 和 Linux 核心的開發人員參與了修復程式的協調開發。 由於缺乏對漏洞利用中使用的 WRGSBASE 指令的支持,Ivy Bridge 之前的舊版英特爾處理器更難受到攻擊。 ARM、POWER、SPARC、MIPS 和 RISC-V 系統不受此問題影響,因為它們不支援 SWAPGS 指令。
該問題主要影響英特爾處理器的所有者 -
在 AMD 系統上,只能重現第二種攻擊場景,該場景僅限於對 GS 暫存器基值的推測處理,可用於在隨機儲存區域中尋找特定值。 封鎖此攻擊選項
來源: opennet.ru