CVE-2026-31395Linux内核中的bnxt_en驱动程序存在严重的越界访问漏洞。该漏洞源于处理DBG_BUF_PRODUCER异步事件时,驱动程序直接使用了固件提供的未经验证的16位'type'字段作为数组索引。攻击者若能控制网卡(如恶意或受损的NIC),可发送特定值触发内核堆内存越界访问,导致系统崩溃或内存数据被破坏。
该漏洞位于Linux内核网络驱动 `bnxt_en` 的 `bnxt_async_event_process` 函数中。当驱动处理 `ASYNC_EVENT_CMPL_EVENT_ID_DBG_BUF_PRODUCER` 事件时,会从DMA映射的完成环内存中读取一个16位的 'type' 字段。由于代码未对该字段进行边界验证,直接将其作为索引访问 `bp->bs_trace[]` 数组,而该数组的大小远小于65535。随后,代码调用 `bnxt_bs_trace_check_wrap()`,该函数会解引用 `bs_trace->magic_byte` 并写入 `bs_trace->last_offset` 和 `bs_trace->wrapped`。因此,恶意或受损的网卡固件可以通过向主机内存写入任意0-65535的值,触发越界读写,导致内核堆内存损坏或系统崩溃。修复方案引入了 `BNXT_TRACE_MAX` 宏定义,并在使用 'type' 前添加了严格的边界检查。