CVE-2026-23319

bpf: Fix a UAF issue in bpf_trampoline_link_cgroup_shim

State
Published
Severity
Not scored
Published
Mar 25, 2026
Updated
Oct 15, 2026
Reserved
Jan 13, 2026

Read the record on cve.org

Description

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 69fd337a975c7e690dfe49d9cb4fe5ba1e6db44e to before 529e685e522b9d7fb379dbe6929dcdf520e34c8cAffected
  • 69fd337a975c7e690dfe49d9cb4fe5ba1e6db44e to before 9b02c5c4147f8af8ed783c8deb5df927a55c3951Affected
  • 69fd337a975c7e690dfe49d9cb4fe5ba1e6db44e to before cfcfa0ca0212162aa472551266038e8fd6768cffAffected
  • 69fd337a975c7e690dfe49d9cb4fe5ba1e6db44e to before 3eeddb80191f7626ec1ef742bfff51ec3b0fa5c2Affected
  • 69fd337a975c7e690dfe49d9cb4fe5ba1e6db44e to before 4e8a0005d633a4adc98e3b65d5080f93b90d356bAffected
  • 69fd337a975c7e690dfe49d9cb4fe5ba1e6db44e to before 56145d237385ca0e7ca9ff7b226aaf2eb8ef368bAffected
LinuxLinux
  • 6.0Affected
  • before 6.0Not affected
  • 6.1.167 through 6.1.*Not affected
  • 6.6.130 through 6.6.*Not affected
  • 6.12.77 through 6.12.*Not affected
  • 6.18.17 through 6.18.*Not affected
  • 6.19.7 through 6.19.*Not affected
  • 7.0 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.