CVE-2026-23343Linux内核XDP(eXpress Data Path)子系统中存在一处严重的内存损坏漏洞。该问题是由于部分以太网驱动程序将XDP接收队列的片段大小错误地报告为DMA写入大小,而非实际内存大小。在计算尾部空间时,这种差异导致负数结果被错误地转换为巨大的无符号整数,从而绕过了内核的错误检查机制。这可能导致内存损坏、系统崩溃或潜在的权限提升。
漏洞核心在于`bpf_xdp_frags_increase_tail()`函数对`rxq->frag_size`的依赖。许多驱动(如ixgbevf)将`frag_size`设置为DMA写入限制(例如3KB),而函数期望的是包含元数据的真实大小(例如4KB)。当数据包存在偏移且尝试扩展尾部时,计算公式`frag_size - data_len - offset`会产生负值。由于`tailroom`被定义为`unsigned int`,负数发生整数回绕,变成接近`UINT_MAX`的值。这使得内核误判有足够空间进行写入,导致越界操作,引发通用的内存损坏和内核错误。