CVE-2026-64293 in Linux信息

摘要

由 VulDB • 2026-07-25

在 Linux 内核中,已修复以下漏洞:

iommufd: 在 veventq read 中使用 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 字节的负载复制到用户空间,从而写入超出用户提供的缓冲区范围。

此外,对于未来在 64 位系统上将 struct iommufd_vevent_header 扩展到大于 sizeof(void *) 的情况,这也是一个潜在漏洞;检查不应依赖于类型碰巧与主机指针宽度匹配这一事实。

使用 sizeof(*hdr) 以匹配函数的其余部分以及实际将要复制的数据量。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

来源

Do you want to use VulDB in your project?

Use the official API to access entries easily!