PT-2026-61279 · Linux · Linux

CVE-2026-63962

·

Published

2026-07-19

·

Updated

2026-07-19

None

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
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.
Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-63962

Affected Products

Linux