Cloudanix VulnDB

CVE-2025-68352

None

CVSS

—

EPSS

0.2%

Published

Dec 24, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

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

  1. Obtain local execution or device access on a system using the ch341 SPI driver
  2. Craft and submit a SPI transfer structure with trans->len chosen to trigger len == 32
  3. Trigger the ch341_transfer_one path to perform the oversized copy
  4. 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