CVE-2026-90250
NoneCVSS
—
EPSS
0.2%
Published
Sep 17, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel can make the whole system crash when certain low-level programs attached to groups of processes are swapped out for newer versions.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A link_update operation that replaces an attached BPF cgroup program can fail to allocate and assign the required cgroup storage for the incoming program when it uses BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE. The replacement therefore inherits an uninitialized storage pointer, which later triggers a null-pointer dereference when the new program is executed and calls bpf_get_local_storage.
Why it matters to the business
Systems running affected kernels may experience sudden kernel panics during routine BPF program updates on cgroups, causing service outages, container restarts, or host reboots that disrupt workloads relying on cgroup-attached BPF programs.
How an attack unfolds
An attacker with the ability to load and attach BPF programs and perform link updates on a target cgroup first attaches an empty program, then replaces it with a program that uses per-CPU cgroup storage. Because the kernel does not validate storage compatibility during replacement, the new program runs with a null storage pointer and crashes the kernel on first access to that storage.
How to fix it
Upgrade to a kernel that includes the fix rejecting link updates when the replacement program's cgroup storage requirements are incompatible with the existing link. Where immediate patching is not possible, restrict untrusted users from performing BPF link updates on cgroups via LSM or seccomp policies.
How to confirm the fix worked
Confirm the kernel source contains the check that aborts cgroup_bpf_replace when new_prog storage is incompatible; test by attempting a link_update with an empty program followed by a PERCPU_CGROUP_STORAGE program and verify the operation is now rejected with an appropriate error instead of panicking.
Typical attack path
- Obtain CAP_BPF or equivalent privileges to load and attach programs to cgroups
- Attach an empty BPF program to a chosen cgroup
- Prepare a replacement program that declares BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE and invokes bpf_get_local_storage
- Issue a link update operation to swap the attached program
- Trigger execution of the replacement program to cause the null dereference panic
How to detect it
Review kernel logs for oops or panic messages containing references to __cgroup_bpf_replace, bpf_get_local_storage, or null pointer dereference in the cgroup BPF storage path; correlate with audit records of BPF link update syscalls around the time of the crash.
What your security team should do
- Prioritize kernel updates on any system that permits unprivileged or semi-privileged BPF cgroup attachments
- Audit existing cgroup BPF programs and links for use of storage maps
- Apply capability and LSM restrictions to limit which users or services may perform link_update operations
- Monitor for kernel oops/panic reports referencing cgroup storage or bpf_get_local_storage
The record
In the Linux kernel, the following vulnerability has been resolved: bpf, cgroup: Fix storage null-ptr-deref after replacing prog Syzkaller reported a storage null-ptr-deref issue after replacing prog. This occurs in the following scenario: 1. prog A, an empty prog, is attached to a cgrp. 2. prog B uses BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE and calls the bpf_get_local_storage helper. 3. link_update is called to replace prog A with prog B. The reason is that __cgroup_bpf_replace fails to alloc and assign the required cgrp storage for the incoming replacement prog. Consequently, the new prog inherits an uninit storage, leading to null-ptr-deref panic when kick the new prog. Fix this by rejecting a link update if new_prog's cgroup storage is incompatible with link->prog.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|