CVE-2026-23319
High · 7.8CVSS
7.8
EPSS
0.1%
Published
Mar 25, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel can let someone who already has access to the computer crash it or take it over completely.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in the Linux kernel BPF subsystem where bpf_link_put drops the refcount on shim_link->link.link to zero while cgroup_shim_find can still reference the object via tr->progs_hlist; the deferred cleanup in bpf_shim_tramp_link_release creates a window for another process to dereference the freed memory through bpf_trampoline_link_cgroup_shim.
Why it matters to the business
Local attackers on affected Linux systems can trigger kernel crashes or arbitrary code execution, resulting in denial of service, privilege escalation, or full host compromise; with over 215 days since publication and slowly rising exploit probability, unpatched kernels in production or container environments remain exposed.
How an attack unfolds
An attacker with local access crafts BPF programs and cgroup attachments that race bpf_link_put against concurrent lookups in cgroup_shim_find; the window created by deferred trampoline cleanup allows the freed shim object to be dereferenced, leading to a use-after-free that can be turned into memory corruption or control-flow hijacking.
How to fix it
Apply the upstream fix that adds an atomic non-zero refcount check inside bpf_trampoline_link_cgroup_shim before incrementing; rebuild and deploy updated kernel packages as soon as vendor fixes become available; until then, restrict untrusted local access and BPF program loading via LSM policies or seccomp.
How to confirm the fix worked
Confirm the patch is present by inspecting the bpf_trampoline_link_cgroup_shim function for the atomic refcount guard; run the provided delay-based reproducer in a test environment to verify the crash no longer occurs after millions of iterations.
Typical attack path
- Obtain local user or container access on a vulnerable kernel
- Load and attach BPF programs that exercise trampoline cgroup shims
- Trigger concurrent bpf_link_put operations while cgroup_shim_find walks progs_hlist
- Exploit the resulting use-after-free for memory corruption or code execution
How to detect it
Inspect kernel logs and crash dumps for oops or panic traces mentioning bpf_trampoline_link_cgroup_shim, bpf_shim_tramp_link_release, or progs_hlist; correlate with audit events showing unusual BPF program loads or cgroup attachments around the time of the crash.
What your security team should do
- Prioritize kernel updates for all systems that allow unprivileged BPF or cgroup operations
- Monitor vendor advisories for the exact fixed kernel versions once released
- Temporarily disable untrusted BPF loading or enforce via CAP_BPF and LSM
- Audit production workloads for direct use of cgroup BPF trampolines
The record
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix a UAF issue in bpf_trampoline_link_cgroup_shim The root cause of this bug is that when 'bpf_link_put' reduces the refcount of 'shim_link->link.link' to zero, the resource is considered released but may still be referenced via 'tr->progs_hlist' in 'cgroup_shim_find'. The actual cleanup of 'tr->progs_hlist' in 'bpf_shim_tramp_link_release' is deferred. During this window, another process can cause a use-after-free via 'bpf_trampoline_link_cgroup_shim'. Based on Martin KaFai Lau's suggestions, I have created a simple patch. To fix this: Add an atomic non-zero check in 'bpf_trampoline_link_cgroup_shim'. Only increment the refcount if it is not already zero. Testing: I verified the fix by adding a delay in 'bpf_shim_tramp_link_release' to make the bug easier to trigger: static void bpf_shim_tramp_link_release(struct bpf_link *link) { /* ... */ if (!shim_link->trampoline) return; + msleep(100); WARN_ON_ONCE(bpf_trampoline_unlink_prog(&shim_link->link, shim_link->trampoline, NULL)); bpf_trampoline_put(shim_link->trampoline); } Before the patch, running a PoC easily reproduced the crash(almost 100%) with a call trace similar to KaiyanM's report. After the patch, the bug no longer occurs even after millions of iterations.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-azure | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.27.1.160000.2.8 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.28.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.28.1 |
Related vulnerabilities
- CVE-2026-46317 In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Reassign… Also affects dtb-aarch64
- CVE-2026-46316 In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-its… Also affects dtb-aarch64
- CVE-2026-46181 In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx4: Fix… Also affects dtb-aarch64
- CVE-2026-46176 In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx5: Fix error… Also affects dtb-aarch64
- CVE-2026-46159 In the Linux kernel, the following vulnerability has been resolved: btrfs: fix… Also affects dtb-aarch64
- CVE-2026-46114 In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Reject… Also affects dtb-aarch64
- CVE-2026-46090 In the Linux kernel, the following vulnerability has been resolved: ALSA: aloop: Fix peer… Also affects dtb-aarch64
- CVE-2026-46094 In the Linux kernel, the following vulnerability has been resolved: ext4: fix bounds… Also affects dtb-aarch64