CVE-2026-89471High· 8.4▾ TwilightIn the Linux kernel, the following vulnerability has been resolved: power: supply: cros_usbpd-charger: bound the EC-reported port count cros_usbpd_charger_probe() reads two port counts from the EC and uses one of them, num_charger_port…
▾ Twilight zone — High severity, or a signal on a lesser flaw
impact 46.2 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Sep 12.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via CVEORG
0.2%
— → 6.4
none → medium
— → 8.4
none → high
8.4 → 6.4
high → medium
6.4 → 8.4
medium → high
8.4 → 5.5
high → medium
0.2% → 0.2%
Last analysed / modified upstream
5.5 → 8.4
medium → high
In the Linux kernel, the following vulnerability has been resolved:
power: supply: cros_usbpd-charger: bound the EC-reported port count
cros_usbpd_charger_probe() reads two port counts from the EC and uses one of them, num_charger_ports, as the loop bound when populating a fixed-size array:
struct port_data *ports[EC_USB_PD_MAX_PORTS]; /* 8 entries */
...
for (i = 0; i < charger->num_charger_ports; i++)
charger->ports[charger->num_registered_psy++] = port;
Both num_usbpd_ports (from EC_CMD_USB_PD_PORTS) and num_charger_ports (from EC_CMD_CHARGE_PORT_COUNT) are u8 values reported by the EC. The only validation is a sanity check that compares the two EC-reported values against each other:
if (num_charger_ports < num_usbpd_ports ||
num_charger_ports > num_usbpd_ports + 1)
return -EPROTO;
It never checks either count against EC_USB_PD_MAX_PORTS, the size of the ports[] array. A malfunctioning, malicious or compromised EC that reports num_usbpd_ports == num_charger_ports == N for any N > 8 (for example both 255) passes this check, and the loop then writes N pointers into the 8-entry ports[] array embedded in the devm_kzalloc()'d charger_data, overflowing it by up to 255 - 8 = 247 entries (~1976 bytes): a slab out-of-bounds write.
Reject a port count larger than the ports[] array can hold.
Linux >= f68b883e8fad23ed0ac4756d91594809d78678ed < 0b5096f6804161b61451b1cec0e38678630be849Linux >= f68b883e8fad23ed0ac4756d91594809d78678ed < c46c9f447415ca802afab51dea1eafc08ddff1c6Linux >= f68b883e8fad23ed0ac4756d91594809d78678ed < a1905375dfc0b9612bbee52fc066e3a70c0d671dLinux >= f68b883e8fad23ed0ac4756d91594809d78678ed < 2746d502b12b343384fb747bdef9cbcfbd7444a2Linux >= f68b883e8fad23ed0ac4756d91594809d78678ed < fd29d08ee487f3bf50f2575aaa74f78a74b09b21Linux >= f68b883e8fad23ed0ac4756d91594809d78678ed < 78be8b7403ff7638162438b664a07d19da76059eLinux >= f68b883e8fad23ed0ac4756d91594809d78678ed < 3d1e01443b221081258ff34ea0cdd0431e4ff62eLinux >= f68b883e8fad23ed0ac4756d91594809d78678ed < 48355ce49359740f52e94d3623f6fc557ce341f0Linux 4.19Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
Field changes observed since this record was first indexed.
Connected by shared product, vendor, weakness, or advisory.
CVE-2024-57804High· 7.3scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs
CVE-2024-47794High· 7.8bpf: Prevent tailcall infinite loop caused by freplace
CVE-2025-39977High· 7.8In the Linux kernel, the following vulnerability has been resolved: futex: Prevent use-after-free during requeue-PI syzbot managed to trigger the following race: T1 T2 futex_wait_requeue_pi() fute…
CVE-2026-100070Medium· 5.5In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_nat_sip: rewind offset when NAT shrinks the packet sashiko says: If map_addr() changes the packet length, such as when the public NAT IP string is shor…
CVE-2026-100071Medium· 5.5In the Linux kernel, the following vulnerability has been resolved: net: hsr: free learned nodes on device setup failure hsr_dev_finalize() can fail after a lower-device RX handler has already been registered (slave A is added before t…
CVE-2026-99118Nonedrm/i915/dmc: Harden DMC firmware payload parsing