SWAPGS - CPU 推測執行機制中的一個新漏洞

Bitdefender 的研究人員 透露 新漏洞(CVE-2019,1125)在現代CPU的推測指令執行機制中,它被命名為SWAPGS,它對應於導致問題的處理器指令的名稱。 漏洞 它允許 允許非特權攻擊者確定核心記憶體區域或正在運行的虛擬機器的內容。 問題 確認的 在 Intel 處理器 (x86_64) 中並且部分 影響 未出現主要攻擊向量的 AMD 處理器。 先前實施的應對 Spectre 和 Meltdown 漏洞的方法無法在使用英特爾處理器時防範 SWAPGS 攻擊,但已經針對 Linux、ChromeOS、Android 和 Windows 提出了修復方案。

這個漏洞屬於 Spectre v1 類,基於從推測執行指令後剩餘的處理器快取中恢復資料的想法。 為了提高效能,現代CPU的分支預測單元對一些最有可能被執行的指令使用搶佔式執行,但無需等待決定其執行的所有因素的計算(例如,當分支條件或存取參數尚未確定時)尚未計算)。 如果預測未得到確認,處理器將丟棄推測執行的結果,但在此過程中處理的資料仍保留在處理器快取中,並且可以使用透過側通道確定快取內容、分析存取變更的方法來恢復快取和未快取資料的時間。

新攻擊的特點是利用了推測執行 SWAPGS 指令期間發生的洩漏,該指令在作業系統中用於在控制權從用戶空間傳遞到作業系統核心(GS 暫存器)時替換 GS 暫存器的值。用戶空間中使用的值會替換為內核中操作期間使用的值)。 在Linux核心中,GS儲存用於存取核心資料的per_cpu指針,用戶空間儲存指向TLS(線程本機儲存)的指針。

為了避免在從核心空間再次存取核心或執行不需要更改 GS 暫存器的程式碼時呼叫 SWAPGS 指令兩次,在該指令之前執行檢查和條件分支。 推測執行引擎主動繼續使用 SWAPGS 指令執行程式碼,而不等待檢查結果,如果所選分支未確認,則丟棄結果。 因此,可能會出現這樣的情況:推測性地選擇了不涉及 SWAPGS 執行的分支,但在推測性執行期間,GS 暫存器的值將被 SWAPGS 指令更改並用於最終進入 CPU 高速緩存的相關記憶體操作。

研究人員提出了兩種攻擊場景,並為其準備了漏洞原型。 第一種情況是基於SWAPGS指令未被推測執行的情況,儘管它實際上在執行中使用,而第二種情況則相反,當SWAPGS指令被推測執行時,儘管它實際上不應該被執行。 對於每種情況,都有兩種利用選項:攻擊者可以確定核心區域中特定位址處的值,攻擊者可以在核心中的隨機位址處搜尋特定值。 實施攻擊需要很長時間,漏洞利用可能需要幾個小時才能完成洩漏。

Linux核心有問題 淘汰 透過更改呼叫 SWAPGS 指令的邏輯(阻止推測執行),類似於修復其他 Spectre v1 類別漏洞。 增加的保護預計將對典型工作負載的效能產生最小的影響。 使用者空間和核心空間之間的切換階段會出現延遲,這可能會導致效能不佳,例如,當應用程式進行大量系統呼叫或頻繁產生 NMI 和中斷時。

此修復需要在主機系統和來賓環境上安裝核心更新,然後重新啟動系統。 若要停用 Linux 上的保護,可以使用「nospectre_v1」選項,這也會停用阻止 SWAPGS 漏洞的措施。 該修復程序可作為 修補 適用於 Linux 內核,已包含在發行版中 4.19.65, 5.2.7、4.14.137、4.9.188 和 4.4.188。 Linux 發行版的更新尚未發布(Debian, RHEL, Fedora, Arch Linux, SUSE/開放SUSE, Ubuntu)。 在 Windows 上,該問題已悄悄解決 七月更新。 Google公司 準備好了 修復了 ChromeOS 附帶的核心 4.19 和 Android.

據 Bitdefender 的研究人員稱,英特爾早在去年 XNUMX 月就已獲悉該問題。 我們決定以程式方式修復該問題,來自 Microsoft、Google 和 Linux 核心的開發人員參與了修復程式的協調開發。 由於缺乏對漏洞利用中使用的 WRGSBASE 指令的支持,Ivy Bridge 之前的舊版英特爾處理器更難受到攻擊。 ARM、POWER、SPARC、MIPS 和 RISC-V 系統不受此問題影響,因為它們不支援 SWAPGS 指令。

該問題主要影響英特爾處理器的所有者 -
在 AMD 系統上,只能重現第二種攻擊場景,該場景僅限於對 GS 暫存器基值的推測處理,可用於在隨機儲存區域中尋找特定值。 封鎖此攻擊選項 夠了 針對 Spectre v1 的現有防護方法。

來源: opennet.ru

添加評論