重要/漏洞:QEMUtiny:QEMU CXL Type-3 设备仿真存在可被利用的越界读写漏洞链

漏洞编号: 暂无公开 CVE / PoC 名称:QEMUtiny
重要等级: 需要关注的(虚拟机逃逸风险)
CVSS 分数:

影响范围:
受影响组件:QEMU CXL Type-3 设备仿真模块
受影响代码路径:hw/cxl/cxl-mailbox-utils.c
受影响功能:CXL mailbox 相关命令处理逻辑


主要受影响配置:
启用了 CXL 支持的 QEMU 实例;
向 guest 暴露了 cxl-type3 设备;
guest 内攻击者具备 root 权限或可访问 PCI config / CXL BAR / mailbox MMIO 的等效能力。PoC README 明确说明复现程序需要在 guest 内以 root 运行,因为需要写 PCI config space 并通过 sysfs mmap CXL 设备 BAR。

注意: 仅安装 QEMU 但未运行相关虚拟机;普通 QEMU 虚拟机未启用 CXL / 未配置 cxl-type3;QEMU user-mode emulation;物理 CXL 硬件本身通常不受影响。

漏洞原理:
该漏洞链出现在 QEMU CXL Type-3 设备仿真的 mailbox 处理逻辑中。CXL Type-3 设备在 QEMU 中用于模拟接入 CXL host 的内存设备,CXL 设备会通过 PCIe 相关接口和 BAR-mapped memory 访问寄存器与 mailbox。

漏洞链由两个核心缺陷组成:

1. GET_LOG 越界读
cmd_logs_get_log() 在处理 CEL log offset 时,边界检查按“字节偏移”理解,但实际 memmove() 源地址表达式中把该 offset 用在结构体指针运算上,导致可读取 CEL buffer 之外的相邻 QEMU 进程内存。PoC README 将其描述为 CXL mailbox GET_LOG 路径中的 out-of-bounds read。

2. SET_FEATURE 越界写
cmd_features_set_feature() 接受写入多个 feature write-attribute 结构的 offset,但部分 PPR / sparing 路径缺少 offset + bytes_to_copy 是否仍在目标结构体内的完整边界检查。PoC README 指出受影响路径包括 soft_ppr_wr_attrs、hard_ppr_wr_attrs、cacheline_sparing_wr_attrs、row_sparing_wr_attrs、bank_sparing_wr_attrs、rank_sparing_wr_attrs。

攻击者在满足前置条件后,可先利用越界读泄露 QEMU 进程地址信息,再利用越界写破坏 CXL Type-3 设备对象后续字段,最终通过 QEMU 内部 memory dispatch / sanitize 路径触发受控回调。本频道在实际复现后发现最终权限等同于运行 QEMU 的宿主进程权限,同时结合先前的内核漏洞攻击者可以获取root权限。

注意:
该漏洞依赖特定 QEMU 构建和宿主 libc 布局偏移, 目标 VM 需要暴露 CXL Type-3 设备、guest 内具备较高权限。

受影响组件:
QEMU Backend / CXL Type-3 device emulation

具体路径:
hw/cxl/cxl-mailbox-utils.c
CXL mailbox LOGS / GET_LOG
CXL mailbox FEATURES / SET_FEATURE
CXL mailbox MEDIA_OPERATIONS / SANITIZE 相关触发路径


受影响对象:
启用 cxl=on 的 QEMU 实例
配置了 cxl-type3 的虚拟机
将 CXL mailbox BAR 暴露给不可信 guest 的测试、云平台、CI/fuzzing 或研发环境


处置建议:
1. 排查生产和测试环境中的 QEMU 启动参数,重点确认是否存在 cxl=oncxl-type3pxb-cxlcxl-rp 等配置。
2. 不要向不可信 guest 暴露 QEMU CXL Type-3 设备。
3. 临时禁用 CXL Type-3 emulation,或仅在隔离实验环境中使用。


参考链接:Github
 
 
Back to Top