CVE-2026-80745 в Linux Kernel: выход за границы таблицы в драйвере fp9931

CVE: CVE-2026-80745
Продукт: Linux Kernel
Дата публикации: 03.09.2026
Критичность: HIGH
CVSS: 8.4 (3.1)
EPSS: 0,12%; процентиль 2,24%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В драйвере регулятора fp9931 обнаружена ошибка, приводящая к выходу за границы таблицы напряжений. Проблема возникает при обращении к элементам массива VPOSNEG_table[] с индексами, превышающими фактический размер структуры.

Уязвимость затрагивает системы с конкретным аппаратным компонентом и требует локального доступа. Статья описывает механику ошибки, условия эксплуатации и методы проверки исправления.

Основные характеристики​


Риск связан с нарушением целостности памяти в ядре при работе с драйвером регулятора напряжения. Ошибка позволяет злоумышленнику с локальным доступом повлиять на состояние системы, что может привести к отказу в обслуживании или повышению привилегий.

  • Тип ошибки: Out-of-bounds read/write (OOB) в статической таблице данных.
  • CVSS 3.1: 8.4 (HIGH). Вектор: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
  • Условия атаки: Локальный доступ (AV:L), отсутствие необходимости в пользовательском взаимодействии (UI:N).
  • Эксплуатация: Публичные данные о реальной эксплуатации в дикой природе отсутствуют.
  • EPSS: 0,12% (0.00122), что указывает на низкую вероятность эксплуатации в ближайшем будущем.

Какие продукты и версии затронуты​


Уязвимость затрагивает драйвер fp9931 в Linux Kernel. Проблема была введена в коммите 12d821bd13d4 при добавлении поддержки данного регулятора.

  • Компонент: drivers/regulator/fp9931.c.
  • Затронутые версии: Все версии ядра, содержащие исходный драйвер fp9931 до применения исправления.
  • Исправление: Включено в стабильные ветки ядра. Основной коммит исправления: 66694b5f90f3876fccb87bbd02b453cdc33b3ae4.

Для точного определения затронутых версий необходимо сверить версию ядра с официальными списками обновлений дистрибутива или upstream-ветками.

Причина уязвимости​


Причина уязвимости заключается в несоответствии между документацией (datasheet) чипа FP9931 и реализацией таблицы напряжений в драйвере.

Таблица VPOSNEG_table[] должна содержать 64 элемента (от 0x00 до 0x3F), но в исходном коде было только 41. Кроме того, в начале таблицы присутствовал лишний элемент, что сдвинуло все последующие значения. В результате, при попытке доступа к индексу выше 0x28 (где напряжение должно быть зафиксировано на 15.06V), драйвер обращался за пределы выделенной памяти массива.

Двойная ошибка (сдвиг и нехватка элементов) привела к тому, что часть валидных по спецификации значений не была обработана, а часть адресов указывала на несуществующие ячейки.

Как работает атака​


Атака эксплуатирует логическую ошибку в маппинге значений регулятора. Драйвер использует таблицу VPOSNEG_table[] для преобразования кода селектора в фактическое значение напряжения.

Если атакующий может повлиять на выбор значения регулятора (например, через интерфейс hwmon или regulator), он может передать драйверу селектор, соответствующий индексу, превышающему размер массива. Это приводит к чтению или записи за границы таблицы.

Поскольку таблица является статической (const), чтение за границы может привести к утечке данных из соседних структур в памяти ядра. Запись (если она возможна через другие механизмы драйвера) может привести к повреждению памяти и выполнению кода в контексте ядра.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:

  • Наличие в системе аппаратного компонента, поддерживаемого драйвером fp9931.
  • Локальный доступ к системе (пользователь или процесс с правами на взаимодействие с интерфейсами регулятора).
  • Возможность управления значениями регулятора или чтения данных через соответствующие sysfs-интерфейсы.
  • Отсутствие исправления в текущей версии ядра.

Возможный сценарий атаки​


Сценарий атаки предполагает, что злоумышленник имеет локальный доступ к системе, где установлен чип FP9931.

  1. Атакующий определяет, что драйвер fp9931 загружен и активен.
  2. Через интерфейс hwmon или regulator он пытается установить или прочитать значение напряжения, соответствующее селектору, например, 0x29 или выше.
  3. Драйвер обращается к VPOSNEG_table[0x29], что выходит за границы массива (размер 41, индекс 41 и выше).
  4. Происходит чтение из памяти, следующей за таблицей. Если атакующий может контролировать содержимое этой памяти или использовать утечку для обхода KASLR, он может получить доступ к чувствительным данным ядра.
  5. В худшем случае, если есть возможность записи, это приводит к повреждению памяти и потенциальному повышению привилегий до root.

