文章总结: LinuxKVM管理程序存在一个16年的释放后使用漏洞CVE-2026-53359,名为Januscape,允许客户虚拟机逃逸至宿主机。该漏洞影响Intel和AMD芯片,位于影子MMU代码中,通过混淆页表类型实现。修复方案是添加检查条件确保帧号和角色都匹配。建议立即打补丁或禁用嵌套虚拟化以降低风险。 综合评分: 89 文章分类: 漏洞分析,威胁情报,应急响应,安全工具,解决方案
已存在16年的 Linux KVM 漏洞可导致从客户虚拟机逃逸至宿主机
Swati Khandelwal Swati Khandelwal
代码卫士
2026年7月7日 17:22 北京
在小说阅读器读本章
去阅读
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
Linux的 KVM 管理程序中存在一个被称为 “Januscape” 的释放后使用 (UAF) 漏洞 (CVE-2026-53359),可从客户虚拟机触发,破坏运行它的宿主机内核的影子页表状态。
该漏洞由研究员 Hyunwoo Kim 发现并报送,位于 KVM 在 Intel 和 AMD 芯片上共用的影子 MMU 代码中。公开的概念验证可导致宿主机内核崩溃;Kim表示,另有一份未公开的利用代码可将该漏洞转化为完整的宿主机代码执行。他表示据公开资料所知,该漏洞是首个均可在 Intel 和 AMD 上触发的客户机到宿主机逃逸漏洞。该漏洞已存在约16年。
Kim 表示,该漏洞曾作为0day漏洞提交至 Google 的 kvmCTF计划。该计划是受控的 KVM 漏洞奖励计划,为完整的客户机到宿主机逃逸提供最高 25 万美元的奖金。
漏洞的工作原理
为了运行虚拟机,KVM 维护着自己的一套私有页表,这些页表映射客户机的内存布局。当它需要其中一个跟踪页时,会寻找一个已有的页来复用。问题在于,它仅通过内存地址匹配,而忽略了所抓取跟踪页的类型。两种不同类型的页可能拥有相同地址,但功能完全不同,因此 KVM 有时会复用错误类型的页。
这种混淆打乱了 KVM 内部记录(哪个页属于哪里),一旦记录出错,就必然产生问题。在大多数情况下,内核会察觉混乱并立即自行关闭,以避免造成损害。公开演示所触发的正是这种崩溃:一个客户机可以击垮整个宿主机,使该机器上的所有其它虚拟机一同宕机。
更罕见也更严重的情况是,在内核清理之前,被释放的跟踪页又被分配用于其它用途。随后清理操作会向它不再拥有的内存写入一个值。攻击者只能控制写入的位置,而无法控制写入的内容,但即便是如此有限的立足点,也能被逐步利用,最终在宿主机上执行代码。
该漏洞在 Intel 和 AMD 芯片上的表现相同;只有最后最困难的转化为完全控制的步骤,在两种芯片上需要不同的操作。
受影响范围
该漏洞代码自 2010 年 8 月的提交 2032a93d66fa(内核 2.6.36 时代)起就已存在,并由于 2026 年 6 月 19 日合并到主线的提交 81ccda30b4e8 修复。
该攻击需要客户机侧具备两个条件:VM 内部的 root 权限(在租用的云实例中是常见情况),以及宿主机暴露的嵌套虚拟化功能。即使宿主机默认启用硬件 EPT 或 NPT,嵌套虚拟化也会强制 KVM 回到传统的影子 MMU,而这正是漏洞所在之处。该漏洞利用不需要 QEMU 或任何用户态 VMM 的配合,纯粹是内核内 KVM 的漏洞。
该漏洞的实际风险是任何启用了嵌套虚拟化且承载不可信客户机的 x86 环境。攻击者只需租用一个这样的实例,就能使宿主机崩溃,从而导致同一物理机上的所有其它租户虚拟机宕机。
Kim 表示,未被公开的完整利用代码可在宿主机上以 root 权限运行代码,这将使同一宿主机上的其它客户机暴露于该 root 访问之下。在 RHEL 等发行版中,/dev/kvm 为全局可写(0666),Kim 指出该漏洞同样可作为本地提权至 root 的途径,但客户机到宿主机路径的影响更为严重。
这是Kim 在大约两个月的时间中披露的第三个 Linux 内核利用。2026年5月,他披露了页面缓存写入漏洞链Dirty Frag(CVE-2026-43284/CVE-2026-43500)。六月份,他发布了首个公开演示的在 KVM/arm64 上的客户机到宿主机逃逸漏洞ITScape (CVE-2026-46316)。另外,谷歌专门为 KVM 设计的计划 kvmCTF 还在今年5月份修复了另外一个 KVM x86 影子页释放后使用漏洞CVE-2026-46113。也就是说在大约两个月的时间里,同样的遗留代码路径中出现了两个影子 MMU 释放后使用漏洞。
应对措施
该漏洞的修复方案是在 kvm_mmu_get_child_sp() 中添加一行代码:重用条件现在会同时检查 role.word 和 gfn,因此只有当帧号和角色都匹配时才会重用影子页。KVM 维护者 Paolo Bonzini 编写了该补丁。
已修复的稳定版本于 2026 年 7 月 4 日发布:7.1.3、6.18.38、6.12.95、6.6.144、6.1.177、5.15.211 和 5.10.260。下游发行版按各自计划向后移植,因此应根据厂商的追踪确认状态,而非仅依赖于上游版本号。NVD 尚未分配 CVSS 评分,不过SUSE 的评级为8.8 (v3.1)/9.3 (v4.0)。
如果用户运营的 x86 KVM 宿主机接受多租户客户机并启用了嵌套虚拟化,应确认内核包含提交 81ccda30b4e8。发行版的后向移植可能以不同版本号携带修复,因此应检查软件包变更日志,而不仅仅依赖 uname -r。
- Debian:在 DSA-6381-1(7 月 5 日)中针对 testing/trixie(linux 6.12.95-1)和 unstable/sid(7.1.3-1)修复。稳定版(bookworm)和旧稳定版(bullseye)仍存在漏洞,修复待定。
- SUSE / openSUSE:评级为“重要”。大多数 SUSE Linux Enterprise 15 SP7 和 Leap 产品状态为待定,内核更新在 QA 中尚未发布。一旦发布,应通过 zypper patch 应用。
- AlmaLinux、Rocky Linux、Oracle Linux:这些发行版从 RHEL 重建并追踪其内核勘误;预计公告将跟随相应的 Red Hat 更新。
- Red Hat:各产品状态及 RHSA(一旦发布)请参见 Red Hat CVE 页面。
- Ubuntu:Canonical 的各版本状态请参见 Ubuntu CVE 追踪器。
如果无法立即打补丁,禁用嵌套虚拟化(kvm_intel.nested=0 或 kvm_amd.nested=0)可消除不可信客户机的攻击路径。ARM64 宿主机不受 Januscape 影响;ITScape(CVE-2026-46316)是另一个独立的 KVM/arm64 问题。
公开的 PoC 演示了从客户机(通过一个可加载内核模块,经过数秒到数分钟的竞争)可靠地使宿主机崩溃。用户应将暴露的、启用了嵌套虚拟化的 x86 KVM 宿主机视为高优先级补丁目标。
开源卫士试用地址:https://oss.qianxin.com/#/login
代码卫士试用地址:https://sast.qianxin.com/#/login
推荐阅读
Bad Epoll:Linux 内核新漏洞,导致低权限用户获得 root 权限
DirtyClone: Linux 内核新漏洞,通过克隆的数据包获得根权限
400多个Arch Linux 包受陷,用于推送 rootkit、信息窃取器
一个字符引起的 Linux Kernel 漏洞可导致本地 root 访问
已存在9年的 Linux Kernel 漏洞可导致执行 root 命令
原文链接
https://thehackernews.com/2026/07/16-year-old-linux-kvm-flaw-lets-guest.html
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 “赞” 吧~
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:代码卫士 Swati Khandelwal Swati Khandelwal《已存在16年的 Linux KVM 漏洞可导致从客户虚拟机逃逸至宿主机》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论