CVE-2026-43016Linux内核中的bpf sockmap组件存在一个释放后重用(Use-After-Free)漏洞。该漏洞源于`sk_psock_verdict_data_ready()`函数在处理AF_UNIX套接字时,未能正确保护对等套接字的`sk->sk_socket`结构。在`unix_stream_sendmsg()`函数中,发送方在持有对等套接字引用计数的情况下释放了锁并调用`sk_data_ready()`,此时对等套接字仍可能经历`sock_orphan()`操作,导致`sk_socket`被释放。随后的访问触发了UAF,可能导致内核崩溃或权限提升。
该漏洞的根本原因是并发处理中的竞态条件。在Linux内核网络栈中,`unix_stream_sendmsg()`在发送数据时会调用对端socket的`sk_data_ready()`回调。虽然发送者持有对端`struct sock`的引用计数,防止了sock对象本身被释放,但并未阻止`sock_orphan()`的执行。`sock_orphan()`会释放`sock->sk_socket`指向的结构体,该结构体通常代表socket的inode。由于锁已被释放,在RCU宽限期后,`sk_socket`可能被内存回收。当`sk_psock_verdict_data_ready()`尝试读取`sk->sk_socket->ops`时,访问了已释放的内存(slab-use-after-free),从而引发KASAN报错。攻击者可利用此条件通过本地用户权限触发内核崩溃或执行任意代码。