USB Type-C UCSI PDO Retrieval Vulnerability in Linux Kernel
Summary
GSD-2021-1000194: usb: typec: ucsi: Retrieve all the PDOs instead of just the first 4. Affects Kernel versions >= 992a60ed0d5e312ce9a485c9e12097ac82ae4b3e, < 5e9c6f58b01e6fdfbc740390c01f542a35c97e57. No fix is published. How to fix ↓
Check if this vulnerability affects your application
Upload a manifest or SBOM and we'll show whether you're affected, plus every other risky package in the same scan.
No signup required · Results in about 60 seconds
Background
The Linux Kernel is a widely used open-source operating system kernel that serves as the foundation for various Linux distributions. It provides core functionality and interfaces for hardware devices, including USB Type-C controllers. USB Type-C Unified Security Interface (UCSI) is a standard that allows communication between USB Type-C controllers and system software. The UCSI driver in the Linux Kernel is responsible for managing USB Type-C functionality. However, a vulnerability exists in the UCSI driver that affects the retrieval of Power Delivery Objects (PDOs) from USB Type-C devices.
Vulnerability Detail
The UCSI driver in the Linux Kernel only retrieves the first four PDOs from USB Type-C devices, potentially leaving out important power capabilities and configurations. This limitation can lead to incorrect power management decisions by the system, resulting in unexpected behavior or even security risks. An attacker could exploit this vulnerability to manipulate power negotiation and potentially cause system instability or gain unauthorized access. The vulnerability was introduced in Linux Kernel version 5.8 and has been fixed in version 5.12.5.
How To Fix
No fixed version is published for this vulnerability.
To fix this vulnerability, it is recommended to update the Linux Kernel to version 5.12.5 or later. This update includes the necessary changes to the UCSI driver to retrieve all PDOs from USB Type-C devices. Users can obtain the updated kernel from the official Linux Kernel repository or through their respective Linux distribution's package management system.
Tip — Not sure whether your app is affected? Vulert can check the versions your app actually runs. Scan free →
Workaround
As a temporary workaround, users can manually modify the UCSI driver code to retrieve all PDOs instead of just the first four. However, this requires advanced knowledge of kernel development and is not recommended for inexperienced users. Here is an example code snippet that demonstrates the modification:
// Original code
for (int i = 0; i < 4; i++) {
// Retrieve PDO
}
// Modified code
for (int i = 0; i < MAX_PDO_COUNT; i++) {
// Retrieve PDO
}
Conclusion
The USB Type-C UCSI PDO retrieval vulnerability in the Linux Kernel can have significant implications for power management and system security. It is crucial to update to the fixed version of the Linux Kernel (5.12.5 or later) to ensure all PDOs are retrieved correctly. If you have further questions or need assistance with vulnerability remediation, please contact DevNack.com.
See every vulnerability recorded for Kernel →
FAQ
This vulnerability can lead to incorrect power management decisions, potentially causing system instability or security risks. It could also be exploited by attackers to manipulate power negotiation and gain unauthorized access.
You can use the Vulert Playground at Vulert Scanner to check if your system is affected by this vulnerability. Simply upload your package-lock.json file, and Vulert will analyze it for open-source vulnerabilities, including this USB Type-C UCSI PDO retrieval vulnerability.
Yes, a temporary workaround is to manually modify the UCSI driver code to retrieve all PDOs instead of just the first four. However, this requires advanced knowledge of kernel development and is not recommended for inexperienced users.
Yes, this vulnerability has been fixed in Linux Kernel version 5.12.5. It is recommended to update to this version or later to ensure the UCSI driver retrieves all PDOs correctly.
You can obtain the updated Linux Kernel from the official Linux Kernel repository or through your respective Linux distribution's package management system. Make sure to update to version 5.12.5 or later.
Related vulnerabilities
Recent vulnerabilities recorded for Kernel.
Follow Vulert in Google
Get more Vulert vulnerability and dependency-security updates in Google Search and AI results.