CVE-2026-89696 в Linux Kernel: NULL-ссылка в nfsd, уязвимые версии и защита

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

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


Уязвимость в модуле NFSv4 сервера (nfsd) позволяет удалённому клиенту вызвать обнуление указателя и сбой ядра. Проблема возникает при включённой поддержке межсерверного копирования (inter-SSC) и специфической последовательности операций в COMPOUND-запросе. Статья разбирает механику атаки, условия эксплуатации и способы проверки исправления.

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


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

  • Тип ошибки: Обнуление указателя (NULL pointer dereference) в функции fh_want_write().
  • CVSS 3.1: 7.5 (HIGH). Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. Это означает сетевой доступ, низкую сложность, отсутствие прав и влияние только на доступность.
  • Условия атаки: Требуется включённый параметр CONFIG_NFSD_V4_2_INTER_SSC и доступ к NFSv4-серверу.
  • Эксплуатация: Публичные данные о массовой эксплуатации отсутствуют. EPSS составляет 0,22% (процентиль 12,47%), что указывает на низкую вероятность атаки в ближайший год.
  • CISA KEV: Уязвимость не включена в каталог известных эксплуатируемых уязвимостей.

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


Уязвимость затрагивает ядра Linux, в которых включена поддержка NFSv4.2 с межсерверным копированием (inter-SSC). Конкретные номера версий ядра, в которых присутствует уязвимость, не указаны в предоставленных источниках, однако исправление было внесено в стабильные ветки.

  • Компонент: fs/nfsd/nfs4proc.c (модуль NFSv4 сервера).
  • Условие сборки: CONFIG_NFSD_V4_2_INTER_SSC должен быть включён.
  • Исправление: Патч c59738a00aa51b16adc1b5ceb7c80877168efb4d и его backports в стабильные ветки (например, 311f7d926630940650447cbd1c932b076b40a6c4).

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

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


Причина уязвимости кроется в недостаточной проверке состояния filehandle в цикле обработки COMPOUND-запросов в nfsd. Когда nfsd4_putfh() возвращает успех, но fh_dentry и fh_export остаются NULL (из-за nfserr_stale и no_verify=true), флаг NFSD4_FH_FOREIGN устанавливается.

Цикл диспетчеризации использует этот флаг только для обхода проверки nfserr_nofilehandle, но не блокирует выполнение последующих операций с NULL-указателем. В результате, если клиент вставляет операцию (например, SETATTR) между PUTFH и SAVEFH, функция fh_want_write() обращается к fh_export->ex_path.mnt, вызывая обнуление указателя.

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


Атакующий формирует COMPOUND-запрос, содержащий inter-SSC COPY. Это вызывает check_if_stalefh_allowed(), который устанавливает no_verify=true для сохранённого PUTFH. Далее в запрос вставляется операция, требующая доступа к файлу (например, SETATTR), до операции SAVEFH.

При обработке такого запроса nfsd4_putfh() возвращает успех с NULL-указателями. Цикл диспетчеризации пропускает проверку из-за флага NFSD4_FH_FOREIGN. Когда выполняется вставленная операция, fh_want_write() пытается прочитать fh_export->ex_path.mnt, что приводит к падению процесса nfsd из-за обращения к NULL-адресу.

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


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

  • Включённый inter-SSC: Параметр CONFIG_NFSD_V4_2_INTER_SSC должен быть активен в ядре.
  • Доступ к NFSv4: Атакующий должен иметь сетевой доступ к порту NFSv4 (обычно 2049) на целевом сервере.
  • Специфический COMPOUND: Запрос должен содержать inter-SSC COPY и вставленную операцию между PUTFH и SAVEFH.
  • Отсутствие аутентификации: CVSS указывает PR:N, что означает возможность атаки без предварительной аутентификации, если это разрешено конфигурацией NFS.

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


Сценарий атаки начинается с отправки клиентом COMPOUND-запроса, включающего inter-SSC COPY. Функция check_if_stalefh_allowed() устанавливает no_verify=true для PUTFH.

Далее в запрос добавляется операция SETATTR, которая требует доступа к файлу. При обработке запроса nfsd4_putfh() возвращает успех, но fh_dentry и fh_export остаются NULL.

Цикл диспетчеризации пропускает проверку из-за флага NFSD4_FH_FOREIGN. Когда выполняется SETATTR, fh_want_write() обращается к fh_export->ex_path.mnt, вызывая NULL pointer dereference.

