CVE-2026-90358
High · 7.8CVSS
7.8
EPSS
0.2%
Published
Sep 17, 2026
CISA due date
—
Cloudanix analysis
A mistake in how the Linux kernel saves certain large values when running special programs can let an attacker who can run those programs take over the whole computer.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Under-allocation of the x86 BPF trampoline register save area for 128-bit arguments causes save_args() to overwrite adjacent stack slots, resulting in a kernel stack buffer overflow.
Why it matters to the business
Attackers with the ability to load crafted BPF programs can crash the kernel or execute arbitrary code with kernel privileges, leading to full system compromise, data theft, or denial of service on affected Linux systems.
How an attack unfolds
An attacker crafts a BPF program containing a function prototype with a 128-bit argument, loads it into the kernel, and triggers the trampoline generation path; the undersized stack allocation then allows the overflow to corrupt adjacent memory, enabling control-flow hijacking or information disclosure.
How to fix it
Update the Linux kernel to a version containing the fix that computes the correct register count from arg_size for all arguments when allocating the trampoline register save area.
How to confirm the fix worked
Verify the kernel source contains the corrected register-count calculation based on arg_size, rebuild, and confirm no 128-bit argument causes stack-slot overwrites via targeted BPF loading tests.
Typical attack path
- Obtain local access or a container with sufficient capabilities to load BPF programs
- Prepare a BPF program whose function prototype uses a 128-bit scalar argument
- Load the program via bpf() syscall to trigger btf_distill_func_proto and trampoline creation
- Trigger execution of the trampoline to cause the stack overwrite
- Leverage the resulting memory corruption for privilege escalation or kernel code execution
How to detect it
Review kernel logs for oops or stack-protector violations mentioning bpf or trampoline functions; inspect audit logs for bpf() syscalls from unexpected processes; correlate with any recent BPF program loads.
What your security team should do
- Prioritize kernel updates on systems that permit untrusted BPF program loading
- Restrict BPF loading to trusted processes via capabilities and LSM policies
- Monitor for unusual BPF program loads and kernel oops or crashes involving trampolines
The record
In the Linux kernel, the following vulnerability has been resolved: bpf, x86: Fix trampoline stack size for 128-bit arguments btf_distill_func_proto() accepts a function argument up to 16 bytes, so a 128-bit scalar such as __int128 reaches the x86 trampoline with arg_size == 16. But the current implementation assumes an __int128 argument only needs one register, so the register save area is under-allocated and save_args() overwrites adjacent stack slots. Compute the register count from arg_size for all arguments to fix it.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|