CVE-2026-72130 в Linux Kernel: heap out-of-bounds write в nvmet-auth

CVE: CVE-2026-72130
Продукт: Linux Kernel
Дата публикации: 15.08.2026
Критичность: не определена
CVSS: нет данных
EPSS: 0,25%; процентиль 16,70%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В подсистеме NVMe-oF ядра Linux обнаружена уязвимость CVE-2026-72130, позволяющая удаленному инициатору вызвать запись за пределами выделенного буфера кучи (heap out-of-bounds write). Ошибка возникает в модуле аутентификации nvmet-auth при использовании DH-HMAC-CHAP, когда ядро принимает недопустимо малую длину буфера AUTH_RECEIVE и записывает в него фиксированный ответ, превышающий выделенный объем памяти.

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


Уязвимость относится к классу повреждения памяти (heap out-of-bounds write). Она локализована в функции обработки команд аутентификации nvmet_execute_auth_receive(). Ключевая особенность — возможность удаленного триггера: атакующий не требует локальных привилегий, но должен иметь сетевой доступ к NVMe-таргету с включенной in-band аутентификацией DH-HMAC-CHAP. Эксплуатация возможна путем отправки команды AUTH_RECEIVE с allocation length, равным одному байту, что приводит к записи 16 и более байт за пределы выделенного блока.

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


Затронуты системы на базе Linux Kernel, в которых скомпилирована и используется подсистема NVMe target (nvmet) с поддержкой in-band аутентификации DH-HMAC-CHAP. Уязвимость присутствует в версиях ядра, предшествующих применению исправления (commit 779575bc35c687697ba69e904f2cd22e60112534 и его backports в stable-ветки). Системы, не использующие NVMe-oF или не настроенные на использование аутентификации DH-HMAC-CHAP, не подвержены риску. Точный список затронутых версий зависит от того, была ли применена патч-команда в конкретном релизе ядра.

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


Причиной уязвимости является логическая ошибка в функции nvmet_execute_auth_receive(). Код проверял, что длина выделения (allocation length) ненулевая и совпадает с длиной передачи, но не проверял, достаточно ли выделенной памяти для размещения фиксированных заголовков ответов DH-HMAC-CHAP. В состояниях SUCCESS1 и FAILURE1/default функции-билдеры (nvmet_auth_success1() и nvmet_auth_failure1()) записывали данные в буфер, выделенный через kmalloc() на основе пользовательского значения длины. Если это значение было меньше минимально необходимого размера, запись заголовка и HMAC-хэша происходила за пределами выделенного блока памяти.

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


Атака начинается с того, что удаленный NVMe-oF инициатор отправляет команду AUTH_RECEIVE с специально заниженным полем allocation length (al). Ядро принимает это значение, выделяет буфер соответствующего малого размера (например, 1 байт) и передает управление функциям формирования ответа. В зависимости от текущего шага аутентификации (SUCCESS1 или FAILURE1), код пытается записать структуру ответа, размер которой фиксирован и значительно превышает выделенный буфер. Поскольку проверка на минимальную длину отсутствовала, запись происходила за пределы границ буфера, повреждая соседние области кучи.

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


Для эксплуатации уязвимости необходимо выполнение следующих условий: 1. Целевая система работает на Linux Kernel с включенной подсистемой NVMe target. 2. На таргете настроена in-band аутентификация DH-HMAC-CHAP. 3. Атакующий имеет сетевой доступ к NVMe-oF таргету и может отправлять команды аутентификации. 4. Атакующий не нуждается в учетных данных или локальном доступе, но должен находиться в той же сети или иметь доступ к NVMe-oF инфраструктуре.

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


Сценарий атаки включает установление соединения с NVMe-oF таргетом и инициирование процесса аутентификации DH-HMAC-CHAP. На этапе, когда таргет ожидает ответ или формирует подтверждение (шаги SUCCESS1 или FAILURE1), атакующий отправляет команду AUTH_RECEIVE с allocation length, равным 1 байту. Ядро выделяет 1 байт памяти, но затем пытается записать в него структуру ответа размером более 16 байт (включая заголовок и хэш). Происходит запись за пределы буфера. В результате может произойти сбой ядра (kernel panic) или повреждение метаданных кучи.

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


