CVE-2026-80923 в Linux Kernel: use-after-free в xhci dbgtty

CVE: CVE-2026-80923
Продукт: Linux Kernel
Дата публикации: 09.09.2026
Критичность: не определена
CVSS: нет данных
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В подсистеме debug console драйвера xHCI ядра Linux обнаружена ошибка use-after-free. Сбой возникает при выгрузке модуля, если регистрация tty-драйвера ранее завершилась ошибкой.

Глобальный указатель на драйвер не обнуляется после освобождения памяти, что приводит к обращению к освобожденной области при очистке. Исправление включено в mainline и стабильные ветки ядра.

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


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

  • Тип ошибки: Use-after-free (UAF) в функции dbc_tty_exit().
  • CVSS: Официальная оценка NVD на момент публикации отсутствует.
  • Условия атаки: Требуется выгрузка модуля xhci_hcd после неудачной инициализации tty_register_driver().
  • Факт эксплуатации: Публичные данные об активной эксплуатации или PoC в предоставленных источниках отсутствуют.
  • EPSS: Данные о вероятности эксплуатации в предоставленном пакете доказательств не указаны.

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


Уязвимость затрагивает ядро Linux, начиная с версии 5.10, где была введена функция dbc_tty_init().

  • Версии ядра: Все стабильные ветки, содержащие код drivers/usb/host/xhci-dbgtty.c без исправления.
  • Компонент: Драйвер USB xHCI, подсистема debug console (dbgtty).
  • Статус исправления: Патч a916fa66a43e10f63198b6ce978badffc678821a применен в mainline и стабильных ветках (v5.10 и новее).

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


Причина ошибки заключается в некорректной обработке сбоев при регистрации драйвера tty. Функция tty_register_driver() при неудаче освобождает память драйвера через tty_driver_kref_put(), но не обнуляет глобальный указатель dbc_tty_driver.

В результате указатель остается «висячим» (dangling). При последующей выгрузке модуля функция dbc_tty_exit() проверяет только, не равен ли указатель NULL. Поскольку он не обнулен, код пытается вызвать tty_unregister_driver() на уже освобожденной памяти, что приводит к use-after-free.

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


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

Затем, при выгрузке модуля (например, через rmmod), код очистки срабатывает. Функция dbc_tty_exit() видит ненулевой указатель и пытается отрегистрировать драйвер.

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

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


Для воспроизведения ошибки необходимо выполнение ряда технических условий.

  • Модуль xhci_hcd: Должен быть загружен в ядро.
  • Сбой регистрации: Функция tty_register_driver() должна вернуть ошибку (например, из-за нехватки ресурсов или конфликта).
  • Выгрузка модуля: После сбоя инициализации модуль должен быть выгружен.
  • Права доступа: Операции с модулями ядра требуют привилегий root.

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


Сценарий предполагает, что атакующий или администратор вызывает выгрузку модуля xhci_hcd в системе, где инициализация debug tty ранее завершилась ошибкой. При выгрузке срабатывает уязвимый код очистки.

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

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


В предоставленных источниках отсутствуют сведения о публичных эксплойтах, PoC или подтвержденной эксплуатации CVE-2026-80923 в реальных атаках. Официальные коммиты ядра содержат только техническое описание бага и исправление. Отсутствие данных об эксплойте не гарантирует, что он не существует, но подтвержденных фактов атаки на данный момент нет.

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


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

  • Журналы ядра: Записи о панике ядра (kernel panic) или ошибках памяти (use-after-free) в момент выгрузки модулей.
  • События аудита: Записи о вызовах rmmod или modprobe для xhci_hcd в подозрительное время.
  • Состояние системы: Внезапные перезагрузки или зависания при работе с USB-устройствами.

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


Для обнаружения потенциального срабатывания уязвимости следует анализировать логи ядра и систему аудита.

  • Проверка логов: Используйте dmesg или journalctl -k для поиска сообщений об ошибках в подсистеме tty или USB.
  • Мониторинг модулей: Отслеживайте события загрузки и выгрузки модуля xhci_hcd через auditd.
  • Анализ стабильности: Фиксируйте случаи нештатного завершения работы системы, совпадающие по времени с операциями над USB-драйверами.

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


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

  • Версия ядра: uname -r или uname -a.
  • Детали сборки: cat /proc/version.
  • Проверка патча: Сравните версию ядра с релизными заметками вашего дистрибутива. Убедитесь, что включен коммит a916fa66a43e10f63198b6ce978badffc678821a.

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


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

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

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


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

  • Избегать выгрузки модуля: Не выполняйте rmmod xhci_hcd на системах, где инициализация debug tty могла завершиться ошибкой.
  • Ограничение доступа: Ограничьте права на управление модулями ядра только для доверенных администраторов.
  • Мониторинг: Усиленный мониторинг стабильности системы при работе с USB-устройствами.

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


После обновления ядра необходимо убедиться, что исправление применено.

  • Проверка версии: Выполните uname -r и сравните результат с версией, содержащей патч.
  • Проверка кода: Если доступно, проверьте исходный код ядра или символы модуля на наличие строки dbc_tty_driver = NULL; в функции dbc_tty_init().
  • Тестирование: Проведите тестовую выгрузку и загрузку модуля xhci_hcd в изолированной среде, чтобы убедиться в отсутствии ошибок.

Вывод​


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

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

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


  1. NVD — CVE-2026-80923
  2. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree
  3. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree
  4. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree
  5. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree
  6. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree
  7. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree
  8. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree
  9. xhci: dbgtty: Fix unregister on tty_register_driver() failure - kernel/git/stable/linux.git - Linux kernel stable tree

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


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