CVE-2026-31504Linux内核net模块存在释放后重用漏洞。在packet_release()函数中,因未在持有bind_lock时将po->num置零,导致与NETDEV_UP事件产生竞争条件。攻击者可利用此逻辑漏洞在socket释放后将其重新注册到fanout组,留下悬空指针,从而引发系统崩溃或潜在权限提升。
该漏洞位于Linux内核的packet socket处理机制中。packet_release()在释放bind_lock之前未将po->num清零,造成了一个竞争窗口。此时若发生NETDEV_UP事件,packet_notifier会遍历sklist发现该socket,并调用__fanout_link将其重新加入fanout组的arr[]数组,并增加成员计数但未增加sk_ref。随后的fanout_release()清理过程会释放该内存,导致arr[]中存在悬垂指针。本地低权限攻击者通过精心构造并发操作,可触发UAF导致内核崩溃或执行任意代码。