На момент публикации информации о CVE-2026-72130 публичные эксплойты или PoC-коды не были широко распространены в открытых источниках. Техническое описание уязвимости достаточно подробно, чтобы позволить специалистам по безопасности воспроизвести условие для тестирования. Отсутствие публичного эксплойта не означает отсутствие риска, особенно в средах, где NVMe-oF используется с аутентификацией.

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


Специфичные индикаторы компрометации (IOC) для этой уязвимости не определены, так как она связана с повреждением памяти. Общие признаки могут включать: 1. Нестабильность работы NVMe-oF таргета, внезапные отключения или kernel panic. 2. Сообщения в системном журнале (dmesg) о предупреждениях (WARN_ON) в модуле nvmet-auth. 3. Аномальная активность в сети NVMe-oF, связанная с попытками аутентификации с некорректными параметрами. Эти признаки неспецифичны и могут указывать на другие проблемы.

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


Обнаружение уязвимости основано на проверке версии ядра и наличия примененного патча. Администраторы должны проверить, установлена ли версия ядра, содержащая исправление nvmet-auth: reject short AUTH_RECEIVE buffers. Также полезно мониторить системные логи на наличие предупреждений от модуля nvmet-auth, особенно в системах с включенной аутентификацией DH-HMAC-CHAP. Использование инструментов аудита конфигурации может помочь выявить системы, использующие NVMe-oF с аутентификацией.

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


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

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

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

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


Основное средство защиты — обновление ядра Linux до версии, содержащей исправление CVE-2026-72130. Патч добавляет проверку минимальной длины буфера в функции nvmet_auth_receive_data_len(), отклоняя команды с недостаточным allocation length до выделения памяти. Обновите систему через стандартные средства управления пакетами вашего дистрибутива (например, apt upgrade, yum update, dnf update). После обновления перезагрузите систему для загрузки нового ядра.

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


Если немедленное обновление невозможно, рассмотрите возможность отключения in-band аутентификации DH-HMAC-CHAP на NVMe-oF таргетах, если это допустимо политикой безопасности. Уязвимость активна только при использовании этой функции. Также можно ограничить сетевой доступ к NVMe-oF таргету только доверенным инициаторам, хотя это не устраняет уязвимость полностью, если доверенный инициатор скомпрометирован.

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


После обновления проверьте версию ядра с помощью uname -r. Убедитесь, что новая версия ядра загружена и активна. Проверьте системные логи (dmesg | grep nvmet) на отсутствие новых предупреждений. Если возможно, проведите тестовое подключение к NVMe-oF таргету с использованием аутентификации DH-HMAC-CHAP, чтобы убедиться в стабильности работы.

Вывод​


CVE-2026-72130 представляет собой серьезную уязвимость в подсистеме NVMe-oF Linux Kernel, позволяющую удаленному атакующему вызвать повреждение памяти. Риск актуален только для систем с включенной аутентификацией DH-HMAC-CHAP. Своевременное обновление ядра и, при необходимости, пересмотр конфигурации аутентификации являются ключевыми мерами защиты. Администраторы должны регулярно проверять обновления безопасности и мониторить логи на предмет аномалий.

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


  1. NVD — CVE-2026-72130
  2. FIRST EPSS — CVE-2026-72130
  3. nvmet-auth: reject short AUTH_RECEIVE buffers - kernel/git/stable/linux.git - Linux kernel stable tree
  4. nvmet-auth: reject short AUTH_RECEIVE buffers - kernel/git/stable/linux.git - Linux kernel stable tree
  5. nvmet-auth: reject short AUTH_RECEIVE buffers - kernel/git/stable/linux.git - Linux kernel stable tree
  6. nvmet-auth: reject short AUTH_RECEIVE buffers - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

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


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