CVE-2026-31663Linux内核的xfrm子系统中存在一个释放后重用漏洞。在异步加密操作完成后,xfrm_input_resume()函数在数据包到达transport_finish之前过早地调用了dev_put()来释放设备引用。然而,随后的NF_HOOK及其回调函数中仍会使用skb->dev指针。这种时序错误导致在设备拆卸期间存在竞态条件,本地攻击者可利用此漏洞导致系统崩溃或权限提升,严重影响系统的机密性、完整性和可用性。
该漏洞的核心问题在于Linux内核IPsec框架对网络设备引用计数的生命周期管理不当。具体流程中,当异步加密完成并调用xfrm_input_resume()时,代码立即释放了skb->dev的引用计数。此时,数据包尚未经过transport_finish中的Netfilter钩子(NF_HOOK)处理。如果在释放引用和NF_HOOK调用之间发生设备注销操作,skb->dev指向的内存将被释放。由于NF_HOOK逻辑及其okfn回调函数仍尝试访问该指针,从而触发了释放后重用(UAF)。攻击者可通过构造特定的网络流量触发该竞态条件,导致内核空指针解引用或执行任意代码。