Процесс nfsd падает, что приводит к отказу в обслуживании NFS-сервиса.

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


Публичные данные о готовых эксплойтах или подтверждённой эксплуатации в реальных атаках отсутствуют. В источниках приведено техническое описание механизма атаки и патч, но не указаны PoC или рабочие payload. Отсутствие сведений не означает, что эксплойт не существует, но текущая вероятность эксплуатации оценивается как низкая (EPSS 0,22%).

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


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

  • Сбои nfsd: Записи в журналах ядра (dmesg, journalctl) о падении процесса nfsd из-за NULL pointer dereference.
  • Аномальные COMPOUND-запросы: Анализ логов NFS-сервера на предмет COMPOUND-запросов с inter-SSC COPY и вставленными операциями между PUTFH и SAVEFH.
  • Общие DoS-признаки: Внезапные перебои в работе NFS-сервиса без видимых причин на уровне приложения.

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


Для обнаружения атаки рекомендуется анализировать логи ядра и NFS-сервера. Ищите записи о падении nfsd с указанием NULL pointer dereference в fh_want_write() или nfs4proc.c. Также полезно отслеживать аномальные COMPOUND-запросы, содержащие inter-SSC COPY и последовательность операций, нарушающую стандартный порядок (PUTFH -> SAVEFH).

Команды для проверки логов:

Bash:
dmesg | grep -i "nfsd.*null pointer"
journalctl -u nfs-server | grep -i "null pointer"

Эти команды не являются специфичными для CVE-2026-89696, но помогают выявить общие сбои nfsd.

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


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

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

Затем сверьте версию ядра с наличием коммитов c59738a00aa51b16adc1b5ceb7c80877168efb4d и его backports. Если вы используете дистрибутив, проверьте наличие обновлений через пакетный менеджер (например, apt list --upgradable | grep linux для Debian/Ubuntu или dnf list --upgradable | grep kernel для RHEL/Fedora).

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


Основным способом устранения уязвимости является обновление ядра до версии, содержащей патч c59738a00aa51b16adc1b5ceb7c80877168efb4d или его backports. Для дистрибутивов Linux рекомендуется установить последние обновления безопасности через пакетный менеджер.

  • Debian/Ubuntu: sudo apt update && sudo apt upgrade
  • RHEL/Fedora: sudo dnf update kernel
  • Arch Linux: sudo pacman -Syu

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

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


Если обновление ядра невозможно, можно временно снизить риск, отключив поддержку inter-SSC в NFSv4. Это требует пересборки ядра с отключённым параметром CONFIG_NFSD_V4_2_INTER_SSC или использования модуля nfsd с соответствующими настройками.

  • Пересборка ядра: Отключите CONFIG_NFSD_V4_2_INTER_SSC в конфигурации ядра и пересоберите его.
  • Ограничение доступа: Ограничьте сетевой доступ к порту NFSv4 (2049) до доверенных клиентов с помощью файрвола (iptables/nftables).
  • Мониторинг: Усиленный мониторинг логов nfsd для быстрого обнаружения сбоев.

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

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


Для проверки успешного исправления выполните следующие шаги:

  1. Убедитесь, что система работает на обновлённом ядре: uname -r.
  2. Проверьте наличие коммитов в истории ядра: git log --oneline | grep c59738a00aa51b16adc1b5ceb7c80877168efb4d (если доступно).
  3. Проведите функциональное тестирование NFSv4 с inter-SSC, чтобы убедиться, что сервис работает корректно.
  4. Проверьте логи на отсутствие новых сбоев nfsd после обновления.

Если уязвимость была эксплуатируема, после обновления атаки с использованием описанного сценария должны возвращать nfserr_stale вместо падения процесса.

Вывод​


CVE-2026-89696 представляет собой уязвимость в nfsd, позволяющую удалённому клиенту вызвать отказ в обслуживании через NULL pointer dereference. Риск актуален только при включённой поддержке inter-SSC.

Рекомендуется обновить ядро до версии с патчем или отключить inter-SSC, если это невозможно. Мониторинг логов nfsd поможет выявить попытки эксплуатации.

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


  1. NVD — CVE-2026-89696
  2. FIRST EPSS — CVE-2026-89696
  3. nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
  4. nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
  5. nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
  6. nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

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


  • 13.09.2026 — Опубликована первая версия материала.
  • 13.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