SWAPGS一個新的投機執行漏洞

SWAPGS-exploit-2

很多 Bitdefender研究人員發現了一個新漏洞 在現代處理器中推測性執行指令的機制中, 誰叫SWAPGS, 與導致問題的處理器指令名稱相對應。

脆弱性 允許無特權的攻擊者確定內核內存區域的內容 或運行虛擬機。 該問題已在Intel處理器(x86_64)上得到確認,並且部分影響了沒有出現主要攻擊媒介的AMD處理器。

先前實施的Spectre和Meltdown反漏洞方法無法抵禦SWAPGS攻擊 使用Intel處理器,但是已經提出了針對Linux,ChromeOS,Android和Windows的解決方案。

該漏洞屬於Spectre v1類 並且基於從處理器緩存中檢索數據的想法,這些數據是在推測性執行指令後保留的。

現代CPU的轉換預測塊使用主動執行一些更有可能執行的指令來提高性能,但無需等待確定它們執行的所有因素的計算(例如,當指令轉換條件或訪問參數尚未計算)。

如果未確認預測,則處理器將丟棄推測性運行的結果,但是在運行期間處理的數據將由處理器進行緩存,並可以使用確定跨通道緩存內容的方法進行恢復。更改對緩存和非緩存數據的訪問時間。

關於SWAPGS

新攻擊的特殊性在於使用了SWAPGS指令的推測執行期間發生的洩漏, 當控制權從用戶空間轉移到操作系統內核時,它在操作系統中用於替換GS寄存器值(用戶空間中使用的GS值由內核操作中使用的值替換)。

GS中的Linux內核存儲per_cpu指針,用於訪問內核數據,以及 指向用戶空間中的TLS(線程本地存儲)。

為了在從內核空間重複訪問內核之後或者在執行不需要GS寄存器替換的代碼時排除對SWAPGS指令的兩次調用,在指令之前執行檢查和條件轉換。

推測執行機制在執行代碼之前先使用SWAPGS指令, 無需等待驗證結果,並且如果未確認所選分支,則丟棄結果。

因此, 當推測性地選擇了指定執行SWAPGS的分支時,可能會出現這種情況,但在推測執行期間,GS寄存器的值將由SWAPGS指令更改,並將用於CPU緩存的與內存相關的操作。

研究人員提出了兩種攻擊方案 為此準備了漏洞利用原型。

  • 第一種情況是基於SWAPGS指令雖然在實際執行中使用時未以推測方式執行的情況,而第二種情況則是相反,當SWAPGS指令以推測性方式執行時(雖然實際上並未執行)。
  • 對於每種情況,都有兩個操作選項:攻擊者可以在核心區域的特定地址中確定值,並且攻擊者可以在核心的隨機地址中搜索特定值。

該解決方案要求在主機和來賓環境上均安裝內核更新,然後重新引導系統。 要在Linux上禁用保護,可以使用“ nospectre_v1”選項,該選項還禁用阻止SWAPGS漏洞的措施。

該解決方案可作為Linux內核的修補程序使用。,已包含在版本4.19.65、5.2.7、4.14.137、4.9.188和4.4.188中,而對於不同的Linux發行版,相關的更正將在本周和下週進行。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。