CVE-2026-43167Linux内核中的xfrm(IPsec)模块存在一个引用计数泄露漏洞,导致本地低权限用户可能触发拒绝服务攻击。该漏洞源于在处理网络设备注销(NETDEV_UNREGISTER)事件时,未能正确释放先前通过硬件卸载API获取的net_device引用。具体表现为,当设备在添加了xfrm状态后更改其硬件卸载特性并注销时,引用计数无法归零,导致设备资源永久占用,进而引发系统资源耗尽或网络功能瘫痪。
该漏洞位于Linux内核的net/xfrm/xfrm_device.c文件中。问题起因是提交d77e38e612a0在实现IPsec硬件卸载API时,将xfrm_dev_unregister()函数置为空操作,而xfrm_dev_state_add()函数在构造xfrm状态时会获取对net_device的引用。尽管后续提交03891f820c21试图处理NETDEV_UNREGISTER事件,但它错误地与NETDEV_DOWN事件共享了处理逻辑,未能覆盖在状态添加后关闭硬件卸载特性的场景。攻击者可以通过创建netdevsim设备,添加带有esp-hw-offload的xfrm状态(此时增加引用计数),随后关闭该硬件卸载特性,最后删除设备。这一操作序列将触发引用泄露,导致unregister_netdevice等待设备释放而挂起,从而实现拒绝服务。