AMD CPU 中的漏洞可讓您繞過 SEV(安全加密虛擬化)保護機制

亥姆霍茲資訊安全中心(CISPA) 的研究人員發布了一種新的CacheWarp 攻擊方法,可以破壞虛擬化系統中使用的AMD SEV(安全加密虛擬化)安全機制,以保護虛擬機器免受虛擬機管理程式或主機系統管理員的干擾。 所提出的方法允許有權存取虛擬機器管理程式的攻擊者在使用 AMD SEV 保護的虛擬機器中執行第三方程式碼並提升權限。

該攻擊利用了INVD處理器指令執行期間對快取的錯誤操作所導致的漏洞(CVE-2023-20592),借助該漏洞可以實現記憶體和快取中的資料不匹配以及用於維護虛擬機器記憶體完整性的旁路機制,基於擴展SEV-ES 和SEV-SNP 實作。 此漏洞影響第一代至第三代 AMD EPYC 處理器。

對於第三代 AMD EPYC 處理器 (Zen 3),該問題已在 AMD 昨天發布的 1 月微程式碼更新中解決(該修復不會導致任何效能下降)。 對於第一代和第二代 AMD EPYC(Zen 2 和 Zen 4),不提供保護,因為這些 CPU 不支援為虛擬機器提供完整性控制的 SEV-SNP 擴充。 基於「Zen XNUMX」微架構的第四代AMD AMD EPYC「Genoa」處理器也不易受到攻擊。

AMD SEV 技術被 Amazon Web Services (AWS)、Google Cloud、Microsoft Azure 和 Oracle Compute Infrastructure (OCI) 等雲端供應商用於虛擬機器隔離。 AMD SEV 保護是透過虛擬機器記憶體的硬體級加密來實現的。 此外,SEV-ES(加密狀態)擴充功能可保護 CPU 暫存器。 只有目前的客戶系統有權存取解密的數據,當其他虛擬機器和管理程式嘗試存取此記憶體時,它們會收到一組加密的資料。

第三代AMD EPYC處理器引入了額外的擴充SEV-SNP(安全巢狀分頁),可確保巢狀記憶體頁表的安全操作。 除了一般記憶體加密和暫存器隔離之外,SEV-SNP 還實施了其他措施,透過防止虛擬機器管理程式對 VM 進行更改來保護記憶體完整性。 加密金鑰在晶片內建的獨立 PSP(平台安全處理器)處理器一側進行管理,該處理器基於 ARM 架構實作。

所提出的攻擊方法的本質是使用INVD指令使髒頁快取中的區塊(行)無效,而不將快取中累積的資料轉儲到記憶體中(回寫)。 因此,該方法允許您從快取中逐出更改的資料而不更改記憶體狀態。 為了進行攻擊,建議使用軟體異常(故障注入)在兩個地方中斷虛擬機的運行:首先,攻擊者調用“wbnoinvd”指令重置所有累積的內存寫入操作。緩存,其次調用“invd”指令將內存中未反映的寫入操作返回到舊狀態。

為了檢查您的系統是否有漏洞,我們發布了一個利用原型,讓您可以將異常插入到受 AMD SEV 保護的虛擬機器中,並回滾虛擬機器中尚未重置到記憶體的變更。 變更的回滾可用於透過傳回堆疊上的舊回傳位址來變更程式流程,或使用先前透過傳回驗證屬性值進行驗證的舊工作階段的登入參數。

例如,研究人員展示了使用 CacheWarp 方法對 ipp-crypto 庫中 RSA-CRT 演算法的實作進行 Bellcore 攻擊的可能性,使得在計算數字時透過錯誤替換恢復私鑰成為可能。簽署。 它還展示瞭如何在遠端連線到來賓系統時將會話驗證參數變更為 OpenSSH,然後在執行 sudo 公用程式以獲得 Ubuntu 20.04 中的 root 權限時變更驗證狀態。 該漏洞已在配備 AMD EPYC 7252、7313P 和 7443 處理器的系統上進行了測試。

來源: opennet.ru

添加評論