Cloudanix VulnDB

CVE-2026-43016

High · 7.8

CVSS

7.8

EPSS

0.1%

Published

May 1, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A local user or compromised workload may be able to abuse a Linux kernel bug to crash the system or gain full control of it.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Privilege Gain
Component
OS kernel
Class
Use After Free
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This is a Linux kernel use-after-free in the BPF sockmap/sk_psock path. A local attacker can trigger a race involving AF_UNIX stream sockets, sockmap verdict handling, and socket orphaning so that sk_psock_verdict_data_ready() dereferences a freed sk->sk_socket pointer. Because the bug is in kernel memory handling, successful exploitation may lead to kernel memory corruption, system crash, or potentially local privilege escalation with kernel-level code execution, depending on exploit reliability and available hardening. Exploitation is local and requires low privileges, but practical reachability may depend on whether the attacker can use the relevant eBPF/BPF sockmap functionality, which is often restricted by CAP_BPF, CAP_NET_ADMIN, CAP_SYS_ADMIN, or the unprivileged BPF sysctl on hardened systems.

Why it matters to the business

A successful attack could allow a local user, compromised application, or containerized workload with sufficient kernel/BPF access to crash the host or gain elevated privileges on the underlying system. For multi-user Linux servers, container platforms, CI runners, and systems that permit unprivileged or broadly delegated BPF use, the operational risk is higher because compromise of a low-privileged process could become full host compromise. The vulnerability is not listed in CISA KEV, is not known to be used in ransomware campaigns, has very low EPSS, and has no known public exploit maturity in the provided data, so urgency should be driven primarily by kernel exposure, BPF policy, and the sensitivity of workloads rather than evidence of active widespread exploitation.

How an attack unfolds

An attacker first obtains local code execution as a low-privileged user or within a workload that can reach the necessary BPF sockmap functionality. They create AF_UNIX stream sockets, attach or interact with BPF sockmap/sk_psock verdict processing, and then manipulate socket lifetime by causing the peer socket to be orphaned or freed while another path still invokes sk_data_ready during unix_stream_sendmsg(). In the vulnerable kernel, sk_psock_verdict_data_ready() can read sk->sk_socket after it has been freed following an RCU grace period. An attacker then attempts to turn this stale pointer dereference into a controlled kernel memory corruption primitive. Less sophisticated attempts are likely to produce kernel warnings, KASAN reports, oopses, or host crashes; a reliable exploit could potentially escalate privileges to root or escape a container by executing code in kernel context.

How to fix it

Apply the Linux kernel update from the relevant distribution or kernel vendor that includes the fix for the BPF sockmap sk->sk_socket use-after-free in sk_psock_verdict_data_ready(). No exact fixed package versions were provided in the input, so track vendor advisories for the deployed kernel branches and upgrade to the first fixed kernel release or later. Because kernel updates normally require booting into the new kernel, schedule and verify a reboot after patch installation. As interim risk reduction, disable unprivileged BPF where operationally possible using kernel.unprivileged_bpf_disabled=1 or the vendor-supported equivalent, restrict CAP_BPF, CAP_NET_ADMIN, and CAP_SYS_ADMIN to only trusted workloads, avoid granting privileged containers unnecessary host capabilities, and use seccomp/AppArmor/SELinux/container runtime policy to reduce access to bpf(), socketpair(), and related high-risk kernel interfaces for untrusted code. These mitigations reduce exploitability but do not replace applying the kernel fix.

How to confirm the fix worked

Confirm the running kernel, not just the installed package, is fixed. Check uname -a and the distribution package metadata after reboot, then compare the running kernel build against the vendor advisory for this vulnerability. Validate that vulnerable older kernels are not still available as the default boot entry. Where source or build metadata is available, confirm the kernel contains the sockmap fix that fetches sk->sk_socket and socket ops under RCU in sk_psock_verdict_data_ready(). Verify mitigation posture by checking sysctl kernel.unprivileged_bpf_disabled, reviewing which workloads receive CAP_BPF, CAP_NET_ADMIN, CAP_SYS_ADMIN, or privileged-container status, and using bpftool to inventory loaded BPF programs and SOCKMAP/SOCKHASH maps. A negative vulnerability scanner result should be treated as valid only if it inspects the running kernel version and vendor backport status.

