CVE-2026-80946
NoneCVSS
—
EPSS
0.2%
Published
Sep 11, 2026
CISA due date
—
Cloudanix analysis
A bug in how Linux copies filesystem messages can crash the whole computer when a local program uses a certain fast I/O path, so those systems should be updated.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- None
What it actually does
The FUSE io-uring transport copies fuse_request in/out headers (req->in.h / req->out.h) directly between an unwhitelisted fuse_request SLUB object (fuse_req_cachep) and userspace. With CONFIG_HARDENED_USERCOPY this is treated as illegal kernel-memory exposure and aborts in usercopy_abort(), causing a kernel BUG/Oops and host panic. Without hardened usercopy, the same path can disclose fuse_request slab contents into the io_uring ring. Impact is local denial of service (availability) and, on non-hardened kernels, potential kernel heap disclosure. No privilege escalation or remote code execution is indicated.
Why it matters to the business
A local process that uses FUSE over io_uring can crash the entire host, interrupting all workloads on that node until reboot. EPSS is very low (~0.002) and unchanged over 30 days, the issue is not in CISA KEV, it is not associated with ransomware, and exploit maturity is none about 20 days after publication—so this is a standard kernel availability patch, not an emergency internet-facing incident. Risk is highest on multi-tenant, CI, and developer systems that allow unprivileged FUSE and io_uring; locked-down hosts that do not use that path are largely unaffected.
How an attack unfolds
An attacker with local unprivileged execution on a Linux host that permits FUSE and io_uring drives FUSE operations over the io-uring transport so the kernel copies request headers out of (and back into) the fuse_request slab object toward the shared ring. Because that slab cache is not usercopy-whitelisted, hardened usercopy detects the copy, calls usercopy_abort(), and panics the kernel. No memory corruption or privilege gain is required; reaching fuse_uring_copy_to_ring / fuse_uring_commit is enough to take the node offline. On kernels without hardened usercopy, the same copy can leak kernel slab data into userspace-visible ring memory. No named threat actors or in-the-wild campaigns are associated with this issue.
How to fix it
Install a kernel that includes the fix which bounces FUSE io-uring request headers through an on-stack buffer so usercopy touches stack memory rather than the fuse_request slab object (the 'fuse: copy request headers via a stack buffer for io-uring' change). Follow your distribution's kernel security advisory for the exact package version; no per-package fixed versions were supplied with this record. Until patched, restrict unprivileged FUSE and io_uring (policy, seccomp, sysctl, and user-namespace controls) on multi-tenant hosts and avoid FUSE io-uring workloads.
How to confirm the fix worked
Confirm the running kernel changelog or distro CVE mapping includes this FUSE io-uring header bounce, or that fs/fuse/dev_uring.c copies headers via a stack buffer in the send/commit path rather than directly from the slab object. Inventory hosts with FUSE and io_uring enabled. After patching, run a controlled FUSE io-uring workload in a non-production environment and verify kernel logs show no usercopy_abort or 'fuse_request' SLUB exposure Oops. Unpatched kernels with CONFIG_HARDENED_USERCOPY remain crash-prone if that path is reachable.
Typical attack path
- Obtain local unprivileged code execution on a Linux host that allows FUSE and io_uring
- Open or use a FUSE filesystem via the io-uring transport
- Cause the kernel to copy FUSE request in/out headers between the fuse_request slab object and the ring
- Hardened usercopy rejects the unwhitelisted slab copy and panics the kernel
- Host becomes unavailable until reboot (DoS)
How to detect it
This issue typically leaves an obvious kernel Oops rather than stealthy persistence. Search dmesg, journalctl -k, serial/console logs, kdump/vmcore, and panic pipelines for HARDENED_USERCOPY aborts naming SLUB object 'fuse_request', usercopy_abort, and FUSE io-uring frames (copy_header_to_ring, fuse_uring_prepare_send, fuse_uring_send_in_task) under io_uring_enter / task_work. Correlate crashes with processes using FUSE and io_uring. Absence of these logs does not prove non-exploitation on kernels without CONFIG_HARDENED_USERCOPY, where the copy may leak slab data without panicking. No named APT activity is reported.
- usercopy: Kernel memory exposure attempt detected from SLUB object 'fuse_request'
- usercopy: Kernel memory exposure attempt detected from SLUB object 'fuse_request' (offset 56, size 40)
- kernel BUG at mm/usercopy.c
- usercopy_abort
- copy_header_to_ring
- fuse_uring_prepare_send
- fuse_uring_send_in_task
- fuse_uring_copy_to_ring
- fs/fuse/dev_uring.c
- __check_heap_object
What your security team should do
- Patch Linux kernels that ship FUSE io-uring, prioritizing multi-tenant, CI, and developer hosts
- Until patched, limit unprivileged FUSE and io_uring via policy and host hardening
- Hunt kernel logs and crash dumps for the fuse_request usercopy abort signature
- Track distro kernel advisories for the exact fixed package; this record has no version list
- Treat as a local DoS kernel fix (low EPSS, not KEV, no ransomware use)—not an internet-facing emergency
The record
In the Linux kernel, the following vulnerability has been resolved: fuse: copy request headers via a stack buffer for io-uring The fuse-io-uring transport copies req->in.h out to the ring in fuse_uring_copy_to_ring() and req->out.h back in fuse_uring_commit(). Both headers live inside the fuse_request slab object, whose cache (fuse_req_cachep) is created without a usercopy whitelist, so copying them directly to/from userspace trips CONFIG_HARDENED_USERCOPY and panics: usercopy: Kernel memory exposure attempt detected from SLUB object 'fuse_request' (offset 56, size 40)! kernel BUG at mm/usercopy.c:102! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI RIP: 0010:usercopy_abort (mm/usercopy.c:90) Call Trace: __check_heap_object (mm/slub.c:8268) __check_object_size (mm/usercopy.c:197 mm/usercopy.c:258 mm/usercopy.c:223) copy_header_to_ring (fs/fuse/dev_uring.c:618) fuse_uring_prepare_send (fs/fuse/dev_uring.c:776 fs/fuse/dev_uring.c:785) fuse_uring_send_in_task (fs/fuse/dev_uring.c:1306) tctx_task_work_run (io_uring/tw.c:96) task_work_run (kernel/task_work.c:233) io_run_task_work (io_uring/tw.h:84) io_cqring_wait (io_uring/wait.c:278) __do_sys_io_uring_enter (io_uring/io_uring.c:2685) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121) Bounce both headers through an on-stack copy so the usercopy touches stack memory, not the slab object.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|