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

Сводка

по VulDB • 11.09.2026

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

PCI/sysfs: исправлено чтение за пределами буфера в функции pci_write_legacy_io()

Функция pci_write_legacy_io() загружает 4 байта из буфера записи kernsys независимо от того, сколько байт было записано пользователем (userspace):

```c if (count != 1 && count != 2 && count != 4) return -EINVAL;

return pci_legacy_write(bus, off, *(u32 *)buf, count); ```

Функция kernfs_fop_write_iter() выделяет буфер с помощью kmalloc(len + 1), поэтому при записи 1 байта в файл sysfs legacy_io выделяется 2 байта, а безусловная загрузка u32 считывает до 2 байт за пределами выделенной области памяти. KASAN сообщает об этом как о чтении slab-out-of-bounds (за пределами кучи/слэба). Аналогичным образом при записи 2 байтов происходит переполнение на 1 байт.

Таким образом, следует считывать только количество запрошенных байтов, используя функции get_unaligned_le16() и get_unaligned_le32() для случаев с 2 и 4 байтами соответственно, интерпретируя буфер как little-endian (с прямым порядком байт), чтобы соответствовать порядку байт в пространстве портов ввода-вывода PCI.

Реализация для архитектуры PowerPC ранее компенсировала загрузку 32-битных значений с родным порядком байт (native-endian) из общего кода путем сдвига значения на нужную позицию для случаев с 1 и 2 байтами. Эти сдвиги были корректны только в ядрах big-endian.

На little-endian системах PowerPC (POWER8 и новее) они выбирали неверные байты, поэтому при записи 1 байта записывался байт вне допустимой области вместо запрошенного значения. В big-endian режимах родная загрузка также приводила к тому, что функции out_le16() и out_le32() меняли местами байты пользователя на шине для записей по 2 и 4 байта. Функции-помощники little-endian решают обе эти проблемы, поэтому сдвиги удаляются.

Для платформы Alpha изменения не требуются.

Файл legacy_io доступен только пользователю root (root-only) и существует только на архитектурах Alpha и PowerPC — двух архитектурах, определяющих HAVE_PCI_LEGACY.

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

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

Linux

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

11.09.2026

Раскрытие

11.09.2026

Модерация

принято

Вход

VDB-402559

EPSS

0.00000

KEV

Нет

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

Низкий

Источники

Want to know what is going to be exploited?

We predict KEV entries!