CVE-2026-53360
KVM: SEV: 使用 GHCB v2+ 时需要 GHCB 内的暂存区
- 已发布
- 2026年7月4日
- 已更新
- 2026年8月5日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年8月8日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H低 · 未来 30 天
- 百分位
- 15.8%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,以下漏洞已被修复:KVM: SEV: 如果使用 GHCB v2+,则要求将 scratch 区域放在 GHCB 内 根据 GHCB 规范,当使用 GHCB v2+ 时,要求软件 scratch 区域位于 GHCB 的共享缓冲区中。请注意,Page State Change (PSC) 等请求_依赖_此行为,因为客户机在发出请求时无法提供长度,即客户机有效负载的大小受共享缓冲区大小的限制。如果未能强制使用 GHCB,再加上一系列其他缺陷,恶意 SNP 客户机便可破坏主机内核堆内存,并泄露主机堆布局信息。setup_vmgexit_scratch() 通过 kvzalloc(exit_info_2) 分配缓冲区,其中 exit_info_2 由客户机控制。当 exit_info_2=24 时,会在 kmalloc-cg-32(32 字节 slab 对象)中产生一个 24 字节的分配。该缓冲区包含一个 8 字节的 psc_hdr,后跟 8 字节的 psc_entry 结构体,因此只有 entries[0] 和 entries[1] 在边界内。snp_begin_psc() 会根据 VMGEXIT_PSC_MAX_COUNT (253) 验证 end_entry,但不会根据实际缓冲区大小进行验证: idx_end = hdr->end_entry; if (idx_end >= VMGEXIT_PSC_MAX_COUNT) { // checks 253, not buffer snp_complete_psc(svm, ...); return 1; } for (idx = idx_start; idx <= idx_end; idx++) { entry_start = entries[idx]; // OOB when idx >= 2 客户机将 end_entry 设置为 10+,导致主机遍历 entries[2+],这些条目会越界访问相邻的 slab 对象。对于每个越界条目: - 主机读取 8 字节(越界读取 / 信息泄露预言机) - 如果数据通过 PSC 验证,__snp_complete_one_psc() 会将 cur_page = 1 或 512 写入该条目(越界写入,sev.c:3806) - 如果验证失败,错误响应会揭示相邻内存是零还是非零(向客户机泄露信息) 客户机可以控制分配大小(exit_info_2)、条目范围(cur_entry/end_entry),并且可以触发无限制的 VMGEXIT,以反复命中不同的 slab 位置。通过利用这一系列漏洞,恶意 SEV-SNP 客户机可以: - 越界读取相邻的 kmalloc-cg-32 对象(堆布局泄露) - 将 cur_page 位越界写入相邻对象(堆破坏) - 跨 VMGEXIT 触发释放后使用(use-after-free)条件 例如,启用 KASAN 后,仅对 PoC 客户机模块执行一次 insmod,就会产生 73 条 KASAN 报告: BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x126/0x890 Read of size 8 at addr ffff888219ffb5e0 by task qemu-system-x86/2199 BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x468/0x890 Write of size 8 at addr ffff888351566648 by task qemu-system-x86/2199 该出错地址属于位于 ffff888XXXXXXXXX 的对象,该对象属于大小为 32 的 kmalloc-cg-32 缓存。 该出错地址位于分配的 32 字节区域 [ffff888XXXXXXXXX, ffff888XXXXXXXXX) 右侧 N 字节处。 细分: 62 slab-out-of-bounds(读取 + 写入超出分配区域) 7 slab-use-after-free 4 use-after-free 这一切都要归功于 Stan,他提供了精彩的描述和复现程序! [sean: 编写变更日志]
来源
1PoC for CVE-2026-53360: guest-triggered heap out-of-bounds read/write in KVM SEV-SNP Page State Change (PSC) handling.
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。