CVE-2026-89970 в Linux Kernel: гонка в nvmet-auth, уязвимые версии и защита

CVE: CVE-2026-89970
Продукт: Linux Kernel
Дата публикации: 16.09.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,78%; процентиль 54,42%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В подсистеме NVMe-oF target ядра Linux обнаружена критическая уязвимость, связанная с нарушением синхронизации при освобождении очереди запросов. Ошибка позволяет фоновой задаче обращаться к памяти, которая уже освобождена или переиспользуется, что создает риск повреждения состояния ядра. Проблема устранена в актуальных ветках ядра.

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


Уязвимость затрагивает подсистему NVMe target и связана с обращением к освобожденной памяти (use-after-free) из-за гонки условий при разрыве сессии. Риск оценивается как критический, так как потенциально позволяет нарушить целостность, конфиденциальность и доступность системы.

  • CVSS: 9.8 (CRITICAL). Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Оценивается как критическая из-за удаленного доступа без аутентификации.
  • EPSS: 0,78% (процентиль 54,42%). Показатель отражает вероятность эксплуатации в ближайшие 30 дней.
  • Тип ошибки: Use-after-free / Race condition. Связана с асинхронным отменением отложенных задач.
  • Статус: CVE опубликован 16.09.2026. Публичные эксплойты на момент публикации не подтверждены.

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


Уязвимость затрагивает подсистему nvmet (NVMe over Fabrics target) в ядре Linux.

  • Компонент: drivers/nvme/target/ (файлы auth.c, core.c, nvmet.h).
  • Условие уязвимости: Ядро содержит коммит 1a70200f404a ("nvmet-auth: expire authentication sessions"), но не содержит исправление eaa948c0e19b1bb2d93262207bca0c3d19cc3406.
  • Платформы: Системы, использующие NVMe-oF target для предоставления NVMe-хранилища по сети.

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


Причина кроется в неправильной обработке отложенных задач (delayed work) при освобождении очереди запросов (Submission Queue, SQ).

Функция nvmet_auth_sq_free() использует cancel_delayed_work() для отмены задачи auth_expired_work. Однако, если задача уже начала выполняться, отмена не ждет завершения колбэка.

В результате, транспортный слой может освободить или переиспользовать память, содержащую struct nvmet_sq, в то время как nvmet_auth_expired_work() все еще обращается к этой структуре. Это классическая гонка условий, приводящая к обращению к освобожденной памяти.

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


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

  • Инициация процесса освобождения SQ (например, при разрыве соединения или сбросе транспорта).
  • Одновременное срабатывание таймера, запускающего nvmet_auth_expired_work().
  • Функция cancel_delayed_work() не блокирует выполнение, если задача уже в работе.
  • Память SQ освобождается, но задача продолжает читать/писать в нее.
  • Возникает повреждение памяти, что может привести к падению ядра или выполнению кода.

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


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

  • Наличие в системе подсистемы NVMe-oF target (nvmet).
  • Возможность удаленного взаимодействия с NVMe target (например, через сеть).
  • Точное совпадение таймингов для создания гонки условий (race condition).

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


Сценарий предполагает, что злоумышленник устанавливает соединение с NVMe target и инициирует разрыв сессии в момент, когда срабатывает таймер истечения срока действия аутентификации.

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

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


На момент публикации CVE-2026-89970 публичные эксплойты или PoC не зафиксированы. Однако, учитывая высокий CVSS-скор и природу ошибки (use-after-free), вероятность разработки эксплойта в будущем высока.

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


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

  • Необъяснимые сбои ядра (kernel panics) при работе с NVMe-oF.
  • Аномальные записи в логах dmesg или syslog с упоминанием nvmet или nvme.
  • Необычная активность в сетевых интерфейсах, используемых для NVMe-oF.

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


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

  • Мониторинг логов ядра на наличие ошибок, связанных с nvmet или nvme.
  • Анализ сетевых потоков на предмет аномальных паттернов, характерных для атак на NVMe-oF.
  • Использование инструментов для детектирования аномалий в работе подсистемы NVMe target.

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


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

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

Проверьте, содержит ли ваша версия ядра коммит eaa948c0e19b1bb2d93262207bca0c3d19cc3406. Если нет, система уязвима.

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


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

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

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


Пока обновление не применено, можно снизить риск:

  • Ограничьте доступ к NVMe target только доверенным хостам.
  • Используйте сетевые фильтры (firewall) для блокировки нежелательного трафика.
  • Рассмотрите возможность отключения NVMe-oF target, если он не используется.

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


После обновления ядра:

  • Проверьте версию ядра с помощью uname -r.
  • Убедитесь, что в логах сборки ядра присутствует коммит eaa948c0e19b1bb2d93262207bca0c3d19cc3406.
  • Проведите функциональное тестирование NVMe target для подтверждения работоспособности.

Вывод​


CVE-2026-89970 представляет серьезную угрозу для систем, использующих NVMe-oF target. Из-за высокого CVSS-скора и возможности удаленной эксплуатации без аутентификации, обновление ядра должно быть приоритетным. Администраторы должны проверить свои системы и применить исправление как можно скорее.

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


  1. NVD — CVE-2026-89970
  2. FIRST EPSS — CVE-2026-89970
  3. nvmet-auth: Synchronize timeout work during SQ teardown - kernel/git/stable/linux.git - Linux kernel stable tree
  4. nvmet-auth: Synchronize timeout work during SQ teardown - kernel/git/stable/linux.git - Linux kernel stable tree
  5. nvmet-auth: Synchronize timeout work during SQ teardown - kernel/git/stable/linux.git - Linux kernel stable tree
  6. nvmet-auth: Synchronize timeout work during SQ teardown - kernel/git/stable/linux.git - Linux kernel stable tree
  7. nvmet-auth: Synchronize timeout work during SQ teardown - kernel/git/stable/linux.git - Linux kernel stable tree
  8. nvmet-auth: Synchronize timeout work during SQ teardown - kernel/git/stable/linux.git - Linux kernel stable tree
  9. CVEs — The Linux Kernel documentation

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


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