CVE-2026-74580
vhost:在 vring 重新配置时重置 vring 元数据缓存
- 已发布
- 2026年8月21日
- 已更新
- 2026年10月16日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年10月19日
初级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 天
- 百分位
- 2.1%
- 型号日期
- 2026年10月23日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,以下漏洞已被修复:vhost:在 vring 重新配置时重置 vring 元数据缓存。vq->meta_iotlb[] 缓存了支撑每个 vring 元数据区域的 vhost_iotlb_map,而 iotlb_access_ok() 在缓存命中时会提前返回,将命中视为该区域已被验证的证据:if (vhost_vq_meta_fetch(vq, addr, len, type)) return true; 该缓存在 VHOST_IOTLB_UPDATE 和 VHOST_IOTLB_INVALIDATE 时、在设备 IOTLB(重新)初始化时以及在 vq 重置时会被重置,但在 VHOST_SET_VRING_ADDR 替换 vq->desc、vq->avail 和 vq->used 时不会重置,在 VHOST_SET_VRING_NUM 更改区域大小时也不会重置。在挂载了设备 IOTLB 的情况下,这两个 ioctl 在 vq 处于活动状态时都会被接受,且二者都不会在 ioctl 调用时验证地址:vq_access_ok() 和 vq_log_used_access_ok() 会提前返回 true,因为这些地址是 GIOVA,将验证推迟到预取时进行。一旦缓存被填充,该延迟验证便不再运行——vq_meta_prefetch() 命中过期条目并返回 true——而 vhost_vq_meta_fetch() 会继续通过旧映射以 map->addr + addr - map->start 的方式为映射已不再覆盖的地址进行转换。vhost_copy_to_user() 和 vhost_copy_from_user() 使用 __copy_to_user() 和 __copy_from_user() 消费该结果,而这两个函数也不会对其进行检查,因此后续的 used ring 更新或描述符获取会访问 IOTLB 实际映射区域之外的内存。每当 vring 被重新配置时重置元数据缓存,使新地址重新经过 iotlb_access_ok() 的慢速路径。
来源
针对已披露的 Linux 内核漏洞的概念验证 C 代码和详细分析,包括按 CVE 分类的漏洞利用源码和技术分析。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。