CVE-2026-31787
xen/privcmd:修复通过 VMA 拆分导致的重复释放
- 已发布
- 2026年4月30日
- 已更新
- 2026年6月14日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年9月4日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H低 · 未来 30 天
- 百分位
- 8.2%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,已解决以下漏洞:xen/privcmd:修复通过 VMA 拆分导致的重复释放问题 privcmd_vm_ops 定义了 .close(privcmd_close),但既未定义 .may_split 也未定义 .open。当用户空间对 privcmd 映射执行部分 munmap() 时,内核会通过 __split_vma() 拆分该 VMA。由于 may_split 为 NULL,拆分被允许。vm_area_dup() 会将 vm_private_data(一个在 alloc_empty_pages() 中分配的 pages 数组)复制到新的 VMA 中,且不进行任何修正,因为没有 .open 回调。两个 VMA 现在指向同一个 pages 数组。当未映射的部分被关闭时,privcmd_close() 会调用: - xen_unmap_domain_gfn_range() - xen_free_unpopulated_pages() - kvfree(pages) 存活的 VMA 仍然持有悬空指针。当它随后被销毁时,相同的序列会再次执行,从而导致重复释放。通过添加一个拒绝 VMA 拆分的 .may_split 回调来修复此问题。这是 XSA-487 / CVE-2026-31787。
来源
1Linux 内核中 Xen privcmd 驱动存在双重释放漏洞
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。