CVE-2026-53359,代號「Januscape」,是一個存在於 Linux 核心 KVM(核心虛擬機)x86 影子 MMU(記憶體管理單元)中的高風險釋放後使用(Use-After-Free)漏洞。此漏洞允許具備來賓虛擬機 root 權限的攻擊者,破壞主機核心記憶體,進而逃脫虛擬機的隔離機制。此漏洞自核心版本 2.6.36(2010 年 8 月發布)起便存在,潛伏了約 16 年,直到 2026 年 7 月才被揭露並修補 ![]()
。
漏洞原理:影子 MMU 的角色錯配
此漏洞根源於影子 MMU 的程式碼路徑,特別是在 kvm_mmu_get_child_sp() 函數中。此函數設計用於在來賓修改其頁表時,重複使用現有的影子頁表項。關鍵的缺陷在於,該函數在決定是否重用影子頁時,只驗證了來賓頁框號碼,但完全沒有檢查 MMU 角色
。
以下是攻擊步驟的簡化說明:
- 初始狀態:來賓虛擬機有一個 2MB 的頁面映射。KVM 為此映射建立了一個角色為
direct=1 的影子頁。
- PDE 修改:攻擊者在來賓內以 root 權限,修改頁目錄項,使其指向一個非葉節點頁面。這表示新的映射需要一個 4KB 的頁面,其角色為
direct=0。
- 角色錯配:當 KVM 的
kvm_mmu_get_child_sp() 尋找可重用的影子頁時,它找到了現有的影子頁,因為來賓頁框號碼相符。然而,它沒有比對 direct 角色。於是,原先角色為 direct=1 的影子頁被錯誤地用於現在需要 direct=0 的場景中 。