CVE: CVE-2026-89679
Продукт: Linux Kernel
Дата публикации: 11.09.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: 0,24%; процентиль 14,81%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В модуле NFSv4 сервера Linux обнаружена уязвимость, позволяющая любому удаленному клиенту вызвать сбой ядра (kernel oops). Ошибка возникает при обработке специальных идентификаторов состояния (stateid) в функции
nfsd4_setattr и приводит к обращению по нулевому указателю. Материал описывает механику сбоя, условия эксплуатации и способы проверки наличия исправления в системе.Основные характеристики
Риск представляет собой удаленный отказ в обслуживании (DoS) для систем, предоставляющих NFSv4-сервис. Атакующему не требуется аутентификация или предварительное состояние, что делает эксплуатацию тривиальной для любого клиента в сети.
- Тип ошибки: Обращение по нулевому указателю (NULL pointer dereference) в функции
nfsd4_setattr.
- 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. Высокая оценка обусловлена удаленным доступом и отсутствием требований к правам.
- Условия атаки: Требуется только сетевой доступ к порту NFSv4. Не нужны учетные данные, делегирование или созданные ранее stateid.
- Эксплуатация: Подтверждена техническим описанием в патче. Публичный PoC или подтвержденная эксплуатация в реальных атаках в источниках не указаны.
- EPSS: 0,24% (процентиль 14,81%). Низкая вероятность эксплуатации в ближайшие 30 дней, что не отменяет необходимости патча для критичных сервисов.
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, содержащие код обработки NFSv4 SETATTR с поддержкой делегированных временных меток. Точный список версий ядра, в которых присутствует уязвимый код, не раскрыт в предоставленных источниках.
- Компонент:
fs/nfsd/nfs4proc.c(модуль NFSv4 сервера).
- Исходный код: Ошибка была введена в коммите
7e13f4f8d27d("nfsd: handle delegated timestamps in SETATTR").
- Исправление: Патч
fe456c8c0931bb3e8a03d429920e87fd85747fbaи его backports в stable-ветки.
Администраторам следует проверить наличие коммита
fe456c8c0931bb3e8a03d429920e87fd85747fba в истории ядра своей системы. Если ядро собрано из исходников, необходимо убедиться, что применен патч. Для дистрибутивов — проверить наличие обновлений от вендора.Причина уязвимости
Причина ошибки кроется в логике обработки специальных идентификаторов состояния (special stateids) в функции
nfs4_preprocess_stateid_op. Когда клиент отправляет "one stateid" (все байты 0xFF), функция check_special_stateids возвращает nfs_ok, но не заполняет выходной указатель nfs4_stid.В результате локальная переменная
st в nfsd4_setattr остается равной NULL. Однако код, обрабатывающий атрибуты делегирования (deleg_attrs), не проверяет этот указатель на NULL перед обращением к его полям. Происходит чтение st->sc_type по адресу, смещенному на 4 байта от NULL, что вызывает сбой ядра.Логическая ошибка заключается в том, что код предполагает, что если
deleg_attrs истинно, то st обязательно должен быть валидным указателем на делегирование. Однако специальные stateid не являются делегированиями, и их обработка не гарантирует инициализацию указателя.Как работает атака
Атакующий отправляет NFSv4 COMPOUND-запрос, содержащий операции
PUTROOTFH и SETATTR. В SETATTR используется "one stateid" (все 0xFF) и битовая карта атрибутов, включающая FATTR4_WORD2_TIME_DELEG_ACCESS или FATTR4_WORD2_TIME_DELEG_MODIFY.Сервер обрабатывает запрос:
nfsd4_setattr устанавливает флаг deleg_attrs и вызывает nfs4_preprocess_stateid_op. Для "one stateid" функция возвращает успех, но не заполняет указатель st. Далее код пытается проверить тип stateid через st->sc_type, что приводит к обращению по нулевому указателю и падению ядра.Эксплуатация не требует аутентификации, так как проверка stateid происходит до проверки прав доступа. Атакующему достаточно иметь сетевой доступ к NFSv4-серверу.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости атакующему необходимо:
- Сетевой доступ к порту NFSv4 (по умолчанию 2049) на целевой системе.
- Возможность отправки NFSv4-запросов от имени любого клиента (не требуется аутентификация).
- Наличие уязвимого кода в ядре (отсутствие патча
fe456c8c0931bb3e8a03d429920e87fd85747fba).
Не требуются:
- Учетные данные или аутентификация.
- Предварительно созданные stateid или делегирования.
- Специфические права доступа к файлам.
Возможный сценарий атаки
Атакующий сканирует сеть и находит хост с открытым портом 2049 (NFSv4). Он формирует NFSv4 COMPOUND-запрос с операциями
PUTROOTFH и SETATTR. В SETATTR он указывает "one stateid" (все 0xFF) и битовую карту, содержащую FATTR4_WORD2_TIME_DELEG_ACCESS.Запрос отправляется на сервер. Ядро обрабатывает его и попадает в уязвимый код, где происходит обращение по нулевому указателю. Ядро падает (kernel oops), что приводит к перезагрузке системы или зависанию, в зависимости от настроек ядра.
Атакующий может повторять запросы для поддержания DoS-состояния.
Есть ли публичный эксплойт
В предоставленных источниках отсутствует информация о публичном PoC или подтвержденной эксплуатации в реальных атаках. Однако техническое описание атаки в патче достаточно подробно, чтобы любой специалист мог написать эксплойт. Патч содержит описание запроса, который вызывает сбой, что фактически является публичным PoC.
Отсутствие сведений о массовых атаках не означает, что уязвимость не эксплуатируется. Учитывая простоту эксплуатации, риск атаки существует.
Признаки эксплуатации
Специфичные IOC для этой уязвимости в источниках не указаны. Однако можно использовать общие признаки атаки на NFSv4:
- Аномальные NFSv4-запросы с "one stateid" (все 0xFF) и битовыми картами, содержащими
FATTR4_WORD2_TIME_DELEG_ACCESSилиFATTR4_WORD2_TIME_DELEG_MODIFY.
- Сбои ядра (kernel oops) с сообщениями об обращении по нулевому указателю в
nfsd4_setattr.
- Повторяющиеся перезагрузки или зависания системы, совпадающие по времени с сетевой активностью на порту 2049.
Эти признаки неспецифичны и могут быть вызваны другими причинами, но в сочетании с сетевой активностью могут указывать на эксплуатацию CVE-2026-89679.
Как обнаружить атаку
Для обнаружения атаки можно использовать:
- Сетевой мониторинг: Анализ трафика NFSv4 на предмет запросов с "one stateid" и битовыми картами делегирования. Инструменты:
tcpdump,nfsstat, специализированные IDS.
- Мониторинг логов ядра: Поиск сообщений об ошибках в
dmesgили/var/log/kern.log, содержащихnfsd4_setattrиNULL pointer dereference.
- Мониторинг стабильности: Отслеживание частоты перезагрузок или зависаний системы, особенно если они совпадают с сетевой активностью.
Рекомендуется настроить алерты на аномальные NFSv4-запросы и сбои ядра в NFS-модуле.
Как проверить свою версию
Для проверки версии ядра и наличия исправления используйте:
Bash:
uname -r
uname -a
cat /proc/version
Затем проверьте наличие коммита
fe456c8c0931bb3e8a03d429920e87fd85747fba в истории ядра. Если ядро собрано из исходников, используйте git log в каталоге исходников. Для дистрибутивов — проверьте наличие обновлений от вендора, содержащих этот коммит.Если вы не уверены, что ядро содержит патч, обратитесь к документации вашего дистрибутива или ядру Linux для подтверждения.
Исправление
Единственный надежный способ устранения уязвимости — установка исправленного ядра. Патч
fe456c8c0931bb3e8a03d429920e87fd85747fba добавляет проверку на NULL перед обращением к st->sc_type.- Для дистрибутивов: Установите последние обновления ядра от вашего вендора. Проверьте, что они содержат патч.
- Для сборки из исходников: Примени патч
fe456c8c0931bb3e8a03d429920e87fd85747fbaи пересоберите ядро.
- Для контейнеров: Обновите базовые образы до версий с исправленным ядром.
Не используйте cherry-pick отдельных патчей, если это не рекомендуется вендором. Лучше установить полное обновление ядра.
Временные меры защиты
Пока не установлено исправленное ядро, можно временно снизить риск:
- Ограничение доступа к NFSv4: Заблокируйте порт 2049 в файрволе для всех, кроме доверенных клиентов. Используйте IP-фильтрацию.
- Отключение NFSv4: Если возможно, отключите NFSv4-сервис, оставив только NFSv3 (если он не уязвим) или отключив NFS полностью.
- Использование VPN: Ограничьте доступ к NFSv4-серверу только через защищенный канал (VPN).
Эти меры не устраняют уязвимость, но снижают вероятность атаки. Они не заменяют установку патча.
Как проверить устранение уязвимости
После установки исправленного ядра проверьте:
- Версию ядра: Убедитесь, что запущено новое ядро (
uname -r).
- Наличие патча: Проверьте, что коммит
fe456c8c0931bb3e8a03d429920e87fd85747fbaприсутствует в истории ядра.
- Функциональность: Протестируйте NFSv4-сервис, убедившись, что он работает корректно.
- Отсутствие сбоев: Наблюдайте за системой в течение нескольких часов, убедившись, что нет kernel oops.
Если после обновления система стабильна и NFSv4 работает, уязвимость устранена.
Вывод
CVE-2026-89679 — серьезная уязвимость, позволяющая удаленно вызвать сбой ядра Linux через NFSv4. Эксплуатация проста и не требует аутентификации, что делает ее опасной для любых систем, предоставляющих NFSv4-сервис.
Администраторам необходимо срочно установить исправленное ядро, содержащее патч
fe456c8c0931bb3e8a03d429920e87fd85747fba. До этого следует ограничить доступ к NFSv4 и мониторить систему на предмет атак.Официальные источники
- NVD — CVE-2026-89679
- FIRST EPSS — CVE-2026-89679
- nfsd: fix null dereference in nfsd4_setattr for deleg timestamp attrs - kernel/git/stable/linux.git - Linux kernel stable tree
- nfsd: fix null dereference in nfsd4_setattr for deleg timestamp attrs - kernel/git/stable/linux.git - Linux kernel stable tree
- nfsd: fix null dereference in nfsd4_setattr for deleg timestamp attrs - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 13.09.2026 — Опубликована первая версия материала.
- 13.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