Typical attack path

  1. Gain local execution on a Linux system as an unprivileged user, compromised service account, or containerized process.
  2. Determine whether BPF sockmap functionality is usable, either through unprivileged BPF or delegated capabilities such as CAP_BPF, CAP_NET_ADMIN, or CAP_SYS_ADMIN.
  3. Create AF_UNIX stream socket pairs and BPF sockmap or related sk_psock state needed to invoke verdict data-ready handling.
  4. Race socket send operations against peer socket teardown/orphaning so sk->sk_socket is freed while sk_psock_verdict_data_ready() can still access it.
  5. Trigger the use-after-free through sendmsg()/unix_stream_sendmsg() and repeat to improve reliability.
  6. Exploit resulting kernel memory corruption to crash the host or attempt privilege escalation to kernel/root privileges.

How to detect it

Look for evidence of attempted or successful local exploitation in kernel logs, audit logs, endpoint telemetry, and BPF inventory. Primary artifacts are kernel oops, panic, KASAN, or slab-use-after-free reports referencing sk_psock_verdict_data_ready(), net/core/skmsg.c, unix_stream_sendmsg(), or AF_UNIX socket send paths. On production kernels without KASAN, exploitation attempts may appear only as unexplained kernel panics, soft lockups, general protection faults, or sudden reboots. In auditd or syscall telemetry, investigate non-administrative processes invoking bpf() to create SOCKMAP or SOCKHASH maps, loading socket-related BPF programs, and rapidly exercising socketpair() and sendmsg() around the time of a crash. Use bpftool or equivalent telemetry to identify unexpected BPF programs and maps, especially BPF_MAP_TYPE_SOCKMAP or BPF_MAP_TYPE_SOCKHASH owned by unusual processes or containers. Because there are no known public exploit indicators in the provided data, detection should focus on behavioral and crash artifacts rather than fixed network IOCs.

  • sk_psock_verdict_data_ready
  • BUG: KASAN: slab-use-after-free in sk_psock_verdict_data_ready
  • slab-use-after-free in sk_psock_verdict_data_ready
  • net/core/skmsg.c:1278
  • unix_stream_sendmsg
  • net/unix/af_unix.c:2482
  • __x64_sys_sendmsg
  • __x64_sys_socketpair
  • BPF_MAP_TYPE_SOCKMAP
  • BPF_MAP_TYPE_SOCKHASH
  • map_type=SOCKMAP
  • map_type=SOCKHASH
  • kernel.unprivileged_bpf_disabled=0
  • general protection fault in sk_psock_verdict_data_ready
  • kernel panic - not syncing
  • Oops:

What your security team should do

  • Prioritize patching internet-facing, multi-tenant, container-hosting, CI/CD, developer workstation, and shared Linux systems where untrusted local code can run.
  • Inventory Linux kernel versions across the fleet and map them to vendor advisories; because no fixed versions were provided, rely on distribution backport notices rather than upstream version numbers alone.
  • Disable or restrict unprivileged BPF and review all workloads granted CAP_BPF, CAP_NET_ADMIN, CAP_SYS_ADMIN, or privileged-container access.
  • Reboot systems after kernel update and confirm the running kernel is the fixed build.
  • Hunt for recent kernel crashes, KASAN reports, oopses, or suspicious BPF sockmap activity, especially on hosts running untrusted workloads.
  • Add audit or eBPF-based monitoring for unusual bpf() syscall activity, creation of SOCKMAP/SOCKHASH maps, and unexpected BPF program loads by non-administrative processes.
  • For container platforms, review runtime profiles to prevent unnecessary host namespace sharing and capability delegation.
  • Treat unexplained local privilege escalation, container escape, or repeated kernel panics on affected kernels as potentially related until ruled out.

The record

