CVE-2026-31661Linux内核中的brcmsmac无线驱动程序存在一个安全漏洞,涉及DMA(直接内存访问)内存释放的大小不匹配问题。该漏洞源于`dma_alloc_coherent`函数在分配内存时可能会为了对齐而调整大小,并将实际分配的大小保存在`alloced`变量中。然而,在释放内存时,代码未能正确使用这个调整后的大小,导致`dma_free_coherent`被调用时使用了错误的参数。这种不匹配可能破坏内核内存管理,导致系统崩溃或拒绝服务。该漏洞需要本地低权限用户即可触发,主要影响系统的可用性。
该漏洞发生在Linux内核的Broadcom FullMAC WLAN驱动(brcmsmac)中。在处理DMA内存分配时,为了满足硬件的对齐要求,`dma_alloc_coherent`可能会扩展请求的缓冲区大小。驱动程序正确地将这个扩展后的实际大小存储在`alloced`变量中。然而,漏洞点在于内存释放路径,代码错误地回退到了原始请求的大小,而不是使用存储在`alloced`中的实际大小。当`dma_free_coherent`被调用并传入过小(或错误)的大小时,DMA映射子系统可能会尝试释放错误的内存页或破坏内存管理元数据。由于攻击向量为本地(AV:L)且权限要求较低(PR:L),本地攻击者可以通过特定的无线网络操作(如频繁触发接口状态变更)来利用此漏洞,导致内核恐慌或系统不稳定。虽然CVSS评分显示机密性和完整性影响为无,但内核内存破坏本质上具有不稳定性。