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

Input: usbtouchscreen - clamp NEXIO data_len/x_len to URB buffer size

nexio_read_data() pulls data_len and x_len from a packed __be16 header
in the device's interrupt packet and then walks packet->data[0..x_len)
and packet->data[x_len..data_len) comparing each byte against a
threshold.

Both fields are 16-bit on the wire (max 65535). The existing
adjustments shave at most 0x100 / 0x80 off, so the loop bound can still
reach roughly 0xfeff. The URB transfer buffer for NEXIO is rept_size
(1024) bytes from usb_alloc_coherent(), with the first 7 occupied by the
packed header — so packet->data[] has 1017 valid bytes. read_data()
callbacks are not given urb->actual_length, and nothing else bounds the
walk.

A device that lies about its length can get a ~64 KiB out-of-bounds read
past the coherent DMA allocation. The first index whose byte exceeds
NEXIO_THRESHOLD lands in begin_x / begin_y and from there into the
reported touch coordinates, so adjacent kernel memory contents leak to
userspace as ABS_X / ABS_Y events. Far enough out, the read can also
hit an unmapped page and fault.

Fix this all by clamping data_len to the buffer's data[] capacity and
x_len to data_len.
Published: 2026-07-19
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The usbtouchscreen driver for NEXIO touchscreens extracts two 16‑bit length fields from an interrupt packet and uses them to walk a USB request block (URB) buffer without bounding the indices to the actual buffer size. This allows a packet that advertises a length far larger than the 1017‑byte buffer to trigger an out‑of‑bounds read of up to roughly 64 KiB. The over‑read copies kernel memory into user‑space ABS_X and ABS_Y events, leaking arbitrary kernel data and potentially causing a fault if the read reaches an unmapped page. The weakness is classified as CWE‑125.

Affected Systems

Any Linux kernel that still loads the usbtouchscreen driver and has not integrated the commit that clamps data_len and x_len to the URB size. The driver activates when a NEXIO touchscreen is plugged in and creates a 1024‑byte USB coherent buffer, leaving 1017 bytes valid for the data payload. No specific kernel versions are listed, so all releases before the patch are considered affected.

Risk and Exploitability

The CVSS score of 5.5 indicates a moderate risk; the EPSS score of less than 1% shows a very low likelihood of exploitation in the wild, and the vulnerability is not present in the CISA KEV catalogue. The flaw can be triggered by a malicious USB device that an attacker can connect directly to the target machine, making the attack vector local and device‑specific. While the impact is primarily information disclosure and the potential for a crash, the overall severity is moderate for environments that allow untrusted USB peripherals.

Generated by OpenCVE AI on August 4, 2026 at 06:13 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a release that contains the usbtouchscreen commit that clamps data_len and x_len.
  • If an immediate kernel upgrade is not possible, unload or blacklist the usbtouchscreen module to prevent it from loading for attached touchscreens.
  • Apply USB device whitelisting or udev rules to block enumeration of unknown USB touch devices, ensuring only trusted peripherals can connect.

Generated by OpenCVE AI on August 4, 2026 at 06:13 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Ubuntu USN Ubuntu USN USN-8593-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8603-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8618-1 Linux kernel vulnerabilities
History

Wed, 22 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-125
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Sun, 19 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: Input: usbtouchscreen - clamp NEXIO data_len/x_len to URB buffer size nexio_read_data() pulls data_len and x_len from a packed __be16 header in the device's interrupt packet and then walks packet->data[0..x_len) and packet->data[x_len..data_len) comparing each byte against a threshold. Both fields are 16-bit on the wire (max 65535). The existing adjustments shave at most 0x100 / 0x80 off, so the loop bound can still reach roughly 0xfeff. The URB transfer buffer for NEXIO is rept_size (1024) bytes from usb_alloc_coherent(), with the first 7 occupied by the packed header — so packet->data[] has 1017 valid bytes. read_data() callbacks are not given urb->actual_length, and nothing else bounds the walk. A device that lies about its length can get a ~64 KiB out-of-bounds read past the coherent DMA allocation. The first index whose byte exceeds NEXIO_THRESHOLD lands in begin_x / begin_y and from there into the reported touch coordinates, so adjacent kernel memory contents leak to userspace as ABS_X / ABS_Y events. Far enough out, the read can also hit an unmapped page and fault. Fix this all by clamping data_len to the buffer's data[] capacity and x_len to data_len.
Title Input: usbtouchscreen - clamp NEXIO data_len/x_len to URB buffer size
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-19T14:56:27.995Z

Reserved: 2026-07-19T07:54:57.027Z

Link: CVE-2026-64014

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-07-19T00:00:00Z

Links: CVE-2026-64014 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-04T06:15:04Z

Weaknesses