
本文档描述了由 Hyunwoo Kim (@v4bel) 发现并报告的 Zapscape (CVE-2026-64561) 漏洞。这是一个 KVM 逃逸漏洞,允许客户机在 KVM/x86 环境中逃逸到宿主机,并以内核(root)权限在宿主机上执行命令。
Zapscape 是 KVM/x86 的影子 MMU(shadow MMU)模拟中的一个释放后使用(use-after-free)漏洞,具体位于回收影子页时运行的递归 zap 路径中。仅凭客户机侧的操作即可触发该漏洞,破坏宿主内核的影子页,从而威胁那些接受不受信任客户机并暴露嵌套虚拟化的 KVM/x86 宿主机(尤其是多租户 x86 公有云)的客户机-宿主机隔离。
详细技术信息请参见此处。
[!NOTE] 在向 [email protected] 报告此漏洞后,商定的保密期(embargo)已经结束,因此利用代码已发布到 oss-security,本文档(Zapscape 文档)也已公开。有关披露时间线,请参阅技术详情文档。
该 PoC 以 AMD 为攻击目标编写。为安全测试起见,建议在 QEMU TCG 下运行。PoC 结构如下。
L0: Linux 7.1.3 + KVM_AMD on an x86_64 CPU (AMD SVM/NPT) emulated by QEMU TCG. The escape target
└─ L1: the guest poc creates. Switching long -> PAE aliases one shadow page as both child and pinned root, and L1 then escalates the UAF into L0 kernel code-exec
└─ L2: the guest L1 VMRUNs. Its memory touches trigger L0's quota reclaim -> recursive zap with no root_count guard -> UAF
该 PoC 不是可在云环境中立即运行的武器化利用代码,而是在 QEMU TCG 之上重现漏洞及完整利用链的演示代码。要在真实云环境中使用,需要将 PoC 所执行的 L1 操作移入客户机内核模块,并根据宿主内核的 kconfig 移植利用代码。这并非难事。
# gcc -O2 -g -static -pthread poc.c -o poc
# ./qemu.sh bzImage initramfs.cpio.gz
/$$$$$$$$ /$$$$$$ /$$$$$$$
|_____ $$ /$$__ $$| $$__ $$
/$$/ | $$ \ $$| $$ \ $$
/$$/ | $$$$$$$$| $$$$$$$/
/$$/ | $$__ $$| $$____/
/$$/ | $$ | $$| $$
/$$$$$$$$| $$ | $$| $$
|________/|__/ |__/|__/
[+] /Zapscape created by the target KVM host kernel (owner uid=0, mode=0644).
[+] exploit completed - verify with: ls -la /Zapscape
zapscape(uid=65534)$ ls -la /Zapscape
-rw-r--r-- 1 root root 0 Jul 29 05:27 /Zapscape
zapscape(uid=65534)$
该 PoC 旨在提供准确的信息。请勿在未经授权测试的系统上使用它。
Zapscape (CVE-2026-64561) 影响范围从 f95eec9bed76 (2020-07-08) 到 2abd5287f083 (2026-07-21)。
与 Januscape (CVE-2026-53359) 相同:
/dev/kvm 是全局可写的(0666),因此非特权用户也可利用此漏洞进行本地提权以获取 root。当用作 LPE 时,宿主机侧的 VMM ioctl 可用,利用过程会变得更简单、更稳定。它发生在同一个影子 MMU 中,但属于根因不同的独立漏洞。
话虽如此,与 Januscape 不同,在 Intel 平台上,只有同时向 L1 暴露 EPT 页表遍历长度 4 和 5 时才能触发该漏洞。在评估受影响范围时这一点非常重要,必须准确理解。请参阅技术详情文档。
不会。与 Januscape 一样,它发生在内核态 KVM 中,因此在 QEMU 的模拟之外独立触发。正因如此,它同样可能威胁到那些自行实现并使用自有虚拟化栈的大型公有云。
需要。必须拥有 L1 内核权限。当你在公有云上分配到实例时,通常对自己的 VM 拥有 root 权限,因此这一条件可以得到满足。在没有客户机 root 的场景中,必须与 Dirty Frag 等 LPE 漏洞链式利用。
会。我建议为宿主机的虚拟化层建立可持续的补丁管理流程。凛冬将至。
希望不会。