HIGH 7.8

CVE-2026-53195: Linux Kernel USB Serial io_ti Heap Buffer Overflow

A vulnerability exists in how Linux handles USB serial device firmware files. When processing firmware for certain USB-to-serial adapters (specifically Xsens motion trackers using TI chips), the kernel fails to properly validate the size of data being copied into a fixed-size buffer. An attacker with local access could supply a malicious firmware file that triggers a heap buffer overflow, potentially allowing code execution or system crash.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weaknesses (CWE)
CWE-787
Affected products
13 configuration(s)
Published / Modified
2026-06-25 / 2026-07-06

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: USB: serial: io_ti: fix heap overflow in build_i2c_fw_hdr() build_i2c_fw_hdr() allocates a fixed-size buffer of (16*1024 - 512) + sizeof(struct ti_i2c_firmware_rec) bytes, then copies le16_to_cpu(img_header->Length) bytes into it without validating that Length fits within the available space after the firmware record header. img_header->Length is a __le16 from the firmware file and can be up to 65535. check_fw_sanity() validates the total firmware size but not img_header->Length specifically. Fix by rejecting images where img_header->Length exceeds the available destination space.

8 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-53195 is a heap buffer overflow in the Linux kernel's USB serial io_ti driver, specifically in the build_i2c_fw_hdr() function. The function allocates a fixed buffer of (16*1024 - 512) + sizeof(struct ti_i2c_firmware_rec) bytes but fails to validate the Length field from the firmware image header before copying img_header->Length bytes into it. The Length field is a 16-bit little-endian value sourced directly from an untrusted firmware file and can reach 65535 bytes. While check_fw_sanity() validates the overall firmware size, it does not constrain individual image header lengths. This permits writing beyond the allocated buffer boundary into adjacent heap memory. The vulnerability is classified as CWE-787 (Out-of-bounds Write).

Business impact

This vulnerability affects Linux systems that use USB-to-serial devices based on TI chipsets (particularly Xsens motion tracking devices). Exploitation requires local access and the ability to supply a crafted firmware file, making it primarily a risk in development, testing, and manufacturing environments where such devices are regularly connected. Successful exploitation could lead to kernel memory corruption, denial of service, or local privilege escalation depending on heap layout and attacker objectives. Organizations managing fleet deployments of these devices should assess exposure and prioritize patching accordingly.

Affected systems

The Linux kernel is affected across multiple versions. USB-to-serial converters and devices using TI I2C firmware loading (io_ti driver) are the primary hardware targets. This includes Xsens motion tracking devices and potentially other industrial/embedded USB serial devices. Exposure is limited to systems where: (1) the io_ti driver is compiled and active, (2) a user can trigger firmware loading operations, and (3) untrusted firmware files can be supplied.

Exploitability

Exploitation requires local system access (CVSS Attack Vector: Local) and the ability to write or supply a malicious firmware file to be loaded by the affected driver. No special privileges are strictly required at the initial access level, though firmware loading may be restricted to privileged users depending on system configuration. The vulnerability is reliably triggerable once a crafted firmware file is provided—there are no race conditions or timing dependencies. This makes it exploitable in controlled environments but less likely to be weaponized for remote attacks.

Remediation

The fix adds validation logic to reject firmware image files where the Length field in the firmware header exceeds the available destination buffer space. Patches applied to the build_i2c_fw_hdr() function now compare img_header->Length against the remaining buffer capacity and return an error if the length is invalid. This prevents the overflow condition before any data copy occurs. Verify the specific kernel version patches against the Linux kernel security advisory and your distribution's patch announcements.

Patch guidance

Apply security updates from your Linux distribution for kernel versions affected by this vulnerability. Check your distribution's security advisory channels (e.g., RHEL, Ubuntu, Debian security notices) for patched kernel versions. If using a vendor-supplied kernel (embedded system, appliance), contact the vendor for availability. Until patching is possible, restrict access to firmware loading mechanisms and validate firmware sources. Verify the patch contains the length validation logic added to build_i2c_fw_hdr().

Detection guidance

Monitor system logs for repeated firmware loading failures or suspicious io_ti driver error messages related to invalid firmware headers. If kernel debugging is available, enable trace points on the io_ti driver's firmware loading path to detect rejected images. On affected systems still pending patches, implement file integrity monitoring on firmware repositories and restrict which users or processes can trigger USB serial device firmware operations. Kernel crash dumps mentioning the io_ti driver or heap corruption should be investigated as potential exploitation attempts.

Why prioritize this

While the CVSS score is 7.8 (HIGH), actual risk depends on your environment. Prioritization should reflect your specific exposure: does your organization use TI-based USB serial devices? Do users have regular local access with ability to supply firmware? Development and manufacturing teams should patch urgently; pure server environments may defer unless USB serial devices are actively deployed. The local-only attack vector and need for explicit firmware loading reduce enterprise-wide criticality but increase importance for teams working with embedded hardware.

Risk score, explained

The CVSS 3.1 score of 7.8 reflects a HIGH-severity vulnerability with local attack vector, low complexity, low privilege requirement, and high impact across confidentiality, integrity, and availability. The score appropriately captures the severity of heap overflow exploitation potential. However, real-world risk is modulated by attack prerequisites (local access, ability to load firmware) that may not apply universally across all Linux deployments. Organizations should supplement the base score with environmental factors reflecting their own io_ti device usage.

Frequently asked questions

What devices are affected by this vulnerability?

USB-to-serial converters and devices using Texas Instruments I2C firmware loading, including Xsens motion tracking devices, are the primary targets. Any USB serial device relying on the Linux kernel's io_ti driver for firmware management could be affected. Consult your device vendor to confirm if your model uses TI I2C firmware loading.

Do I need local access to exploit this vulnerability?

Yes. The vulnerability requires local system access to supply a malicious firmware file and trigger the firmware loading process. It cannot be exploited remotely over a network. However, any local user may be able to trigger firmware loading depending on system permissions and driver configuration.

Will this affect my server without USB serial devices?

Unlikely, unless your server actively uses USB-to-serial adapters (e.g., for hardware management or specialized sensors). Cloud and virtual environments without physical USB devices are not exposed. Verify your deployment includes io_ti driver usage before raising priority.

What is the difference between this fix and the pre-existing check_fw_sanity() function?

check_fw_sanity() validates the overall firmware file size but does not check whether individual image headers (the Length field) fit within the fixed buffer allocated for header copying. The fix adds specific bounds checking on the Length value to prevent copying beyond buffer boundaries.

This analysis is based on publicly available vulnerability data and the CVE description provided. Specific patched kernel versions and distribution release dates should be verified against official Linux distribution security advisories and the Linux kernel security documentation. No exploit code or weaponization details are provided herein. Organizations should conduct their own risk assessment based on their specific hardware configurations, user access policies, and kernel versions in use. This vulnerability requires local system access and does not pose a direct remote exploitation risk. Source: NVD (public-domain), retrieved 2026-08-03. Analysis generated by SEC.co (claude-haiku-4-5).