CVE-2026-31579Linux内核WireGuard模块存在拒绝服务漏洞。由于`wg_netns_pre_exit`在pernet回调中手动获取`rtnl_lock`,若其他线程持有该锁将导致死锁。这使得cleanup_net工作队列无限期阻塞,造成系统任务挂起,严重影响系统的可用性与稳定性。
该漏洞源于Linux内核WireGuard模块在网络命名空间清理过程中的锁机制设计缺陷。具体而言,`wg_netns_pre_exit`函数在pernet的`.pre_exit`回调中手动调用`rtnl_lock()`。如果在执行过程中,另一个线程已经持有了`rtnl_mutex`互斥锁,负责清理网络命名空间的`cleanup_net`工作队列将会在`wg_netns_pre_exit`处陷入无限期等待,导致系统出现“hung task”和拒绝服务。修复方案将该逻辑迁移至`.exit_rtnl`回调,利用内核框架在执行回调时已持有RTNL锁的特性,避免了重复加锁引发的死锁风险,确保网络命名空间的顺利销毁。