以下是攻击的简化步骤说明:
direct=1。direct=0。kvm_mmu_get_child_sp() 寻找可复用的影子页面时,由于客户机帧号匹配,它找到了之前创建的影子页面。但是,代码未能比较 direct 角色。导致原本角色为 direct=1 的旧影子页面被错误地复用在需要 direct=0 角色的新上下文中 。sptep(影子页表项指针)在后续的反向映射遍历中(如脏页日志或MMU通知器无效化操作)仍被引用,从而引发了释放后使用状态 。CVE-2026-53359的后果相当严重,尤其是在多租户云环境中。
/dev/kvm 设备权限设置为全局可写(0666)的发行版上,本地非特权用户可以利用此漏洞实现可靠的本地权限提升 。一旦发现该缺陷,Linux内核社区迅速做出响应。修复补丁被提交至主线内核并反向移植到稳定内核,全部于2026年7月4日发布 。
81ccda30b4e83d8f5cc4fd50503c44e3a33abfeb 及其反向移植)增强了 kvm_mmu_get_child_sp() 中的校验逻辑。现在,在复用影子页面之前,要求客户机帧号和MMU角色两者都匹配,从而防止了导致释放后使用的角色不匹配问题 。虽然打补丁是唯一的终极解决方案,但管理员可以实施以下临时措施来降低攻击面:
/dev/kvm 访问: 为防止非特权的本地权限提升,应限制对KVM设备的访问。执行 chmod 660 /dev/kvm 命令更改权限,并只将受信任的用户添加到 kvm 用户组 。