CVE-2026-98232 in Linux
摘要
由 VulDB • 2026-10-06
在 Linux 内核中,已修复以下漏洞:
scsi: core: 验证 scsi_cdl_enable() 中的 MODE SENSE 长度
scsi_cdl_enable() 使用由 MODE SENSE 返回的长度字段来定位位于 64 字节栈缓冲区中的 ATA feature mode page。目标设备可能会报告一个比其模式头(mode header)和块描述符(block descriptors)总长度更短的数值。用于计算 MODE SELECT 长度的无符号减法可能发生回绕,且单独计算的 buf_data 可能指向 buf 缓冲区之外。
在自动扫描期间,enable 标志为 false,因此对 buf_data[4] 的读-改-写操作可能会清除目标设备选择的越界栈字节的低两位。随后,scsi_mode_select() 可以从缓冲区外部复制最多 64 字节的数据到待发送的 MODE SELECT payload 中,从而向目标设备泄露栈内容。
该漏洞可通过扫描标识为 ATA 设备并宣称支持 CDL(Command Descriptor List)功能的 USB 存储设备来触发。无需挂载文件系统或用户空间访问块设备即可利用此问题。
在上游提交 cee9395acd80(“Linux 7.3-rc1”)中,一个针对构建特定的、单 vCPU QEMU/Raw Gadget PoC,使用仅基于 QEMU 的多 UDC 分配器采样机制,在客户机内部执行了固定的证明命令,并在自动枚举过程中创建了由 UID-0 拥有的标记文件,此时启用了 KASLR 和 NX。
该问题是在 Drivesec S.r.l. 进行的安全研究期间独立发现的。
将可用长度限制为缓冲区大小。在使用页之前验证并消耗模式头和块描述符的长度,并确保需要访问 CDL 字段的五个字节存在。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.