CVE-2026-31581Linux内核ALSA子系统的6fire驱动程序中存在一个释放后重用漏洞。当USB设备断开连接时,如果在没有文件句柄打开的情况下调用snd_card_free_when_closed(),会导致card和chip结构体被同步释放。随后代码尝试访问已释放的内存,可能导致系统崩溃或权限提升。
该漏洞源于Linux内核sound/usb/6fire/chip.c驱动程序的错误处理逻辑。在usb6fire_chip_abort()函数中,如果snd_card_free_when_closed()被调用且没有打开的文件句柄,card及其嵌入的chip结构体会被立即释放。然而,函数随后执行了chip->card = NULL的操作,这是一个典型的释放后重用(UAF)场景。攻击者可通过物理断开或触发USB设备的逻辑断开连接来利用此漏洞。由于内核内存被错误访问,可能导致内核崩溃,或在特定条件下实现本地权限提升。修复方案将释放逻辑移至disconnect函数中,并确保在释放前停止URB传输。