CVE-2026-90025 Overview
CVE-2026-90025 is an out-of-bounds array index vulnerability in the Linux kernel's USB Type-C Connector System Software Interface (UCSI) DisplayPort driver. The flaw exists in the driver's handling of the GET_CURRENT_CAM response from the Platform Policy Manager (PPM). The driver only validates that the returned value is not 0xff before using it to index the connector's port altmode array, which is bounded by UCSI_MAX_ALTMODES. A PPM that returns an invalid value greater than UCSI_MAX_ALTMODES and not equal to 0xff can trigger a kernel crash from array index overflow.
Critical Impact
A malicious or malfunctioning USB Type-C device acting as a PPM can crash the Linux kernel through a local attack vector, resulting in denial of service.
Affected Products
- Linux kernel builds including the UCSI DisplayPort driver (drivers/usb/typec/ucsi/displayport.c)
- Systems with USB Type-C controllers exposing UCSI to the kernel
- Multiple stable kernel branches referenced in the upstream fix commits
Discovery Timeline
- 2026-09-16 - CVE-2026-90025 published to the National Vulnerability Database
- 2026-09-16 - Last updated in the NVD database
Technical Details for CVE-2026-90025
Vulnerability Analysis
The UCSI DisplayPort driver queries the current alternate mode selection from the connector using the GET_CURRENT_CAM command. The response indicates which alternate mode is currently active on the port. The driver checks whether the returned value equals 0xff, a sentinel value indicating no active alternate mode, and proceeds to use the value as an index into the port's altmode array on any other result.
The altmode array holds UCSI_MAX_ALTMODES entries. A PPM returning any value between UCSI_MAX_ALTMODES and 0xfe bypasses the sentinel check and causes the driver to read memory outside the array bounds. This out-of-bounds access can dereference invalid pointers and panic the kernel. The fix adds a bounds check to confirm the current CAM index is less than UCSI_MAX_ALTMODES before array access.
Root Cause
The root cause is insufficient input validation of untrusted data returned by the PPM firmware. The driver treated the range check as complete after excluding the single sentinel value 0xff, ignoring the array's actual upper bound. This is an Out-of-Bounds Read defect in kernel code that trusts external hardware or firmware responses.
Attack Vector
Exploitation requires local access with the ability to attach a USB Type-C device or influence the PPM firmware behavior. A crafted or faulty device that returns an out-of-range GET_CURRENT_CAM response triggers the crash when the DisplayPort altmode path is executed. No user interaction or authentication is required beyond physical or logical proximity to the USB Type-C port.
For technical details, see the upstream fix at Kernel Git Commit 04cec69 and related backports.
Detection Methods for CVE-2026-90025
Indicators of Compromise
- Kernel oops or panic messages referencing ucsi_displayport or displayport.c in dmesg and system logs
- Unexpected system reboots or hangs correlated with USB Type-C device insertion
- Kernel stack traces containing ucsi_displayport_work or altmode array access frames
Detection Strategies
- Inventory running kernel versions across Linux endpoints and compare against the patched stable releases listed in the upstream commits
- Monitor /var/log/kern.log and journalctl -k output for UCSI-related fault signatures
- Correlate USB Type-C hotplug events with subsequent kernel crash telemetry
Monitoring Recommendations
- Forward kernel logs to a centralized logging platform for pattern matching on UCSI fault signatures
- Track USB device attach events alongside system availability metrics on affected hardware
- Alert on repeated kernel panics originating from the same host, which may indicate a persistent malfunctioning or hostile device
How to Mitigate CVE-2026-90025
Immediate Actions Required
- Apply the latest stable kernel update from your Linux distribution vendor that incorporates the UCSI DisplayPort bounds check
- Identify hosts exposing USB Type-C ports in untrusted environments and prioritize patching those systems first
- Restrict physical access to USB Type-C ports on shared or public-facing devices until patches are deployed
Patch Information
The upstream fix adds a validation that the GET_CURRENT_CAM response is less than UCSI_MAX_ALTMODES before indexing the port altmode array. Fix commits are available at Kernel Git Commit 04cec69, Kernel Git Commit 1ffed96, Kernel Git Commit 33a81ac, Kernel Git Commit 58e0ee2, Kernel Git Commit 83f1abd, Kernel Git Commit 8fde7e4, Kernel Git Commit ac9f878, and Kernel Git Commit bdaaf30.
Workarounds
- Blacklist the ucsi_displayport functionality where DisplayPort alternate mode is not required on the host
- Disable USB Type-C ports in system firmware on kiosks or servers that do not require them
- Enforce USB device control policies to restrict which classes of devices are permitted to negotiate alternate modes
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

