CVE-2026-80693 in Linux
摘要
由 VulDB • 2026-08-28
在 Linux 内核中,已修复以下漏洞:
idpf: 将中断向量寄存器填充限制为分配的数组范围
`idpf_get_reg_intr_vecs()` 函数从 `adapter->req_vec_chunks` 中的 VIRTCHNL2_OP_ALLOC_VECTORS 回复中填充调用者分配的 `reg_vals[]` 数组,但其内层循环仅受每个块(chunk)的 `num_vectors` 限制。该数组的大小是单独确定的:`idpf_intr_reg_init()` 从 `caps.num_allocated_vectors` 分配 `kzalloc_objs(struct idpf_vec_regs, total_vecs)`,并且仅在填充完成后检查返回的数量。各个块的 `num_vectors` 之和从未与 `total_vecs` 进行核对,因此,如果回复中的 `num_allocated_vectors` 较小但各块总和较高,则会导致写入超出 `reg_vals[]` 数组的边界。
影响:控制平面(如 PF 或 hypervisor 设备模型)返回一个 VIRTCHNL2_OP_ALLOC_VECTORS 回复,其每个块的 `num_vectors` 之和超过 `num_allocated_vectors`,这将导致向 `struct idpf_vec_regs` 条目写入超出 `reg_vals` kmalloc 分配的范围(KASAN slab-out-of-bounds write)。
将填充循环限制为调用者传入的数组容量,以镜像兄弟函数 `idpf_vport_get_q_reg()`。现有的 `num_regs < num_vecs` 检查随后会拒绝尺寸不足的回复,从而避免发生越界写入。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.