CVE-2026-64449
High · 7.8CVSS
7.8
EPSS
0.1%
Published
Jul 25, 2026
CISA due date
—
Cloudanix analysis
A local user on certain Linux systems with a specialized hardware driver could misuse it to crash the machine or potentially gain higher privileges.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
CVE-2026-64449 is a local Linux kernel buffer overflow in the staging vme_user driver. The vulnerable SLAVE read/write paths copy a user-controlled byte count into or out of a fixed 128 KiB kernel buffer without correctly limiting the operation to that buffer size when the configured VME slave window is larger than 128 KiB. A local user with access to the vme_user interface can set or use an oversized slave window and then trigger read() or write() operations that overrun the kernel allocation. Because this occurs in kernel context, successful exploitation can corrupt kernel memory and may allow denial of service, information disclosure, or privilege escalation.
Why it matters to the business
Systems that load and expose the Linux vme_user staging driver, typically specialized VME/PCI industrial, embedded, test, or lab systems, may be vulnerable to local takeover by an authenticated user or compromised low-privilege process. The operational risk is highest where VME hardware interfaces are present, where the module is loaded, or where device-node permissions allow non-administrative access. Although EPSS is currently low and the issue is not in CISA KEV, the CVSS impact is high because exploitation can compromise confidentiality, integrity, and availability of the host kernel.
How an attack unfolds
An attacker first needs local code execution or shell access on a system where the vme_user staging driver is loaded and a VME user device is accessible. The attacker configures or targets a VME SLAVE window whose size exceeds the driver's fixed 128 KiB PCI buffer. They then issue a read() or write() with an offset and count that are valid for the larger VME window but exceed the actual kernel buffer allocation. The vulnerable helper copies the requested data past the end of kern_buf, corrupting adjacent slab memory or reading beyond the allocation. A basic exploit may crash the kernel and cause a denial of service; a more advanced exploit would shape kernel heap state and overflow contents to corrupt control data, leak kernel memory, or escalate privileges.
How to fix it
Upgrade to a Linux kernel build that includes the upstream fix bounding SLAVE read/write operations to the 128 KiB kern_buf size. If no vendor-fixed package is listed yet, track the kernel vendor advisory for CVE-2026-64449 and deploy the first stable, distribution, or appliance kernel update that includes the vme_user bounds-checking patch. As interim mitigation, unload and blacklist the vme_user module if it is not required, remove or restrict access to VME user device nodes, and ensure only trusted administrative users can interact with VME control and data interfaces. On systems that require VME support, reduce exposure by enforcing strict device permissions, limiting local shell access, and monitoring module loads and VME configuration activity.
How to confirm the fix worked
Confirm the running kernel contains the fix from the vendor or upstream stable branch. Verify whether the vme_user module is loaded using standard module inventory commands and confirm whether VME user device nodes are present and accessible to non-administrative users. Validate that device permissions restrict access to trusted users only. Where safe and appropriate in a non-production test environment, attempt boundary-condition read/write tests against the SLAVE path with a configured window larger than 128 KiB and verify the operation returns a short transfer or stops at the buffer boundary rather than producing KASAN, kernel oops, or slab-out-of-bounds messages. Review kernel logs after testing to confirm no vme_user-related memory corruption reports occur.
Typical attack path
- Gain local access to a Linux system where the vme_user staging driver is present and loaded.
- Identify accessible VME user device nodes or processes that interact with the vme_user SLAVE interface.
- Configure or select a VME SLAVE window larger than 128 KiB using the driver's control interface.
- Call read() or write() with an offset and byte count that exceed the fixed kern_buf allocation while remaining within the configured VME window.
- Trigger an out-of-bounds kernel memory read or write in the vme_user SLAVE helper path.
- Use the memory corruption to crash the host, disclose kernel memory, or attempt local privilege escalation.
How to detect it
Look for evidence that the vme_user driver was loaded and then produced kernel memory-corruption symptoms. Primary sources are kernel logs, journald, dmesg output, crash dumps, audit logs for module loading, and file-access telemetry for VME device nodes. Search for KASAN reports, kernel oopses, panics, or BUG messages referencing vme_user_write, vme_user_read, _copy_from_user, _copy_to_user, buffer_from_user, buffer_to_user, or the vme_user module. Review auditd or EDR telemetry for suspicious local processes opening VME device nodes and performing large reads or writes shortly before a crash. If module load auditing is enabled, identify unexpected modprobe or insmod activity for vme_user or related VME bridge modules such as vme_fake in test environments. Absence of logs does not rule out exploitation, particularly on systems without KASAN or persistent kernel logging; in that case, correlate unexplained reboots, kernel panics, and recent local access to VME interfaces.
- KASAN: slab-out-of-bounds
- BUG: KASAN: slab-out-of-bounds in _copy_from_user
- BUG: KASAN: slab-out-of-bounds in _copy_to_user
- vme_user_write
- vme_user_read
- buffer_from_user
- buffer_to_user
- [vme_user]
- vme_user
- vme_fake
- VME_SET_SLAVE
- Write of size 262144
- Read of size 262144
- slab-out-of-bounds in _copy_from_user
- slab-out-of-bounds in _copy_to_user
- modprobe vme_user
- insmod vme_user
What your security team should do
- Prioritize patching or kernel upgrades on systems that load vme_user or support VME hardware interfaces, especially multi-user systems or systems reachable by untrusted operators.
- Immediately unload and blacklist vme_user on systems where VME user-space access is not required.
- Restrict VME device-node permissions to trusted administrative or service accounts only.
- Inventory Linux hosts for loaded staging drivers and VME-related modules, with particular focus on industrial, embedded, lab, and hardware-test environments.
- Monitor kernel logs for KASAN, slab-out-of-bounds, kernel oops, or panic messages involving vme_user_write, vme_user_read, buffer_to_user, or buffer_from_user.
- Treat unexpected crashes on systems using vme_user as potentially security-relevant until kernel logs and module/device access history are reviewed.
- Because the issue is not currently KEV-listed and EPSS is low, schedule broadly according to normal high-severity local kernel vulnerability SLAs, but accelerate remediation where local users or untrusted workloads have access.
The record
In the Linux kernel, the following vulnerability has been resolved: staging: vme_user: bound slave read/write to the kern_buf size The SLAVE-path helpers buffer_to_user() and buffer_from_user() copy 'count' bytes into/out of the fixed-size kern_buf (size_buf == PCI_BUF_SIZE == 0x20000, 128 KiB) using *ppos as the offset, without bounding *ppos + count against size_buf. vme_user_write()/vme_user_read() only clamp count to the VME window size (image_size = vme_get_size(resource)), which VME_SET_SLAVE sets from the user-supplied slave.size -- validated against the VME address space (up to VME_A32_MAX = 4 GiB), not against PCI_BUF_SIZE. When the window exceeds 128 KiB, a write()/read() copies past the kern_buf allocation. Clamp count against size_buf in both helpers, with an early return when *ppos is already at/after the buffer end. *ppos is >= 0 here (the caller rejects negative offsets), so size_buf - *ppos cannot wrap. This mirrors the existing clamp in the MASTER-path helpers resource_to_user() / resource_from_user(), and matches the read()/write() convention of a short transfer at end-of-buffer. Found by static analysis (CodeQL taint tracking + CBMC bounded model checking) and confirmed dynamically under KASAN with the vme_fake bridge: BUG: KASAN: slab-out-of-bounds in _copy_from_user+0x2d/0x80 Write of size 262144 at addr ffff888004100000 by task trigger/68 _copy_from_user+0x2d/0x80 vme_user_write+0x13e/0x240 [vme_user] vfs_write+0x1b8/0x7a0 ksys_write+0xb8/0x150
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-111497 A buffer overflow vulnerability in the Brotli decoder (c/dec/decode.c) in Google Brotli… CWE-787
- CVE-2026-112397 Pillow is a Python imaging library. CWE-787
- CVE-2026-112059 libLAS through 1.8.1 contains a heap out-of-bounds write vulnerability in the point… CWE-787
- CVE-2026-89088 A flaw was found in parted. CWE-787
- CVE-2026-89085 A flaw was found in parted. CWE-787
- CVE-2026-85746 MariaDB server is a community developed fork of MySQL server. CWE-787
- CVE-2026-107815 MariaDB server is a community developed fork of MySQL server. CWE-787
- CVE-2026-56851 The Nickname profile can panic with an out-of-bounds slice error when transforming… CWE-787