漏洞概述 标题: viorstor: Fix buffer overrun in unmap code #1504 类型: 缓冲区溢出漏洞 位置: 函数 根本原因 1. 数组固定为16个描述符,但 未验证写入数组的描述符数量 2. 来自用户缓冲区且从未验证,可能超过宣告的最大值(256) 3. 攻击者可通过发送包含1024个描述符的unmap请求触发越界写入,导致立即BSOD(蓝屏死机) --- 影响范围 受影响组件: QEMU/KVM Windows 客户机驱动(virtio-blk) 最大理论风险: 支持最多256个段( ),远超实际可放入数组的16个 实际限制: QEMU的virtio-blk实现目前仅宣告支持1个段 --- 修复方案 关键变更 代码审查要点 验证用户缓冲区大小足够安全访问 将 数组移至 结构(解决异步DMA操作的竞态条件) 为每个请求提供独立缓冲区 代码片段(DMA重映射相关) > 维护者备注: "yet another place to change when enabling DMA remapping" — 启用DMA重映射时需同步修改 --- 状态 合并时间: 2024年2月2日 合并者: YanVugenfirer 审查者: kostyanf14(批准)、gemini-code-assist(AI辅助审查) CI状态: 11项检查通过