Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect malicious USB-C partner device
-
DeliveryComplete normal SVDM mode discovery
-
ExploitDrive altmodes to ALTMODE_DISCOVERY_MAX-1
-
ExecutionSend unsolicited Discover Modes ACK with seven VDOs
-
PersistOverflow altmode_desc[] into partner_altmode[] pointers
-
ImpactCorrupt kernel memory with partner-chosen bytes
Vulnerability Assessment
| Exploitation Conditions | Exploitation requires the host to run the Linux kernel USB Type-C Port Manager (tcpm) with Power Delivery Structured VDM alternate-mode discovery, and the attacker must present a malicious or broken USB-C port partner that is physically connected. The specific trigger stated in the source: once port->partner is set, the CMDT_RSP_ACK handler in tcpm_pd_svdm() consumes an unsolicited Discover Modes ACK unconditionally without correlating it to a sent request, so the partner first drives altmodes to ALTMODE_DISCOVERY_MAX-1 through the normal flow and then sends one extra Discover Modes ACK containing seven VDOs, which passes the single pre-loop bound check and writes past altmode_desc[]. Limiting factors that reduce real-world risk: a physical/adjacent malicious USB-C device is required (no network path), only kernels containing the vulnerable svdm_consume_modes() loop are affected, and exploitation depends on the attacker controlling the port-partner device rather than on any host-side user action. |
| Impact | This is a bounded out-of-bounds write in the Linux kernel USB Type-C Port Manager (tcpm) driver. The supplied CVSS vector (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, base 5.5) models only an availability impact, but the description is explicit that a broken or malicious USB-C port partner can drive altmodes to ALTMODE_DISCOVERY_MAX-1 and then send one extra Discover Modes ACK with seven VDOs, writing up to five entries past altmode_desc[] into the adjacent partner_altmode[] pointer array with partner-chosen SVID/VDO bytes - that is attacker-influenced memory corruption, which implies an integrity impact the input vector scores as I:N. There is also tension in the attack vector: the attacker here is a connected USB-C device partner, which is physical/adjacent rather than a logged-in local user, so AV:L/PR:L understates the need for a malicious device and overstates it as ordinary authenticated-local access - verify the intended attack model with the vendor. On exploitation signals the picture is low urgency: EPSS is 0.20% (10th percentile), there is no CISA KEV listing, and no public exploit identified at time of analysis; the only elevated signal is the vendor priority label 'this_month' and the broad affected footprint. Net assessment: a real but non-emergency hardening fix - genuine kernel memory corruption reachable only by an attacker who can present a malicious USB-C partner device, so realistic risk is far lower than the ubiquity of Linux would suggest. |
| Exploit ScenarioDerived | An attacker connects a malicious or deliberately non-compliant USB-C Power Delivery device (or uses compromised partner firmware) to a target running a vulnerable kernel. After the normal SVDM discovery flow fills altmode_desc[] to ALTMODE_DISCOVERY_MAX-1, the device sends an unsolicited Discover Modes ACK carrying seven VDOs; because the bound is checked only once before the loop, the kernel writes partner-controlled bytes past the array into the adjacent partner_altmode[] pointer storage, corrupting kernel memory. No public exploit identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Out-of-bounds write in the Linux kernel USB Type-C Port Manager (tcpm) driver lets a malicious or malfunctioning USB-C port partner corrupt kernel memory adjacent to the altmode_desc[] array in struct tcpm_port. Kernels containing the vulnerable svdm_consume_modes() loop are affected and are fixed in 6.12.93, 6.18.35, 7.0.12 and 7.1; exploitation requires the host to run tcpm with Power Delivery Structured VDM alternate-mode discovery and the attacker to have a physically connected malicious port partner, so there is no network-reachable path and no host-side user action is involved. Our assessment scores this AV:P/AC:L/PR:N/UI:N with high integrity and availability impact, reflecting that a crafted partner device can write past the array into the neighbouring partner_altmode[] pointer array; EPSS is low at 0.20% (10th percentile) and no public exploit has been identified at time of analysis, while vendor patches are available.
RemediationAI
Vendor-released patches are available: update to Linux 6.12.93, 6.18.35, 7.0.12 or 7.1, or to the corresponding stable commit (845598b154b9a92e9d279fafafa9405c121ae805, 4505f33dab56c274e82f47f94bf60a8cbf8f4b42, cbad85b446c06adbc5e5bed565871bb918ce9d32, 3389c149c68c3fea61910ad5d34f7bf3bff44e32), which relocates the bound check inside the loop. Ubuntu users should apply USN-8593-1 (https://ubuntu.com/security/notices/USN-8593-1); the upstream commits are at https://git.kernel.org/stable/c/845598b154b9a92e9d279fafafa9405c121ae805 and the sibling stable links, with the advisory context at https://seclists.org/oss-sec/2026/q3/230 and https://vuldb.com/vuln/380417. Because the only trigger is a physically attached malicious or malfunctioning USB-C port partner that becomes port->partner and sends an unsolicited Discover Modes ACK, exposure can be constrained until patching by controlling who can attach USB-C devices to Type-C/PD-capable ports; that trade-off limits legitimate dock, dongle and charger use on those ports, so it is a stopgap rather than a substitute for the kernel update.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw lives in the USB Type-C Port Manager's Structured VDM handling. svdm_consume_modes() populates altmode_desc[ALTMODE_DISCOVERY_MAX] from the VDOs returned by a Discover Modes response, and the original code validated pmdata->altmodes against the array bound only once, before the loop over the mode count, rather than on each iteration. In a conformant discovery flow this is benign: at most SVID_DISCOVERY_MAX SVIDs each contribute at most MODE_DISCOVERY_MAX modes, which exactly fills altmode_desc[]. The precondition for abuse is that the CMDT_RSP_ACK branch of tcpm_pd_svdm() consumes an incoming Discover Modes ACK unconditionally once port->partner is set, without correlating it to a request the port actually sent. A hostile or broken partner can therefore drive altmodes to ALTMODE_DISCOVERY_MAX - 1 through the normal flow and then send one extra Discover Modes ACK carrying seven VDOs; the single pre-loop check passes and the loop writes up to five entries past altmode_desc[]. In struct tcpm_port the field following mode_data_prime is the partner_altmode[] pointer array, which receives partner-chosen SVID/VDO bytes - a bounded but attacker-influenced kernel memory corruption rather than a mere information leak. The supplied data assigns no CWE, though the defect class is an out-of-bounds write; the correct fix moves the bound check inside the loop so indexing cannot exceed ALTMODE_DISCOVERY_MAX regardless of VDO count or call path.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
A malicious USB-C partner must be physically connected (AV:P) with no host authentication (PR:N); the partner-controlled out-of-bounds write corrupts adjacent kernel pointers, giving I:H and A:H with no direct disclosure.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
4DescriptionNVD
In the Linux kernel, the following vulnerability has been resolved:
usb: typec: tcpm: bound altmode_desc[] per iteration in svdm_consume_modes()
svdm_consume_modes() checks pmdata->altmodes against the array size once before the loop over the count, but forgot to check the bound at every point in the loop.
In the well-behaved SVDM discovery flow this is harmless because each of at most SVID_DISCOVERY_MAX SVIDs contributes at most MODE_DISCOVERY_MAX modes, exactly filling altmode_desc[ALTMODE_DISCOVERY_MAX]. But the CMDT_RSP_ACK handler in tcpm_pd_svdm() does not correlate an incoming ACK with any request the port actually sent. Once port->partner is set, an unsolicited Discover Modes ACK is consumed unconditionally. A broken or malicious port partner can therefore drive altmodes to ALTMODE_DISCOVERY_MAX - 1 via the normal flow, and then send one extra Discover Modes ACK with seven VDOs. Because the pre-loop check passes, the loop could then writes up to five entries past altmode_desc[]. For mode_data_prime the next field in struct tcpm_port is the partner_altmode[] pointer array, which then receives partner-chosen SVID/VDO bytes.
Move the bound check inside the loop so the array can never be indexed past ALTMODE_DISCOVERY_MAX regardless of how many VDOs the partner supplies or how the function was reached.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-45735
GHSA-2qj8-cjv3-rxv7
NVD
CVE.org
EPSS
VulDB
Exploit-DB