CVE-2026-80752 в Linux Kernel: NULL pointer dereference в драйвере psxpad-spi

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

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


В драйвере psxpad-spi ядра Linux обнаружена ошибка, приводящая к обращению по нулевому указателю при переходе устройства в режим энергосбережения.

Проблема возникает, если функция probe не сохраняет данные драйвера, а suspend пытается их прочитать. Исправление уже опубликовано в mainline и стабильных ветках ядра.

Материал описывает механизм сбоя, условия срабатывания и способы проверки актуальности системы.

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


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

  • Тип ошибки: Обращение по нулевому указателю (NULL pointer dereference) в функции psxpad_spi_suspend().
  • 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), отсутствие необходимости в привилегиях (PR:N), отсутствие пользовательского взаимодействия (UI:N).
  • Эксплуатация: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
  • EPSS: 0,21% (процентиль 11,17%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.

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


Уязвимость затрагивает драйвер psxpad-spi в ядре Linux. Проблема существует в версиях, содержащих исходный код до исправления, опубликованного в коммите 732f38c36059e68ba3b4b89c56911d777fd3185c.

  • Компонент: drivers/input/joystick/psxpad-spi.c.
  • Устройства: Контроллеры PlayStation 1/2, подключенные по шине SPI.
  • Ветки ядра: Исправление внесено в mainline и стабильные ветки (stable). Точные номера версий пакетов для дистрибутивов не указаны в предоставленных источниках, необходимо сверяться с базами данных конкретных дистрибутивов.

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


Причина ошибки заключается в нарушении порядка инициализации данных драйвера. Функция psxpad_spi_suspend() пытается получить состояние контроллера с помощью вызова spi_get_drvdata(). Однако в функции psxpad_spi_probe() данные драйвера никогда не сохранялись через spi_set_drvdata().

В результате при попытке приостановки работы устройства функция spi_get_drvdata() возвращает NULL. Последующее обращение к этому указателю приводит к срабатыванию обработчика исключений ядра и аварийному завершению работы системы (panic).

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


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

Внутри этой функции происходит попытка чтения данных контроллера. Поскольку указатель на данные не был инициализирован на этапе загрузки драйвера, обращение к памяти по адресу NULL вызывает сбой. Механизм не требует выполнения произвольного кода, но приводит к немедленному отказу в обслуживании.

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


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

  • В системе установлен драйвер psxpad-spi.
  • Физически подключен контроллер PlayStation 1/2 по шине SPI.
  • Система или конкретное устройство переходит в режим энергосбережения (suspend).
  • Ядро не содержит исправления, добавляющего вызов spi_set_drvdata() в функцию probe.

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


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

Драйвер psxpad-spi получает команду suspend. Функция psxpad_spi_suspend() пытается сохранить состояние контроллера, вызывая spi_get_drvdata(). Получив NULL, ядро фиксирует сбой и завершает работу.

Пользователь видит сообщение об ошибке ядра (kernel panic) и вынужден перезагрузить систему.

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


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

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


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

  • Внезапное завершение работы системы (kernel panic) при переходе в режим сна.
  • Записи в журнале ядра (dmesg) с упоминанием psxpad-spi и NULL pointer dereference.
  • Нестабильность системы при подключении контроллеров PlayStation по SPI.

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


Для обнаружения потенциального срабатывания уязвимости необходимо анализировать логи ядра. Ищите записи, содержащие строки psxpad-spi и BUG: unable to handle kernel NULL pointer dereference. Также полезно проверять, подключены ли в системе устройства, использующие этот драйвер, и не инициируется ли их приостановка.

  • Проверка логов: dmesg | grep psxpad-spi.
  • Проверка подключенных устройств: ls /dev/input/ (для идентификации контроллеров).

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


Для проверки версии ядра и определения необходимости обновления используйте следующие команды. Они безопасны и не изменяют состояние системы.

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

Полученную версию ядра необходимо сверить с базой данных уязвимостей вашего дистрибутива Linux, чтобы убедиться, что пакет ядра содержит исправление для CVE-2026-80752.

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


Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Исправление добавляет вызов spi_set_drvdata(spi, pad) в функцию psxpad_spi_probe(), что гарантирует корректную инициализацию данных перед их использованием.

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

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


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

  • Отключите контроллер PlayStation 1/2 по SPI, если он не используется.
  • Настройте параметры энергосбережения ядра так, чтобы устройство не переходило в режим suspend.
  • Используйте альтернативные методы подключения контроллеров, не использующие драйвер psxpad-spi.

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


После обновления ядра и перезагрузки системы необходимо убедиться, что исправление применено. Проверьте версию ядра и наличие соответствующих коммитов в исходном коде, если это возможно в вашем окружении.

  • Проверьте версию: uname -r.
  • Убедитесь, что система стабильно работает при подключении контроллера и переходе в режим сна (если это допустимо в вашей среде).

Вывод​


CVE-2026-80752 представляет собой локальную уязвимость, приводящую к отказу в обслуживании. Несмотря на высокий балл CVSS, практический риск ограничен системами с подключенными контроллерами PlayStation по SPI.

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

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


  1. NVD — CVE-2026-80752
  2. FIRST EPSS — CVE-2026-80752
  3. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree
  4. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree
  5. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree
  6. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree
  7. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree
  8. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree
  9. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree
  10. Input: psxpad-spi - set driver data before use - kernel/git/stable/linux.git - Linux kernel stable tree

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


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