CVE-2025-71097CVE-2025-71097是Linux内核中一个中等严重程度的资源泄露漏洞,位于IPv4网络协议的路由处理模块。该漏洞源于nexthop对象删除时,错误路由(如blackhole路由)未被正确刷新,导致引用计数泄露。当nexthop对象被删除时,系统会将其标记为dead状态并调用fib_table_flush()函数刷新使用该nexthop的所有路由。然而,当前的实现逻辑仅在网络命名空间销毁(flush_all=true)时才会刷新错误路由。因此,当nexthop对象被单独删除时,关联的错误路由不会被清除,继续持有对nexthop对象的引用,进而持有对nexthop设备的引用。这会导致设备无法正常注销,出现"waiting for device to become free"的错误提示。该漏洞影响本地低权限用户,可造成可用性下降(设备无法释放)。IPv6协议不受此问题影响。
该漏洞的技术根源在于fib_table_flush()函数的条件判断逻辑。当nexthop对象被删除时,系统调用fib_table_flush()并传入flush_all=false(表示非命名空间销毁场景),此时函数中的条件判断会跳过错误路由的刷新操作。具体问题流程如下:1) 用户创建dummy网络接口和nexthop对象;2) 通过nexthop ID创建普通路由和blackhole错误路由;3) 删除nexthop对象时,系统标记其为dead并刷新路由;4) 由于flush_all=false,错误路由未被刷新;5) 错误路由仍持有nexthop对象引用,nexthop对象持有设备引用;6) 删除设备时发现引用计数为2(应为0),导致unregister_netdevice()等待超时。修复方案是在nexthop被标记为dead时,同样刷新关联的错误路由,确保所有引用被正确释放。