IPBUF安全漏洞报告
English
CVE-2026-43466 CVSS 8.2 高危

CVE-2026-43466 Linux内核DMA FIFO去同步漏洞

披露日期: 2026-05-08
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-43466
漏洞类型
内存管理错误
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelDoSMemory Corruptionmlx5eDMA

漏洞概述

Linux内核的mlx5e驱动程序在处理TX错误CQE恢复流程时存在漏洞。函数`mlx5e_reset_txqsq_cc_pc`错误地仅重置了DMA FIFO的消费者计数器`dma_fifo_cc`为0,而未重置生产者计数器`dma_fifo_pc`。这导致DMA FIFO的生产者和消费者指针去同步,恢复后系统会取消映射恢复前的陈旧DMA地址,从而触发内核WARNING及潜在的拒绝服务。

技术细节

该漏洞位于Linux内核网络驱动程序(mlx5e)中。当网卡发生传输错误并产生错误CQE时,驱动程序会调用`mlx5e_reset_txqsq_cc_pc`进行恢复。该函数将`dma_fifo_cc`置0,但保留了`dma_fifo_pc`。由于DMA FIFO是软件结构,且WQEs已被刷新,两者本应相等。这种不同步导致在后续处理中,消费者从0开始读取,而生产者继续在旧位置写入,导致`iommu_dma_unmap_page`试图取消映射已失效的DMA地址。这会导致调用栈中的`WARN_ON`被触发,影响系统稳定性。

攻击链分析

STEP 1
1. 触发传输错误
攻击者向目标系统发送特制的网络数据包或制造网络拥塞,导致Mellanox网卡产生TX错误完成队列条目(CQE)。
STEP 2
2. 执行错误恢复
驱动程序检测到错误CQE,触发恢复流程,调用`mlx5e_reset_txqsq_cc_pc`函数。
STEP 3
3. 状态去同步
恢复函数仅重置`dma_fifo_cc`为0,而未重置`dma_fifo_pc`,导致DMA FIFO生产者和消费者状态不一致。
STEP 4
4. 错误解映射
恢复后的数据传输过程中,驱动程序尝试取消映射过期的DMA地址。
STEP 5
5. 系统异常
内核检测到无效的DMA解映射操作,输出WARNING警告,可能导致系统崩溃或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept: Trigger TX Error CQE to cause DMA FIFO desync. * Note: Requires Mellanox NIC and specific network conditions. */ // This is a conceptual representation of the bug. // Actual exploitation requires forcing a TX completion error. struct mlx5e_txqsq { u16 dma_fifo_cc; // Consumer counter u16 dma_fifo_pc; // Producer counter }; void vulnerable_recovery(struct mlx5e_txqsq *sq) { // Bug: Only resetting cc, not pc sq->dma_fifo_cc = 0; // sq->dma_fifo_pc remains unchanged -> Desync } // Result: Later unmaps use stale addresses.

影响范围

Linux Kernel < 6.13

防御指南

临时缓解措施
在应用补丁前,尽量减少系统网络负载以降低触发TX错误的概率,但这通常不是彻底的防御手段。

参考链接