CVE-2026-64330CWE-129

CVE-2026-64330

High · published July 25, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
2.3
In the wild
Unconfirmed
What it is

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

usb: typec: tcpm: Validate SVID index in svdm_consume_modes()

In svdm_consume_modes(), the SVID value is read from pmdata->svids using

pmdata->svid_index as an array index without bounds validation:

paltmode->svid = pmdata->svids[pmdata->svid_index];

If pmdata->svid_index is driven beyond SVID_DISCOVERY_MAX (16), it results

in an out-of-bounds read of the pmdata->svids array. Because pd_mode_data

is embedded inside struct tcpm_port, indexing past svids reads into

adjacent fields. In particular:

- At index 16, it reads the altmodes count.

- At index 18 and beyond, it reads into altmode_desc[], which contains

partner-supplied SVDM Discovery Modes VDOs.

By injecting a chosen SVID into altmode_desc[0].vdo and driving svid_index

to 20, the partner can force paltmode->svid to be loaded with an arbitrary,

partner- chosen SVID, which is then registered via

typec_partner_register_altmode().

Fix this by validating that pmdata->svid_index is non-negative and strictly

less than pmdata->nsvids before accessing the pmdata->svids array inside

svdm_consume_modes().

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00129 · 2.3th percentile
Weakness
CWE-129 · Improper Validation of Array Index
Published
2026-07-25T14:17Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 4.19, < 5.10.2615.10.261
linux/linux_kernel≥ 5.11, < 5.15.2125.15.212
linux/linux_kernel≥ 5.16, < 6.1.1786.1.178
linux/linux_kernel≥ 6.2, < 6.6.1456.6.145
linux/linux_kernel≥ 6.7, < 6.12.966.12.96
linux/linux_kernel≥ 6.13, < 6.18.396.18.39
linux/linux_kernel≥ 6.19, < 7.1.47.1.4
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (8)
EPSS history
Timeline
  • 25 JUL 08:49Z
    usb: typec: tcpm: Validate SVID index in svdm_consume_modes()
    cvelistv5