CVE-2026-89712 в Linux Kernel: use-after-free в NFSD и порядок исправления

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

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


В подсистеме NFSD ядра Linux обнаружена ошибка use-after-free, возникающая при параллельной обработке списка монтирований. Уязвимость затрагивает серверы NFS и может привести к падению ядра или выполнению кода. Ниже описаны условия срабатывания и порядок проверки обновлений.

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


Риск связан с нарушением целостности памяти в ядре при работе с NFS-сервером. Ошибка позволяет нарушителю повлиять на состояние системы через специфическую последовательность операций.

  • Тип ошибки: Use-after-free (CWE-416). Ссылка на освобождённую память приводит к непредсказуемому поведению.
  • 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,63% (процентиль 48,08%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.

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


Уязвимость затрагивает подсистему NFSD в ядре Linux. Точный список версий, требующих обновления, зависит от дистрибутива и ветки ядра.

  • Компонент: fs/nfsd/nfs4state.c.
  • Функция: nfsd4_ssc_expire_umount().
  • Ветки ядра: Исправление внесено в stable-ветки. Проверьте наличие коммита 036c1b182f4da65363e79ec0ac276edc6b7296e5 в вашем ядре.

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

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


Причина ошибки — в логике итерации по списку nfsd_ssc_mount_list в функции nfsd4_ssc_expire_umount(). Код использует макрос list_for_each_entry_safe, который сохраняет указатель tmp на следующий элемент перед освобождением текущего.

При обработке устаревшего элемента функция освобождает блокировку nfsd_ssc_lock для выполнения mntput(). В этот момент другой поток может удалить и освободить элемент, на который указывает tmp. При возврате к итерации код обращается к освобождённой памяти.

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


Атака требует одновременного выполнения двух сценариев в подсистеме NFSD. Первый сценарий — периодическая проверка устаревших монтирований. Второй — отмена DUL (Delegation Upgrade Lock) из-за сбоя монтирования исходного сервера.

Если эти события совпадают во времени, возникает гонка. Поток, выполняющий nfsd4_ssc_cancel_dul(), освобождает элемент списка, который ещё хранится в локальной переменной tmp другого потока. Последующее обращение к этому указателю приводит к use-after-free.

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


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

  • Система работает как NFS-сервер (NFSD).
  • Активно используется механизм межсерверного копирования (inter-server copy).
  • Происходит одновременная обработка устаревших монтирований и отмена DUL.
  • Успешное срабатывание требует точного совпадения временных окон, что делает эксплуатацию сложной.

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


Сценарий атаки начинается с инициации межсерверного копирования данных. Сервер NFS регистрирует монтирование исходного сервера в списке nfsd_ssc_mount_list. Через некоторое время это монтирование устаревает.

Параллельно происходит сбой соединения с исходным сервером, что запускает процесс отмены DUL. В момент, когда периодический воркер освобождает блокировку для mntput(), поток отмены DUL удаляет элемент из списка. Воркер продолжает итерацию по освобождённому указателю, что приводит к повреждению памяти ядра.

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


На момент публикации CVE-2026-89712 публичные эксплойты не зафиксированы. В каталоге CISA KEV уязвимость не числится. EPSS-оценка 0,63% указывает на низкую вероятность активной эксплуатации в ближайшем будущем. Тем не менее, наличие исправления в ядре является обязательным для защиты.

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


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

  • Падение ядра (kernel panic) с упоминанием nfsd или nfs4state.c в backtrace.
  • Аномальные записи в dmesg или системном журнале, связанные с ошибками памяти в подсистеме NFS.
  • Нестабильность NFS-сервиса при высокой нагрузке на межсерверное копирование.

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


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

  • Мониторинг журналов ядра на наличие ошибок, связанных с nfsd_ssc.
  • Анализ backtrace при падении ядра на наличие функций nfsd4_ssc_expire_umount или nfsd4_ssc_cancel_dul.
  • Контроль стабильности NFS-сервиса в системах, использующих межсерверное копирование.

Специфичные сигнатуры для IDS/IPS для этой уязвимости не разработаны.

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


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

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

Для проверки наличия конкретного коммита в вашем ядре (если используется git-ядро):

Bash:
git log --oneline | grep 036c1b182f4da65363e79ec0ac276edc6b7296e5

Если коммит отсутствует, система уязвима. Замените <имя-пакета> на фактическое имя пакета ядра в вашем дистрибутиве при проверке через пакетный менеджер.

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


Единственный надёжный способ устранения уязвимости — обновление ядра до версии, содержащей исправление. Коммит 036c1b182f4da65363e79ec0ac276edc6b7296e5 был принят в stable-ветки.

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

Не используйте cherry-pick отдельных патчей, если дистрибутив предоставляет готовые обновления.

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


Пока обновление не установлено, можно снизить риск, ограничив использование уязвимых функций:

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

Эти меры не устраняют уязвимость, но снижают вероятность её срабатывания.

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


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

  1. Убедитесь, что система работает на новой версии ядра: uname -r.
  2. Проверьте наличие коммита в истории ядра (если доступно): git log | grep 036c1b182f4da65363e79ec0ac276edc6b7296e5.
  3. Проведите функциональное тестирование NFS-сервиса, включая сценарии межсерверного копирования.
  4. Отслеживайте логи на предмет ошибок в подсистеме NFSD в течение нескольких дней после обновления.

Вывод​


CVE-2026-89712 представляет собой серьёзную угрозу для систем, использующих NFS-сервер с межсерверным копированием. Уязвимость связана с ошибкой в управлении памятью и может привести к падению ядра или выполнению кода. Администраторам необходимо срочно обновить ядро до версии, содержащей исправление, и проверить работоспособность NFS-сервиса после обновления.

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


  1. NVD — CVE-2026-89712
  2. FIRST EPSS — CVE-2026-89712
  3. NFSD: restart ssc_expire_umount walk after dropping nfsd_ssc_lock - kernel/git/stable/linux.git - Linux kernel stable tree
  4. NFSD: restart ssc_expire_umount walk after dropping nfsd_ssc_lock - kernel/git/stable/linux.git - Linux kernel stable tree
  5. NFSD: restart ssc_expire_umount walk after dropping nfsd_ssc_lock - kernel/git/stable/linux.git - Linux kernel stable tree
  6. NFSD: restart ssc_expire_umount walk after dropping nfsd_ssc_lock - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

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


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