In the Linux kernel, the following vulnerability has been resolved: bpf: sockmap: Fix use-after-free of sk->sk_socket in sk_psock_verdict_data_ready(). syzbot reported use-after-free of AF_UNIX socket's sk->sk_socket in sk_psock_verdict_data_ready(). [0] In unix_stream_sendmsg(), the peer socket's ->sk_data_ready() is called after dropping its unix_state_lock(). Although the sender socket holds the peer's refcount, it does not prevent the peer's sock_orphan(), and the peer's sk_socket might be freed after one RCU grace period. Let's fetch the peer's sk->sk_socket and sk->sk_socket->ops under RCU in sk_psock_verdict_data_ready(). [0]: BUG: KASAN: slab-use-after-free in sk_psock_verdict_data_ready+0xec/0x590 net/core/skmsg.c:1278 Read of size 8 at addr ffff8880594da860 by task syz.4.1842/11013 CPU: 1 UID: 0 PID: 11013 Comm: syz.4.1842 Not tainted syzkaller #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2026 Call Trace: <TASK> dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0xba/0x230 mm/kasan/report.c:482 kasan_report+0x117/0x150 mm/kasan/report.c:595 sk_psock_verdict_data_ready+0xec/0x590 net/core/skmsg.c:1278 unix_stream_sendmsg+0x8a3/0xe80 net/unix/af_unix.c:2482 sock_sendmsg_nosec net/socket.c:721 [inline] __sock_sendmsg net/socket.c:736 [inline] ____sys_sendmsg+0x972/0x9f0 net/socket.c:2585 ___sys_sendmsg+0x2a5/0x360 net/socket.c:2639 __sys_sendmsg net/socket.c:2671 [inline] __do_sys_sendmsg net/socket.c:2676 [inline] __se_sys_sendmsg net/socket.c:2674 [inline] __x64_sys_sendmsg+0x1bd/0x2a0 net/socket.c:2674 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x14d/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7facf899c819 Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007facf9827028 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007facf8c15fa0 RCX: 00007facf899c819 RDX: 0000000000000000 RSI: 0000200000000500 RDI: 0000000000000004 RBP: 00007facf8a32c91 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007facf8c16038 R14: 00007facf8c15fa0 R15: 00007ffd41b01c78 </TASK> Allocated by task 11013: kasan_save_stack mm/kasan/common.c:57 [inline] kasan_save_track+0x3e/0x80 mm/kasan/common.c:78 unpoison_slab_object mm/kasan/common.c:340 [inline] __kasan_slab_alloc+0x6c/0x80 mm/kasan/common.c:366 kasan_slab_alloc include/linux/kasan.h:253 [inline] slab_post_alloc_hook mm/slub.c:4538 [inline] slab_alloc_node mm/slub.c:4866 [inline] kmem_cache_alloc_lru_noprof+0x2b8/0x640 mm/slub.c:4885 sock_alloc_inode+0x28/0xc0 net/socket.c:316 alloc_inode+0x6a/0x1b0 fs/inode.c:347 new_inode_pseudo include/linux/fs.h:3003 [inline] sock_alloc net/socket.c:631 [inline] __sock_create+0x12d/0x9d0 net/socket.c:1562 sock_create net/socket.c:1656 [inline] __sys_socketpair+0x1c4/0x560 net/socket.c:1803 __do_sys_socketpair net/socket.c:1856 [inline] __se_sys_socketpair net/socket.c:1853 [inline] __x64_sys_socketpair+0x9b/0xb0 net/socket.c:1853 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x14d/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f Freed by task 15: kasan_save_stack mm/kasan/common.c:57 [inline] kasan_save_track+0x3e/0x80 mm/kasan/common.c:78 kasan_save_free_info+0x46/0x50 mm/kasan/generic.c:584 poison_slab_object mm/kasan/common.c:253 [inline] __kasan_slab_free+0x5c/0x80 mm/kasan/common.c:285 kasan_slab_free include/linux/kasan.h:235 [inline] slab_free_hook mm/slub.c:2685 [inline] slab_free mm/slub.c:6165 [inline] kmem_cache_free+0x187/0x630 mm/slub.c:6295 rcu_do_batch kernel/rcu/tree.c: ---truncated---

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities