CVE-2026-64565
NoneCVSS
—
EPSS
0.2%
Published
Aug 4, 2026
CISA due date
—
Cloudanix analysis
A specially crafted USB device could crash or potentially take over some Linux systems unless they receive a kernel update or block the affected driver.
- Exploitation
- Physical Access
- Attacker needs
- Physical Access
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This is a Linux kernel memory-corruption flaw in the ims-pcu input driver. The vulnerable parser processes USB URB data without properly bounding the read_pos index against IMS_PCU_BUF_SIZE. A malicious USB device can send an oversized packet, cause read_pos to advance beyond the receive buffer, overwrite adjacent heap fields including read_pos itself, and later influence a copy into cmd_buf. The described corruption can reach cmd_done.wait.head and may allow kernel control-flow hijack when complete(&pcu->cmd_done) is called. Practical outcomes include kernel crash, denial of service, and potentially arbitrary code execution in kernel context depending on kernel configuration, mitigations, and exploit reliability.
Why it matters to the business
Successful exploitation can destabilize or fully compromise Linux systems that use the affected ims-pcu driver and accept input from a malicious or compromised USB device. Because exploitation requires a hostile USB device or equivalent control of USB traffic, broad internet-scale exposure is unlikely; however, the consequence on exposed workstations, embedded devices, kiosks, lab systems, or operational technology endpoints can be severe, including outages, device compromise, or bypass of host security controls. The issue is not listed in CISA KEV, is not known to be used in ransomware campaigns, has no reported public exploit maturity, and has a low EPSS score, so remediation should be risk-prioritized but still tracked through normal kernel patch management.
How an attack unfolds
An attacker first needs a path to present a malicious USB device to a vulnerable Linux system, such as physical access, supply-chain insertion of a rogue peripheral, an evil-maid scenario, or compromise of a USB-capable device connected to the host. When the ims-pcu driver binds to the device and begins handling incoming URB data, the malicious device sends a packet larger than the driver’s expected buffer. Because the vulnerable code does not stop read_pos from exceeding IMS_PCU_BUF_SIZE, parsing continues past the end of read_buf and corrupts adjacent heap memory. By overwriting read_pos and shaping subsequent packet contents, the attacker can influence a later copy into cmd_buf. The vulnerability description indicates that corruption can target cmd_done.wait.head, causing the kernel completion path to dereference attacker-controlled data and potentially redirect control flow. Failed attempts are likely to produce kernel warnings, KASAN reports, oopses, USB/input driver errors, or system crashes.
How to fix it
Apply a Linux kernel update that includes the upstream fix for the ims-pcu bounds-checking issue in ims_pcu_process_data(). Because no affected product list or exact fixed package versions were provided, use the kernel versions and advisories from the relevant Linux distribution, appliance vendor, or kernel maintenance branch. Where immediate patching is not possible, reduce exposure by disabling or blacklisting the ims-pcu driver if it is not required, restricting physical USB access, blocking untrusted USB peripherals through device-control tooling, and enforcing endpoint policies that limit newly attached USB input devices. For high-assurance environments, pair kernel updates with secure boot, kernel lockdown, IOMMU/USB authorization policies, and operational controls for removable devices.
How to confirm the fix worked
Confirm that systems are running a kernel build from the vendor branch that contains the ims-pcu bounds-check fix. Verify whether the ims-pcu driver is present or loaded using standard Linux module and kernel configuration checks, such as reviewing loaded modules, kernel config, and driver files. If the driver is not needed, confirm it is not loadable or is denied by module blacklist/device policy. Validate patch deployment by comparing installed kernel package versions against vendor advisories and rebooting into the patched kernel. For exposure validation, check whether systems accept USB peripherals and whether hardware inventory or endpoint telemetry shows devices binding to the ims-pcu driver. Avoid validating with malicious oversized USB packets on production systems, as proof-of-concept testing may crash the kernel.
Typical attack path
- Attacker obtains the ability to connect or emulate a malicious USB device to a vulnerable Linux system.
- The Linux kernel enumerates the device and binds it to the ims-pcu input driver.
- The malicious device sends crafted URB data with a packet larger than IMS_PCU_BUF_SIZE.
- ims_pcu_process_data() increments read_pos beyond the receive buffer and corrupts adjacent heap memory.
- The attacker manipulates read_pos and packet contents so ims_pcu_handle_response() copies attacker-controlled data into sensitive heap structures near cmd_buf.
- The corrupted cmd_done.wait.head structure is used during complete(&pcu->cmd_done), creating a possible kernel control-flow hijack or crash.
- The attacker achieves denial of service or, if exploitation is reliable against the target kernel and mitigations, code execution with kernel privileges.
How to detect it
To assess prior exploitation, review kernel logs, system journals, crash dumps, endpoint telemetry, and USB device inventory for suspicious USB enumeration followed by ims-pcu driver activity, memory-corruption reports, or sudden kernel crashes. Useful sources include journalctl kernel logs, /var/log/kern.log, /var/log/messages, dmesg archives, kdump/vmcore records, audit logs for module loading, EDR telemetry for USB device insertion, and device-control platform logs. Look for KASAN, slab, heap, general protection fault, kernel oops, panic, or hung-task messages that reference ims_pcu_process_data(), ims_pcu_handle_response(), complete(), cmd_done, URB processing, or the ims-pcu driver. Correlate suspicious events with physical access records, newly attached USB devices, unexpected vendor/product IDs, repeated USB disconnect/reconnect cycles, or crashes occurring immediately after peripheral insertion. Because exploitation may only leave a crash or memory-corruption artifact, absence of logs does not fully rule out exploitation, especially if kernel crash dumps were not collected.
- ims-pcu
- ims_pcu
- ims_pcu_process_data
- ims_pcu_handle_response
- heap-buffer-overflow in ims_pcu_process_data()
- KASAN: slab-out-of-bounds
- KASAN: out-of-bounds
- KASAN: use-after-free
- BUG: kernel NULL pointer dereference
- general protection fault
- kernel BUG at
- Oops:
- Kernel panic - not syncing
- URB
- cmd_done.wait.head
- complete(&pcu->cmd_done)
- read_pos
- IMS_PCU_BUF_SIZE
What your security team should do
- Inventory Linux systems where the ims-pcu driver is present, loaded, or relevant to attached input/USB hardware.
- Prioritize patching systems with physical USB exposure, kiosk or public-access placement, shared workstations, embedded deployments, or sensitive operational roles.
- Update affected Linux kernels through the appropriate distribution or vendor channel and ensure systems reboot into the patched kernel.
- If the driver is unnecessary, blacklist or disable ims-pcu and enforce USB device-control policies to prevent untrusted peripherals from binding to kernel drivers.
- Review endpoint and kernel logs for recent USB enumeration events, ims-pcu activity, KASAN reports, kernel oopses, or unexplained crashes following USB device attachment.
- Apply stricter physical security and removable-device handling procedures for high-value Linux systems until patching is complete.
- Monitor vendor advisories for exact fixed versions and any change in exploit maturity, especially because kernel memory-corruption flaws can become more actionable after patch diffing.
The record
In the Linux kernel, the following vulnerability has been resolved: Input: ims-pcu - fix heap-buffer-overflow in ims_pcu_process_data() The `ims_pcu_process_data()` processes incoming URB data byte by byte. However, it fails to check if the `read_pos` index exceeds IMS_PCU_BUF_SIZE. If a malicious USB device sends a packet larger than IMS_PCU_BUF_SIZE, `read_pos` will increment indefinitely. Moreover, since `read_pos` is located immediately after `read_buf`, the attacker can overwrite `read_pos` itself to arbitrarily control the index. This manipulated `read_pos` is subsequently used in `ims_pcu_handle_response()` to copy data into `cmd_buf`, leading to a heap buffer overflow. Specifically, an attacker can overwrite the `cmd_done.wait.head` located at offset 136 relative to `cmd_buf` in the `ims_pcu_handle_response()`. Consequently, when the driver calls `complete(&pcu->cmd_done)`, it triggers a control flow hijack by using the manipulated pointer. Fix this by adding a bounds check for `read_pos` before writing to `read_buf`. If the packet is too long, discard it, log a warning, and reset the parser state. [dtor: factor out resetting packet state, reset checksum as well]
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|