KernelScan.io

HIGH Introduced in 4.20

cros_usbpd PortCount OOB

CVE-2026-89470

CVSS 8.4 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

KernelScan AI6.8MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: power: supply: cros_usbpd: Limit port counts to EC_USB_PD_MAX_PORTS Currently the cros_usbpd-charger driver probe iterates based on raw charger port count returned by the embedded controller. The only check is against the number of USB PD ports which the embedded controller also defines. A malicious embedded controller could return an inaccurate port count (up to 255) resulting in an out of bounds write and subsequent memory corruption. Update helper functions in cros_usbpd-charger to limit port counts to EC_USB_PD_MAX_PORTS.

02

Engine v0.6.0

Risk summary

The cros_usbpd-charger driver trusts a port count returned by the ChromeOS embedded controller without bounding it to the maximum supported array size. A malicious EC can return an inflated count, causing out-of-bounds writes and kernel memory corruption during driver probe. This is only reachable on ChromeOS-style hardware with a cros EC, and requires a compromised EC via physical access or supply-chain tampering.

Affecteddrivers/power/supply/cros_usbpd-charger.c (power supply / cros_usbpd)

Vulnerability analysis

The cros_usbpd-charger driver trusts port counts returned by the ChromeOS embedded controller during device probe, using them to iterate over internal arrays without first validating against the maximum supported size. A malicious or compromised embedded controller could return an inflated port count, causing the driver to write past the end of its arrays and corrupt kernel memory. The fix limits the port count to the hardware maximum before using it, preventing out-of-bounds access. This vulnerability is reachable only on ChromeOS-style hardware with a cros embedded controller, and triggering it requires a malicious EC — either through physical access to flash compromised firmware or a supply-chain compromise of the EC itself.

03

BranchIntroducedFixed inPatch commit
5.154.205.15.2213ce9218639ff
7.24.207.2.4304a29ac55ba
6.64.206.6.1573262977a05b2
6.184.206.18.504b1f2be1e1b7
mainline4.207.3-rc1657cd3a42e93
6.124.206.12.109fd5f289cca04
6.14.206.1.188dce1750ddbd3
5.104.205.10.270e951b65ef169
cip/6.124.206.12.111-cip32fd5f289cca04