CVE-2026-89471 in LinuxИнформация

Сводка

по VulDB • 12.09.2026

В ядре Linux была устранена следующая уязвимость:

power: supply: cros_usbpd-charger: ограничение количества портов, сообщаемых EC (Embedded Controller)

Функция `cros_usbpd_charger_probe()` считывает два значения счетчика портов из контроллера EC и использует одно из них — `num_charger_ports` — в качестве границы цикла при заполнении массива фиксированного размера:

```c struct port_data *ports[EC_USB_PD_MAX_PORTS]; /* 8 записей */
... for (i = 0; i < charger->num_charger_ports; i++) charger->ports[charger->num_registered_psy++] = port;
```

Оба значения, `num_usbpd_ports` (из `EC_CMD_USB_PD_PORTS`) и `num_charger_ports` (из `EC_CMD_CHARGE_PORT_COUNT`), являются 8-битными целыми числами (`u8`), сообщаемыми контроллером EC. Единственная проверка — это базовая проверка корректности, которая сравнивает эти два значения, полученные от EC:

```c if (num_charger_ports < num_usbpd_ports || num_charger_ports > num_usbpd_ports + 1) return -EPROTO; ```

При этом ни одно из этих значений не проверяется на соответствие размеру массива `ports[]`, равному `EC_USB_PD_MAX_PORTS`. Неисправный, злонамеренный или скомпрометированный контроллер EC, который сообщает значения `num_usbpd_ports == num_charger_ports == N` для любого `N > 8` (например, оба равны 255), проходит эту проверку. В результате цикл записывает `N` указателей в массив `ports[]`, состоящий из 8 элементов и встроенный в структуру `charger_data`, выделенную через `devm_kzalloc()`. Это приводит к переполнению буфера на величину до `255 - 8 = 247` записей (~1976 байт): происходит запись вне границ области памяти (slab out-of-bounds write).

Отклонять количество портов, превышающее вместимость массива `ports[]`.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

11.09.2026

Раскрытие

12.09.2026

Модерация

принято

Вход

VDB-402853

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Do you want to use VulDB in your project?

Use the official API to access entries easily!