NVD Recent CVEs

CVE-2026-64293:Linux内核中已修复以下漏洞:iommufd: 在veventq读取中使用sizeof(*hdr)而非sizeof(hdr)

Linux内核中已修复以下漏洞:iommufd: 在veventq读取中使用sizeof(*hdr)而非sizeof(hdr) iommufd_veventq_fops_read()中普通vEVENT路径的边界检查使用了sizeof(hdr),而周围代码使用的是sizeof(*hdr): if (!vevent_for_lost_events_header(cur) && sizeof(hdr) + cur->data_len > count - done) { hdr被声明为struct iommufd_vevent_header *类型,因此sizeof(hdr)求值为指针的大小。周围代码一致使用sizeof(*hdr): if (done >= count || sizeof(*hdr) > count - done) { ... if (copy_to_user(buf + done, hdr, sizeof(*hdr))) { ... done += sizeof(*hdr); struct iommufd_vevent_header目前为8字节(两个__u32字段,flags和sequence),因此在64位系统上(sizeof(void *) == 8)这两个表达式恰好相等,检查能按预期工作。在32位系统上(sizeof(void *) == 4),该检查会少计算4字节的头部:当vEVENT的data_len导致8 + cur->data_len超过count - done但4 + cur->data_len未超过时,检查会通过,然后循环会向用户空间复制8字节的头部和data_len字节的有效载荷,写入超出用户提供缓冲区的范围。这也是一个潜在漏洞,适用于struct iommufd_vevent_header未来在64位系统上扩展到超过sizeof(void *)的情况;该检查不应依赖类型恰好匹配主机指针宽度。修复方案是使用sizeof(*hdr)以与代码其余部分保持一致。

查看原始信源

English