CVE-2026-23281Linux内核中的libertas WiFi驱动程序存在释放后重用漏洞。在lbs_free_adapter()函数中,使用了timer_delete()来删除定时器,但该函数是非同步的,不会等待正在运行的回调函数结束。如果在定时器回调执行期间调用lbs_free_adapter(),lbs_cfg_free()会立即释放包含定时器结构体的内存,导致回调函数访问已释放的内存,引发UAF漏洞。该漏洞可能导致本地低权限用户提升权限或导致系统崩溃。
该漏洞源于Linux内核libertas驱动在清理适配器结构体时的竞态条件。lbs_free_adapter()函数负责释放资源,它调用了timer_delete()来停止command_timer和tx_lockup_timer。然而,timer_delete()仅将定时器从内核队列中移除,并不保证当前正在执行的回调函数(如lbs_cmd_timeout_handler或lbs_tx_lockup_handler)已经完成。当这些回调函数仍在执行时,lbs_cfg_free()紧接着释放了私有结构体(priv)。由于回调函数内部会访问priv->driver_lock、priv->cur_cmd和priv->dev等成员,此时访问已释放的内存会导致内核崩溃或潜在的代码执行。漏洞引入于提交8f641d93c38a,当时使用了del_timer()而非del_timer_sync()。攻击者需要本地低权限访问权限,通过特定的操作触发定时器回调与释放流程的竞争,从而利用此漏洞。