Bitdefender 的研究人員 新漏洞()在現代CPU的推測指令執行機制中,它被命名為SWAPGS,它對應於導致問題的處理器指令的名稱。 漏洞 允許非特權攻擊者確定核心記憶體區域或正在運行的虛擬機器的內容。 問題 在 Intel 處理器 (x86_64) 中並且部分 AMD處理器,其主要攻擊途徑並未顯現。先前針對Spectre和Meltdown漏洞所實施的緩解措施,在使用Intel處理器時無法抵禦SWAPGS攻擊,但對於AMD處理器則有效。 Linux、Chrome作業系統、 Android и Windows 已經提出了修正方案。
這個漏洞屬於 Spectre v1 類,基於從推測執行指令後剩餘的處理器快取中恢復資料的想法。 為了提高效能,現代CPU的分支預測單元對一些最有可能被執行的指令使用搶佔式執行,但無需等待決定其執行的所有因素的計算(例如,當分支條件或存取參數尚未確定時)尚未計算)。 如果預測未得到確認,處理器將丟棄推測執行的結果,但在此過程中處理的資料仍保留在處理器快取中,並且可以使用透過側通道確定快取內容、分析存取變更的方法來恢復快取和未快取資料的時間。
這種新攻擊利用了SWAPGS指令推測執行期間發生的漏洞。 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.14.137、4.9.188 和 4.4.188。發行版更新 Linux 尚未發布(, , , , , )。 在 Windows 問題已在不引起不必要關注的情況下解決。 。 Google公司 修復了 ChromeOS 附帶的核心 4.19 和 .
據Bitdefender的研究人員稱,英特爾早在去年8月就已獲悉此問題。雙方決定採用軟體修復方案,並為此召集了來自微軟、谷歌和核心的開發人員協調開發修補程式。 Linux由於不支援漏洞利用中使用的 WRGSBASE 指令,Ivy Bridge 之前的舊款 Intel 處理器更難受到攻擊。 ARM、POWER、SPARC、MIPS 和 RISC-V 系統不受此問題影響,因為它們不支援 SWAPGS 指令。
該問題主要影響英特爾處理器的所有者 -
在 AMD 系統上,只能重現第二種攻擊場景,該場景僅限於對 GS 暫存器基值的推測處理,可用於在隨機儲存區域中尋找特定值。 封鎖此攻擊選項 針對 Spectre v1 的現有防護方法。
來源: opennet.ru
