CVE-2026-63809
High · 7.8CVSS
7.8
EPSS
0.2%
Published
Jul 19, 2026
CISA due date
—
Cloudanix analysis
A flaw in some Linux kernels could let someone who already has access to a machine crash it or possibly gain more control over it.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a Linux kernel memory-management flaw in the cgroup BPF sysctl write path. proc_sys_call_handler() allocates a temporary sysctl buffer with kvzalloc(), which may return either kmalloc-backed or vmalloc-backed memory depending on size and allocation behavior. The vulnerable path incorrectly releases a replaced buffer with kfree(); if the allocation came from vmalloc(), using kfree() can corrupt kernel memory or trigger a kernel page fault. Because the flaw occurs in kernel context, successful exploitation could potentially cause denial of service through a kernel crash and, depending on allocator state and exploitability, may enable local privilege escalation or arbitrary kernel memory corruption.
Why it matters to the business
Systems running affected Linux kernel builds may be vulnerable to local attacks that crash hosts or containers' underlying nodes and could potentially allow an attacker with existing local access to gain higher privileges. The issue is not listed in CISA KEV, has very low EPSS, and no public exploit maturity is indicated, so broad internet-scale exploitation is unlikely at this time; however, kernel memory-corruption bugs should still be treated as high priority on multi-user servers, container hosts, CI runners, and systems where untrusted users or workloads can execute local code.
How an attack unfolds
An attacker first needs local code execution with sufficient ability to reach the sysctl write path from a task associated with a cgroup where cgroup BPF sysctl filtering can replace the sysctl write buffer. The attacker then writes a large enough value to a writable /proc/sys entry to cause the temporary sysctl buffer allocation to be handled through the kvmalloc/kvzalloc path, where allocation may fall back to vmalloc. When the cgroup BPF sysctl filter replaces or processes that buffer, the vulnerable kernel path frees the buffer with kfree() instead of kvfree(). If the buffer is vmalloc-backed, this mismatched free can corrupt kernel memory or trigger an Oops in kfree(). A reliable exploit would attempt to shape allocator state and repeat the operation to convert the memory corruption into privilege escalation; simpler exploitation may only produce a local denial of service by crashing the kernel.
How to fix it
Upgrade to a Linux kernel version that includes the fix changing the replaced sysctl write buffer release from kfree() to kvfree() in the BPF sysctl handling path. If consuming kernels from a Linux distribution or appliance vendor, apply the vendor security update that includes the upstream fix rather than relying only on upstream version numbers. Where immediate patching is not possible, reduce exposure by limiting local shell access, restricting untrusted workloads, minimizing use of cgroup BPF sysctl programs where feasible, enforcing least privilege for users that can write sysctl values, and using container isolation controls to prevent untrusted containers from writing host /proc/sys entries. Operational mitigations reduce exploitability but do not correct the kernel memory corruption; patching remains the required fix.
How to confirm the fix worked
Confirm remediation by verifying the running kernel package or build contains the patch that uses kvfree() for the replaced sysctl write buffer in the cgroup BPF sysctl path. On source-based or custom kernels, inspect the relevant kernel source around proc_sys_call_handler() and __cgroup_bpf_run_filter_sysctl() to ensure vmalloc-capable allocations are released with kvfree(), not kfree(). On managed distributions, validate that the installed kernel version matches the vendor advisory's fixed build and that the system has been rebooted into the updated kernel. Exposure is higher on systems allowing local untrusted execution, cgroup BPF usage, or writes to /proc/sys entries from less-trusted workloads; confirm those controls are restricted if patching is delayed.
Typical attack path
- Gain local execution on a Linux system running an affected kernel.
- Run from, or move into, a cgroup configuration where the cgroup BPF sysctl hook can exercise the sysctl replacement path.
- Write a large value to a writable /proc/sys/sysctl entry to drive proc_sys_call_handler() through the vulnerable allocation and replacement logic.
- Trigger a vmalloc-backed temporary buffer allocation through kvzalloc()/kvmalloc fallback behavior.
- Cause the vulnerable path to free the replaced buffer with kfree() instead of kvfree().
- Leverage the resulting kernel memory corruption for a crash or attempt to shape memory for local privilege escalation.
How to detect it
To assess whether this was already triggered, review kernel logs and crash artifacts for Oops, page faults, KASAN reports, or allocator corruption involving kfree(), __cgroup_bpf_run_filter_sysctl(), and proc_sys_call_handler(). Useful sources include journald, /var/log/kern.log, /var/log/messages, dmesg output, kernel crash dumps, kdump/vmcore analysis, auditd records for sysctl writes, and eBPF/cgroup management logs if available. Look for unusual or repeated large writes to /proc/sys entries, especially from non-administrative processes, containers, test binaries, or workloads associated with cgroup BPF sysctl hooks. Kernel crashes alone are not proof of malicious exploitation, because the bug can be triggered during testing or fault-injection scenarios; correlate crash timing with local user activity, container starts, BPF program loading, sysctl writes, and privilege changes after the event.
- BUG: unable to handle page fault
- Oops: Oops: 0000
- RIP: 0010:kfree
- __cgroup_bpf_run_filter_sysctl
- proc_sys_call_handler
- vfs_write
- /proc/sys/kernel/domainname
- KASAN
- CONFIG_FAILSLAB
- repro_proc_sys_
What your security team should do
- Prioritize patching Linux kernel builds on multi-user systems, container hosts, Kubernetes nodes, CI/CD runners, bastion hosts, and any servers where untrusted or semi-trusted users can run code.
- Use distribution or vendor advisories to identify the exact fixed kernel package for each platform, then reboot systems to ensure the fixed kernel is active.
- Inventory systems using custom, mainline, release-candidate, or self-built kernels and confirm the kvfree() fix has been backported.
- Restrict local access and sysctl write capability while remediation is pending, especially from containers and untrusted workloads.
- Review whether cgroup BPF sysctl programs are deployed and limit their use to trusted administrative contexts.
- Monitor kernel logs for Oops, page fault, KASAN, or allocator corruption messages involving kfree(), proc_sys_call_handler(), or __cgroup_bpf_run_filter_sysctl().
- Because this is not KEV-listed, has very low EPSS, and has no known public exploit, treat emergency internet-edge response as lower priority than exposed remote-code-execution vulnerabilities, but do not defer patching on shared-host or local-code-execution environments.
The record
In the Linux kernel, the following vulnerability has been resolved: bpf: use kvfree() for replaced sysctl write buffer proc_sys_call_handler() allocates its temporary sysctl buffer with kvzalloc() and passes it to __cgroup_bpf_run_filter_sysctl(). Since kvzalloc() may fall back to vmalloc() for large allocations, freeing that buffer with kfree() is wrong and can corrupt memory. Use kvfree() to safely handle both kmalloc and kvzalloc()/vmalloc allocations. The bug was first flagged by an experimental analysis tool we are developing for kernel memory-management bugs while analyzing v6.13-rc1. The tool is still under development and is not yet publicly available. Manual inspection confirms that the bug is still present in v7.1-rc5. Reproduced the bug based on v7.1-rc4 in a QEMU x86_64 guest booted with KASAN and CONFIG_FAILSLAB enabled. To exercise the replacement path, the test tree also included the accompanying fix for the stale ret == 1 check in __cgroup_bpf_run_filter_sysctl(). The reproducer confines failslab injections to the proc_sys_call_handler() range, uses stacktrace-depth=32, and injects fail-nth=1 while writing 8191 bytes to /proc/sys/kernel/domainname from a task in the target cgroup. Under that setup, fail-nth=1 triggered the fault: BUG: unable to handle page fault for address: ffffeb0200024d48 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: Oops: 0000 SMP KASAN NOPTI CPU: 2 UID: 0 PID: 209 Comm: repro_proc_sys_ Not tainted 7.1.0-rc4-00686-g97625979a5d4 PREEMPT(lazy) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014 RIP: 0010:kfree+0x6e/0x510 ... Call Trace: <TASK> ? __cgroup_bpf_run_filter_sysctl+0x626/0xc30 __cgroup_bpf_run_filter_sysctl+0x74d/0xc30 ? __pfx___cgroup_bpf_run_filter_sysctl+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? __kvmalloc_node_noprof+0x345/0x870 ? proc_sys_call_handler+0x250/0x480 ? srso_return_thunk+0x5/0x5f proc_sys_call_handler+0x3a2/0x480 ? __pfx_proc_sys_call_handler+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? selinux_file_permission+0x39f/0x500 ? srso_return_thunk+0x5/0x5f ? lock_is_held_type+0x9e/0x120 vfs_write+0x98e/0x1000 ... </TASK> With this fix applied on top of the same test setup, rerunning the reproducer with fail-nth=1 yields no corresponding Oops reports.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119341 Tesseract is an open source OCR engine. CWE-763
- CVE-2026-112893 Pillow is a Python imaging library. CWE-763
- CVE-2026-85850 Release of invalid pointer or reference in Windows Kernel allows an authorized attacker… CWE-763
- CVE-2026-85362 Release of invalid pointer or reference in Windows Management Instrumentation allows an… CWE-763
- CVE-2026-83908 Release of invalid pointer or reference in RPC Runtime allows an authorized attacker to… CWE-763
- CVE-2026-83735 Release of invalid pointer or reference in Windows Kernel allows an authorized attacker… CWE-763
- CVE-2026-108133 Release of invalid pointer or reference in Windows Modern Device Management (MDM) allows… CWE-763
- CVE-2026-98160 In the Linux kernel, the following vulnerability has been resolved: staging: rtl8723bs… CWE-763