CVE-2025-40251CVE-2025-40251是Linux内核中devlink rate子系统的安全漏洞,CVSS评分5.5,属于中等严重程度。该漏洞存在于devl_rate_nodes_destroy函数中,该函数本应"取消设置所有rate对象的父指针",但在实现时仅调用了driver-specific的rate_leaf_parent_set或rate_node_parent_set ops并递减父节点的refcount,而未能将devlink_rate->parent指针实际设置为NULL。这导致在devlink_rate结构体中留下悬空指针(dangling pointer),在netdevsim和mlx5驱动中触发refcount错误,造成内存泄漏。该漏洞为本地攻击,攻击者需要低权限即可利用,无需用户交互即可触发。
漏洞根源在于Linux内核net/core/devlink.c中的devl_rate_nodes_destroy函数。当销毁rate节点时,该函数负责"取消设置所有rate对象的父指针",但实际代码流程存在缺陷:1) 函数调用driver-specific ops (rate_leaf_parent_set或rate_node_parent_set) 2) 递减父节点refcount 3) 但未将devlink_rate->parent设置为NULL。这与devlink_nl_rate_parent_node_set函数的正确行为不一致,后者会正确清除父指针。悬空指针导致的问题:1) 当设备被卸载时,refcount重复递减触发refcount_warn_saturate警告 2) 内存泄漏 3) 可能导致use-after-free。攻击者可通过创建netdevsim或mlx5设备,设置父子rate关系后删除设备来触发此漏洞。