ZeroHour

CVE-2026-89470

mass

Out-of-bounds write in Linux kernel cros_usbpd-charger via malicious EC port count

CVSS 3.1
8.4 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's cros_usbpd-charger power supply driver trusts the raw charger port count reported by the device's embedded controller (EC) during probe, with only an inadequate check against the EC's USB PD port count. A malicious or compromised EC firmware can return a port count of up to 255, causing the driver to write past the end of its port arrays, resulting in an out-of-bounds write and kernel memory corruption with potential high impact to confidentiality, integrity, and availability. The attack vector is local (the EC sits on the machine itself), so practical exploitation presupposes an attacker who can control or flash rogue EC firmware rather than a remote adversary. The flaw primarily affects ChromeOS-style systems — Chromebooks and Linux installations on hardware built around the ChromeOS embedded controller with USB-C/PD charging. No public proof of concept exists, the issue is not in CISA's KEV, and no exploitation in the wild is known; this is a defense-in-depth hardening fix.

What to do: Apply kernel updates containing the cros_usbpd-charger fix (port counts clamped to EC_USB_PD_MAX_PORTS) as soon as your distribution or ChromeOS auto-update channel ships it. Verify that EC firmware only comes from signed, vendor-approved update paths, since triggering the bug requires control of the embedded controller. Defenders should treat unexpected or unsigned EC/BIOS firmware changes on managed fleets as a high-severity signal.

Affected
Linux kernel (power: supply: cros_usbpd-charger) Linux kernel with the cros_usbpd-charger driver (ChromeOS EC-based USB PD charging)
Estimated exposure
mass≈100M+ devices (cumulative Chromebook/ChromeOS install base, plus Linux on EC-based Chromebook hardware) — The cros_usbpd-charger driver is specific to ChromeOS embedded-controller hardware, and cumulative Chromebook shipments and reported education deployments put that installed base well over 100 million devices, though practical exploitation…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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.

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

In the news

No ingested article mentions this CVE yet.