CVE-2026-43481Linux内核net-shapers组件存在一个双重释放漏洞。该漏洞源于`net_shaper_nl_get_doit`及`net_shaper_nl_cap_get_doit`函数的错误处理逻辑。当`genlmsg_reply()`返回失败时,代码错误地跳转至`free_msg`标签并调用`nlmsg_free()`释放skb。然而,`genlmsg_reply()`内部已将skb所有权移交给netlink,后者会处理释放。这导致同一skb被重复释放,可能引发内核崩溃或本地权限提升。
该漏洞发生在Linux内核的netlink子系统中,涉及`net-shapers`模块的Netlink命令处理函数。正常情况下,`genlmsg_reply()`函数负责将消息发送给用户空间,它内部调用`netlink_unicast()`。在`netlink_unicast()`的所有返回路径中,无论是成功入队还是出错,该函数都会消耗(释放)传入的skb缓冲区。问题代码在`net_shaper_nl_get_doit`和`net_shaper_nl_cap_get_doit`中,当`genlmsg_reply()`返回错误码时,代码跳转到`free_msg`标签执行`nlmsg_free(msg)`。由于此时msg所指的内存已经被`netlink_unicast()`释放,再次释放会导致Double Free。攻击者可利用此内存破坏,通过本地低权限账户触发漏洞,构造特定数据覆盖内核对象,从而可能导致拒绝服务或潜在的本地提权。