Linux 内核修复的提交为 2abd5287f083("KVM: x86: Check for invalid/obsolete root after making MMU pages available") 有需要可按需修复内核
一、概述
Zapscape(CVE-2026-64561)是安全研究员 Hyunwoo Kim 披露的 KVM Escape 三部曲 中的第三个漏洞,前两个分别是:
- ITScape(CVE-2026-46316)
- Januscape(CVE-2026-53359)
Zapscape 是一个存在于 KVM/x86 shadow MMU 模拟中的 use-after-free 漏洞,具体位于 shadow page 被回收时执行的递归 zap 路径中。仅凭客户机(guest)侧的操作,攻击者即可破坏宿主机内核的 shadow page,从而威胁那些接受不受信任客户机、并开放嵌套虚拟化的 KVM/x86 宿主机——尤其是多租户 x86 公有云环境。
漏洞已完成向 linux-distros 邮件列表的协调披露流程,embargo 期结束后正式在 oss-security 公开。
二、影响范围
项目 |
内容 |
|---|
受影响内核 |
自 2020-07-08 提交 f95eec9bed76 至 2026-07-21 提交 2abd5287f083,跨度约 6 年 |
CPU 架构 |
AMD(SVM/NPT)与 Intel 均受影响,触发条件略有差异 |
Intel 特殊条件 |
仅当 L1 客户机同时被暴露 EPT page walk length 4 和 5 时才可触发,与 Januscape 不同,这点在评估实际受影响范围时需特别注意 |
触发层级 |
独立于 QEMU 模拟层,发生在 in-kernel KVM,因此自研虚拟化栈的公有云同样受威胁 |
三、危害等级
1. KVM 逃逸(Guest-to-Host Escape)
攻击者仅需在自己租用的 VM 内执行客户机侧操作,即可危及运行该 VM 的宿主机:
- 触发宿主内核 panic,导致同一物理机上其他租户 VM 全部宕机(DoS)
- 以宿主内核 root 权限执行任意代码,接管宿主机及其上所有客户机(RCE)
2. 本地提权(LPE)
在 /dev/kvm 权限为 0666(全局可写)的发行版(如 RHEL 系)上,非特权本地用户也可利用该漏洞提权至 root。由于此时可直接调用宿主侧 VMM ioctl,利用难度和稳定性均优于跨虚拟机场景。
3. 前置条件
利用需要 L1(客户机)内核权限。公有云租户通常默认拥有自己 VM 的 root 权限,因此该条件天然满足;若无 guest root,需配合 LPE(如作者此前披露的 Dirty Frag)组合利用。
四、与 Januscape 的关系
两者根源于同一 shadow MMU 子系统,但属于不同根因的独立漏洞。核心区别在于 Intel 平台上的触发条件(EPT page walk length 4/5 同时暴露)不同,评估资产是否受影响时需分别核实。
五、缓解建议
- 优先检查内核版本:确认宿主机内核是否落在 2020-07-08 至 2026-07-21 提交区间内,尽快应用上游/发行版补丁。
- 限制
/dev/kvm 权限:避免全局可写,降低本地提权利用面。
- 审查嵌套虚拟化暴露面:如非必要,不要向客户机暴露嵌套虚拟化特性,尤其是 Intel 平台的 EPT page walk level 5。
- 多租户场景加固:公有云/主机商应建立常态化的 hypervisor 补丁跟踪与快速响应流程。
作者原话总结得很贴切:"Winter is coming." —— KVM 类虚拟化逃逸漏洞看起来会持续出现,运维侧的可持续补丁流程比一次性修复更重要。
六、参考链接
- 项目仓库与技术细节文档:https://github.com/V4bel/Zapscape
- 技术 write-up:https://github.com/V4bel/Zapscape/blob/main/assets/write-up.md
- 前作 Januscape:https://github.com/V4bel/Januscape
- 前作 ITScape:https://github.com/V4bel/ITScape