Есть ли публичный эксплойт​


На момент публикации CVE-2026-80745 публичные эксплойты или PoC-коды не обнаружены. Официальные источники (NVD, git.kernel.org) содержат только описание ошибки и коммиты с исправлением.

Отсутствие публичного эксплойта не означает, что атака невозможна. Учитывая локальный вектор атаки и сложность эксплуатации OOB-ошибок в ядре, вероятность успешной атаки в реальных условиях пока низка, но не исключена.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости не опубликованы. Однако можно использовать общие признаки аномальной работы драйвера регулятора:

  • Необычные значения напряжений в интерфейсах hwmon.
  • Ошибки в журналах ядра (dmesg), связанные с драйвером fp9931.
  • Аномальные системные вызовы, связанные с изменением настроек регулятора.

Эти признаки неспецифичны и могут быть вызваны другими проблемами.

Как обнаружить атаку​


Для обнаружения потенциальной эксплуатации или аномальной работы драйвера рекомендуется:

  • Мониторинг логов ядра на ошибки, связанные с fp9931.
  • Контроль доступа к интерфейсам hwmon и regulator через auditd или eBPF.
  • Проверка целостности драйвера и его конфигурации.

Так как уязвимость требует локального доступа, детекция должна фокусироваться на аномальной активности локальных пользователей и процессов.

Как проверить свою версию​


Для проверки версии ядра и наличия исправления используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Затем сверьте версию с официальными списками обновлений вашего дистрибутива или upstream-ветками. Убедитесь, что коммит 66694b5f90f3876fccb87bbd02b453cdc33b3ae4 включен в вашу сборку.

Исправление​


Единственным надежным способом устранения уязвимости является обновление ядра до версии, содержащей исправление.

  • Обновите ядро до последней стабильной версии, включающей коммит 66694b5f90f3876fccb87bbd02b453cdc33b3ae4.
  • Если обновление ядра невозможно, рассмотрите отключение драйвера fp9931 (если это допустимо для вашей конфигурации).
  • Следите за обновлениями безопасности от вашего дистрибутива Linux.

Не рекомендуется применять частичные исправления или патчи вручную без полного обновления.

Временные меры защиты​


Пока обновление ядра не выполнено, можно принять следующие временные меры:

  • Ограничьте доступ к интерфейсам hwmon и regulator для непривилегированных пользователей.
  • Используйте seccomp или AppArmor для ограничения системных вызовов, связанных с изменением настроек регулятора.
  • Если возможно, отключите драйвер fp9931 через параметры загрузки ядра (например, modprobe.blacklist=fp9931), если он не критичен для работы системы.

Эти меры снижают, но не устраняют риск полностью.

Как проверить устранение уязвимости​


Для проверки успешного применения исправления:

  1. Убедитесь, что версия ядра соответствует требованиям (см. раздел «Проверка версии»).
  2. Проверьте, что коммит 66694b5f90f3876fccb87bbd02b453cdc33b3ae4 присутствует в истории ядра (если доступно через git или инструменты дистрибутива).
  3. Проведите функциональное тестирование драйвера fp9931, если он используется в вашей системе.
  4. Проверьте логи ядра на отсутствие ошибок, связанных с OOB-доступом.

Вывод​


CVE-2026-80745 представляет собой серьезную уязвимость в драйвере fp9931, способную привести к компрометации системы при локальном доступе. Несмотря на отсутствие публичных эксплойтов, риск остается высоким из-за потенциала для повышения привилегий.

Администраторам систем с данным аппаратным компонентом следует приоритетно обновить ядро до исправленной версии. Временные меры, такие как ограничение доступа к интерфейсам регулятора, могут снизить риск, но не заменяют обновление.

Официальные источники​


  1. NVD — CVE-2026-80745
  2. FIRST EPSS — CVE-2026-80745
  3. regulator: fp9931: Fix VPOS/VNEG voltage selector table - kernel/git/stable/linux.git - Linux kernel stable tree
  4. regulator: fp9931: Fix VPOS/VNEG voltage selector table - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 05.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