CVE-2025-68352
NoneCVSS
—
EPSS
0.2%
Published
Dec 24, 2025
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel code that talks to certain USB chips could let someone with access to the computer read or damage memory, potentially causing crashes or allowing deeper attacks.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Out-of-bounds read from a transmit buffer of size trans->len and potential out-of-bounds write into a 32-byte driver buffer when copying data for a CH341 SPI transfer that includes a one-byte command header.
Why it matters to the business
Local attackers with access to affected systems can trigger memory corruption in the Linux kernel USB-SPI driver, leading to crashes, privilege escalation, or data leakage on devices using CH341 chips; the issue affects embedded and general-purpose Linux deployments with downstream package updates required.
How an attack unfolds
An attacker with local access supplies a crafted SPI transfer request to the ch341 driver; the driver miscalculates the copy length as min(32, trans->len + 1) and copies too many bytes from the source buffer and into the driver buffer, causing memory corruption that can be leveraged for further exploitation.
How to fix it
Update to a fixed kernel commit (cad6c0fd6f3c0e76a1f75df4bce3b08a13f08974) or package version (vault-k8s-fips 1.4.2-r8 or later) that changes the copy length to len-1 bytes; rebuild and reboot systems using the CH341 driver; apply vendor kernel updates promptly.
How to confirm the fix worked
Confirm the driver source contains the corrected copy of (len-1) bytes; verify the running kernel reports the fixed commit hash; test SPI transfers with the CH341 device to ensure no crashes occur on boundary lengths.
Typical attack path
- Obtain local execution or device access on a system using the ch341 SPI driver
- Craft and submit a SPI transfer structure with trans->len chosen to trigger len == 32
- Trigger the ch341_transfer_one path to perform the oversized copy
- Exploit the resulting out-of-bounds read/write for kernel memory corruption or code execution
How to detect it
Review kernel logs for oops, page faults, or slab corruption messages involving ch341_transfer_one or spi transfers; inspect USB device attach events for CH341 chips followed by abnormal SPI activity; no public exploit artifacts are known.
What your security team should do
- Apply the listed kernel or package updates immediately on all systems exposing the ch341 driver
- Audit device inventories for CH341-based USB-SPI hardware and prioritize patching
- Monitor kernel update channels for backports to older stable trees
- Restrict unprivileged local access where CH341 hardware is present until patches are deployed
The record
In the Linux kernel, the following vulnerability has been resolved: spi: ch341: fix out-of-bounds memory access in ch341_transfer_one Discovered by Atuin - Automated Vulnerability Discovery Engine. The 'len' variable is calculated as 'min(32, trans->len + 1)', which includes the 1-byte command header. When copying data from 'trans->tx_buf' to 'ch341->tx_buf + 1', using 'len' as the length is incorrect because: 1. It causes an out-of-bounds read from 'trans->tx_buf' (which has size 'trans->len', i.e., 'len - 1' in this context). 2. It can cause an out-of-bounds write to 'ch341->tx_buf' if 'len' is CH341_PACKET_LENGTH (32). Writing 32 bytes to ch341->tx_buf + 1 overflows the buffer. Fix this by copying 'len - 1' bytes.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Linux | Kernel | 6.11.0 | 6.12.63 |
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-azure | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.9.1.160000.2.6 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.9.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.9.1 |
| openSUSE:Tumbleweed | kernel-source | 0 | 6.18.5-1.1 |
| openSUSE:Tumbleweed | kernel-source-longterm | 0 | 6.18.16-1.1 |
Related vulnerabilities
- CVE-2026-23226 In the Linux kernel, the following vulnerability has been resolved: ksmbd: add chann_lock… Also affects Kernel
- CVE-2026-23225 In the Linux kernel, the following vulnerability has been resolved: sched/mmcid: Don't… Also affects Kernel
- CVE-2026-23230 In the Linux kernel, the following vulnerability has been resolved: smb: client: split… Also affects Kernel
- CVE-2026-23224 In the Linux kernel, the following vulnerability has been resolved: erofs: fix UAF issue… Also affects Kernel
- CVE-2026-23227 In the Linux kernel, the following vulnerability has been resolved: drm/exynos: vidi: use… Also affects Kernel
- CVE-2026-23223 In the Linux kernel, the following vulnerability has been resolved: xfs: fix UAF in… Also affects Kernel
- CVE-2026-23228 In the Linux kernel, the following vulnerability has been resolved: smb: server: fix leak… Also affects Kernel
- CVE-2026-23229 In the Linux kernel, the following vulnerability has been resolved: crypto: virtio - Add… Also affects Kernel