KVM 中的一個漏洞允許在 AMD 處理器上的來賓系統之外執行代碼

谷歌零項目團隊的研究人員幾天前在一篇博文中透露, 已發現 KVM 管理程序中的漏洞 (CVE-2021-29657) (基於 Linux 的開源虛擬機管理程序,支持 x86、ARM、PowerPC 和 S/390 上的硬件加速虛擬化) 允許您避免來賓系統的隔離 並在主機環境端運行您的代碼。

帖子提到了這個問題 從 Linux 內核 5.10-rc1 到 v5.12-rc6 的清單, 就是這樣 僅涵蓋內核 5.10 和 5.11 (大多數穩定的分佈分支都沒有受到這個問題的影響。) 該問題存在於nested_svm_vmrun 機制中,該機制使用AMD SVM(安全虛擬機)擴展實現並允許嵌套啟動來賓系統。

在這篇博文中,我描述了 AMD 特定 KVM 代碼中的一個漏洞,並討論了這個漏洞如何變成一個完整的虛擬機逃逸。 據我所知,這是 KVM 來賓到主機突破的第一篇公開文章,它不依賴於 QEMU 等用戶空間組件中的錯誤。

討論的錯誤被分配為 CVE-2021-29657,影響內核版本 v5.10-rc1 到 v5.12-rc6,並於 2021 年 5.10 月下旬修補。 由於該漏洞僅在 v5 中才可利用並在大約 XNUMX 個月後被發現,因此大多數實際 KVM 部署不應該受到影響。 我仍然認為這個問題是一個有趣的案例研究,需要構建一個穩定的來賓到主機的 KVM 逃逸,我希望這篇文章可以說明虛擬機管理程序的妥協不僅僅是理論問題。

研究人員提到,為了正確實現此功能, 管理程序必須攔截所有 SVM 指令 在來賓系統上運行, 模擬其行為並將狀態與硬件同步, 這是一項相當艱鉅的任務。

在分析了提議的 KVM 實現之後,研究人員s 遇到允許 MSR 內容的邏輯錯誤 主機的(特定型號註冊) 受客人系統影響,可用於在主機級別執行代碼。

特別是,從第二個嵌套級別的來賓(從另一個來賓啟動的 L2)運行 VMRUN 操作會導致對nested_svm_vmrun 的第二次調用並破壞 svm->nested.hsave 結構,該結構與來自 L2 來賓系統的 vmcb 的數據重疊.

結果,出現了一種情況,在 L2 來賓級別可以釋放 svm->nested.msrpm 結構中的內存,該結構存儲 MSR 位,即使它繼續使用,並訪問主機的 MSR環境..

這意味著,例如,可以通過轉儲其用戶空間進程的分配內存來檢查來賓的內存,或者可以輕鬆實施 CPU 時間和內存的資源限制。 

此外,KVM 可以將大部分與設備仿真相關的工作卸載到用戶空間組件。

該問題存在於具有 AMD 處理器(kvm-amd.ko 模塊)的系統上使用的代碼中,並且不會出現在 Intel 處理器上。

 除了處理中斷處理的幾個性能敏感設備之外,所有用於提供虛擬磁盤、網絡或 GPU 訪問的複雜低級代碼都可以部署在用戶空間中。  

研究人員除了描述問題 他們還準備了一個漏洞利用的工作原型 它允許從具有 AMD Epyc 7351P 處理器和 Linux 5.10 內核的系統上的主機環境中的來賓環境運行 root shell。

據觀察, 這是第一個在 KVM 管理程序中託管漏洞的來賓 本身,與 QEMU 等用戶空間組件中的錯誤無關。 XNUMX 月底,內核中接受了此修復程序。

終於 如果您有興趣了解更多信息 關於筆記,您可以查看詳細信息 在下面的鏈接中。


發表您的評論

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

*

*

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