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 для быстрого обнаружения сбоев.
Эти меры не устраняют уязвимость, но снижают вероятность её эксплуатации.
Как проверить устранение уязвимости
Для проверки успешного исправления выполните следующие шаги:
- Убедитесь, что система работает на обновлённом ядре:
uname -r.
- Проверьте наличие коммитов в истории ядра:
git log --oneline | grep c59738a00aa51b16adc1b5ceb7c80877168efb4d(если доступно).
- Проведите функциональное тестирование NFSv4 с inter-SSC, чтобы убедиться, что сервис работает корректно.
- Проверьте логи на отсутствие новых сбоев nfsd после обновления.
Если уязвимость была эксплуатируема, после обновления атаки с использованием описанного сценария должны возвращать
nfserr_stale вместо падения процесса.Вывод
CVE-2026-89696 представляет собой уязвимость в nfsd, позволяющую удалённому клиенту вызвать отказ в обслуживании через NULL pointer dereference. Риск актуален только при включённой поддержке inter-SSC.
Рекомендуется обновить ядро до версии с патчем или отключить inter-SSC, если это невозможно. Мониторинг логов nfsd поможет выявить попытки эксплуатации.
Официальные источники
- NVD — CVE-2026-89696
- FIRST EPSS — CVE-2026-89696
- nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
- nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
- nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
- nfsd: block non-SAVEFH ops after FOREIGN PUTFH to prevent NULL deref - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 13.09.2026 — Опубликована первая версия материала.
- 13.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
