Skip to main content

Linux Kernel EUVDEUVD-2026-48883

| CVE-2026-64339 HIGH
Out-of-bounds Read (CWE-125)
2026-07-25 Linux GHSA-m28f-fmgf-v7cw
7.1
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
7.1 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
vuln.today AI
6.1 MEDIUM

AV:L and PR:L for local/gadget access; A:L not A:H because kernel crash only occurs under KASAN, not on typical production kernels.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:L
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:L/SC:N/SI:N/SA:N
SUSE
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat
5.5 MEDIUM
qualitative

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
High

Lifecycle Timeline

6
Metadata Corrected
Sep 03, 2026 - 16:40 vuln.today
tag: Buffer Overflow removed
Analysis Generated
Sep 03, 2026 - 16:09 vuln.today
CVSS changed
Sep 03, 2026 - 16:07 NVD
7.1 (HIGH)
Patch available
Jul 25, 2026 - 11:18 EUVD
CVE Published
Jul 25, 2026 - 08:50 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 25, 2026 - 08:50 nvd
HIGH 7.1

DescriptionNVD

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.

AnalysisAI

Slab out-of-bounds read in the Linux kernel usbio USB driver (drivers/usb/misc/usbio) leaks adjacent kernel heap memory to local unprivileged processes via the i2c subsystem. The flaw lies in usbio_bulk_msg(), which validates the device-supplied payload length against the TX buffer size rather than the smaller RX buffer size, allowing a malicious USB device with mismatched endpoint wMaxPacketSize values to drive memcpy() past the end of the rxbuf slab object. Over-read kernel heap bytes propagate through the i2c layer to userspace via i2c-dev, and under KASAN-enabled kernels the bug is reported as a slab-out-of-bounds crash. No public exploit has been identified at time of analysis; the bug was found by code review and confirmed with a userspace AddressSanitizer model and a USB raw-gadget plus dummy_hcd kernel reproducer.

Technical ContextAI

The usbio driver bridges USB bulk-transfer I/O to the Linux i2c subsystem. During probe, txbuf and rxbuf are sized independently from the bulk OUT and bulk IN endpoint wMaxPacketSize fields respectively. The validation in usbio_bulk_msg() checks caller-supplied ibuf_len against txbuf_len - not rxbuf_len - so a device advertising a large OUT endpoint and small IN endpoint passes the guard even when bpkt_len (a 16-bit length field in the device's response header, fully attacker-controlled) exceeds the actual rxbuf allocation. The subsequent memcpy() constitutes a CWE-125 out-of-bounds read of up to txbuf_len minus rxbuf_len bytes beyond the heap slab. The data path continues to i2c-dev and surfaces to userspace. The control path (usbio_ctrl_msg()) shares a single ctrlbuf for both directions and is explicitly confirmed safe. Affected CPE: cpe:2.3:a:linux:linux.

RemediationAI

Update to Linux 6.18.39, 7.1.4, or 7.2-rc3 (or any later release incorporating the fix). The corrective commits are available at https://git.kernel.org/stable/c/8c6314489550fa81d41723a0ff33f655b5b6c7b6, https://git.kernel.org/stable/c/fc1b546973c1442d5b947fcdd03581f20ecc5bd2, and https://git.kernel.org/stable/c/48394f94211cf8fe0ea8604fc441633abf90fc94; they add a single bound check that rejects any device response where bpkt_len exceeds the actual received transfer length. If patching is not immediately possible, the most effective compensating control is to blacklist the usbio kernel module by adding 'blacklist usbio' to /etc/modprobe.d/ and running 'modprobe -r usbio'; the trade-off is that legitimate USB-to-I2C bridge hardware will stop functioning. Alternatively, deploy USB device allowlisting via USBGuard or udev rules to block unrecognized devices with usbio-compatible VID:PID pairs, preventing the driver from binding to adversarial hardware.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected

Share

EUVD-2026-48883 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy