CVE-2026-53359,代號「Januscape」,係一個存在於Linux核心KVM (Kernel-based Virtual Machine) x86 shadow MMU(記憶體管理單元)嘅高風險use-after-free漏洞。佢容許有root權限嘅Guest VM攻擊者破壞主機核心記憶體,甚至有機會逃脫VM隔離。呢個漏洞由kernel 2.6.36版本(2010年8月發布)開始潛伏咗成16年,直到2026年7月先被公開並修補 ![]()
。
Januscape點樣運作?Shadow MMU角色錯配嘅陷阱
漏洞嘅根源喺shadow MMU嘅程式碼路徑,特別係kvm_mmu_get_child_sp()呢個函數。呢個函數原本嘅設計係當Guest修改頁表嗰陣,重用現有嘅shadow頁表項目(SPTE)。但關鍵嘅缺陷係,佢決定係咪重用一個shadow page嘅時候,只係檢查咗客體幀號(GFN),完全冇檢查MMU角色
。
簡單嚟講,攻擊步驟如下:
- 初始狀態: Guest VM入面有個2MB嘅頁面映射。KVM為咗呢個映射建立咗一個
direct=1角色嘅shadow page。
- PDE修改: 有root權限嘅攻擊者喺Guest入面,將一個頁目錄項目(PDE)改咗,令佢指向一個非葉節點(leaf page)嘅頁面。咁樣新嘅映射就需要一個4KB嘅頁面,呢個頁面嘅角色係
direct=0。
- 角色錯配: 當KVM嘅
kvm_mmu_get_child_sp()搵緊可以重用嘅shadow page嗰陣,因為GFN吻合,佢就搵到咗舊嗰個shadow page。但佢冇比對個direct角色。結果,舊嗰個direct=1嘅shadow page就被錯誤咁重用咗喺需要嘅新環境入面 。