CVE-2026-64339CWE-125

CVE-2026-64339

High · published July 25, 2026

CVSS v3.1
7.1
EPSS
0%
Percentile
5.0
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

usb: misc: usbio: bound bulk IN response length to the received transfer

usbio_bulk_msg() copies bpkt_len = le16_to_cpu(bpkt->len) bytes out of

the bulk IN buffer (usbio->rxbuf, allocated with size usbio->rxbuf_len)

into the caller's buffer. bpkt_len is fully controlled by the device

and is only checked against ibuf_len; ibuf_len in turn is checked

against usbio->txbuf_len, not against rxbuf_len:

if ((obuf_len > (usbio->txbuf_len - sizeof(*bpkt))) ||

(ibuf_len > (usbio->txbuf_len - sizeof(*bpkt))))

return -EMSGSIZE;

txbuf_len and rxbuf_len are taken independently from the bulk OUT and

bulk IN endpoint wMaxPacketSize in usbio_probe(). A malicious or

malfunctioning device that advertises a large bulk OUT endpoint and a

small bulk IN endpoint (e.g. by claiming one of the quirk-free IDs such

as the Lattice NX33U, 0x2ac1:0x20cb) therefore makes ibuf_len, and

hence the device-supplied bpkt_len, exceed rxbuf_len. memcpy() then

reads up to txbuf_len - rxbuf_len bytes past the end of the rxbuf slab

object. The over-read bytes are handed back to the i2c layer and on to

user space through i2c-dev, disclosing adjacent slab memory; with KASAN

this is reported as a slab-out-of-bounds read.

The number of bytes actually received is already known: act equals the

URB actual_length and is bounded by rxbuf_len. Reject any response

that claims more payload than was received, mirroring the existing

"act < sizeof(*bpkt)" check just above.

The control path (usbio_ctrl_msg()) is not affected: it uses a single

buffer (ctrlbuf) for both directions, so its analogous copy can never

leave the allocation.

Found by code review. The out-of-bounds read was confirmed under

AddressSanitizer with a faithful userspace model of usbio_bulk_msg()'s

receive path (an rxbuf_len-sized buffer, the same act/ibuf_len/bpkt_len

checks and the memcpy). A USB raw-gadget + dummy_hcd reproducer is

also available.

The record
Technical detail
CVSS v3.1
7.1 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00162 · 5.0th percentile
Weakness
CWE-125 · Out-of-bounds Read
Published
2026-07-25T14:17Z
Affected products (4)
ProductVersionsFixed in
linux/linux_kernel≥ 6.18, < 6.18.396.18.39
linux/linux_kernel≥ 6.19, < 7.1.47.1.4
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (3)
EPSS history
Timeline
  • 25 JUL 08:50Z
    usb: misc: usbio: bound bulk IN response length to the received transfer
    cvelistv5