Linux 6.2 內核中存在可繞過 Spectre v2 攻擊保護的漏洞

Linux 核心6.2 中已發現一個漏洞(CVE-2023-1998),該漏洞會停用針對Spectre v2 攻擊的保護,該攻擊允許存取在不同SMT 或超線程中但在同一實體處理器上運行的其他進程的記憶體核。 此漏洞可用於導致雲端系統中虛擬機器之間的資料外洩。 該問題僅影響 Linux 6.2 內核,是由錯誤實施最佳化引起的,該最佳化旨在減少應用 Spectre v2 保護的大量開銷。 該漏洞已在 Linux 6.3 核心的實驗分支中修復。

在使用者空間中,為了防止 Spectre 攻擊,進程可以使用 prctl PR_SET_SPECULATION_CTRL 選擇性地停用指令的推測執行,或使用基於 seccomp 機制的系統呼叫過濾。 據發現該問題的研究人員稱,儘管透過 prctl 包含了 spectre-BTI 攻擊阻止模式,但內核 6.2 中的不正確優化導致至少一家主要雲端提供者的虛擬機器無法獲得適當的保護。 該漏洞也出現在核心 6.2 的常規伺服器上,載入它們時使用「spectre_v2=ibrs」設定。

此漏洞的本質是,在選擇IBRS 或eIBRS 保護模式時,引入的最佳化禁用了STIBP(單執行緒間接分支預測器)機制的使用,而該機制是使用同步多執行緒技術(SMT 或Hyper-V)時阻止洩漏所必需的。線程)。 然而,只有eIBRS 模式提供了針對線程之間洩漏的保護,而IBRS 模式則不然,因為在這種情況下,當控制權返回到用戶空間時,出於性能原因,提供邏輯核心之間洩漏保護的IBRS 位元被清除,這使得用戶空間中的執行緒未受到 Spectre v2 攻擊的保護。

來源: opennet.ru

添加評論