CVE: CVE-2026-74730
Продукт: Linux Kernel
Дата публикации: 22.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,51%; процентиль 41,31%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме NFSv4 ядра Linux обнаружен дефект use-after-free, связанный с операцией FREE_STATEID. Проблема возникает из-за отсутствия фиксации ссылок на объект
struct nfs_server во время асинхронного выполнения RPC-задач. Статья разбирает механику ошибки, условия её проявления и способы верификации исправления в ядре.Основные характеристики
Риск связан с нарушением управления жизненным циклом объектов в ядре, что может привести к повреждению памяти и выполнению кода. Ошибка затрагивает клиентскую часть NFSv4 и проявляется при задержке асинхронных операций.
- Тип ошибки: Use-after-free (CWE-416).
- CVSS 3.1: 9.8 (CRITICAL), вектор
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
- Условия атаки: Сеть, низкая сложность, без привилегий и взаимодействия пользователя.
- Эксплуатация: Подтверждено локально разработчиком, публичный PoC не опубликован.
- EPSS: 0,51% (процентиль 41,31%).
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, содержащие асинхронную реализацию функции
nfs41_free_stateid, введённую в коммите 7c1d5fae4a87. Точные номера версий ядра, в которых присутствует дефект, не указаны в предоставленных источниках.- Компонент: Подсистема NFSv4 (
fs/nfs/nfs4proc.c).
- Функция:
nfs41_free_stateidиnfs41_free_stateid_release.
- Статус: Исправление внесено в mainline и backported в stable-ветки (коммит
cf616096a0f3a2b60f7d68b6b39674a6867ded9cи его порты).
Причина уязвимости
Причина дефекта — отсутствие фиксации (pinning) объекта
struct nfs_server на время выполнения асинхронной операции FREE_STATEID. Когда операция задерживается, объект может быть освобождён из памяти, в то время как асинхронный вызов всё ещё ссылается на него.В исходном коде функция
nfs41_free_stateid не увеличивала счётчик ссылок на struct nfs_server перед запуском RPC-задачи. Это нарушало инвариант безопасности: объект не должен быть уничтожен, пока на него есть активные ссылки из асинхронных обработчиков.Исправление добавляет вызов
nfs_sb_active для фиксации объекта и nfs_sb_deactive в функции освобождения nfs41_free_stateid_release, что гарантирует сохранность памяти до завершения операции.Как работает атака
Атакующий инициирует операцию
FREE_STATEID в NFSv4, которая выполняется асинхронно. Если операция задерживается (например, из-за сетевых проблем или нагрузки), объект struct nfs_server может быть освобождён другим потоком или подсистемой.После освобождения памяти асинхронный обработчик продолжает использовать указатель на
struct nfs_server, что приводит к use-after-free. Это позволяет атакующему повредить данные ядра, изменить указатели или выполнить код с привилегиями ядра.Механизм эксплуатации зависит от возможности контроля над освобождённой памятью и задержкой операции. В описании CVE указано, что разработчик смог воспроизвести сбой, но детали успешной эксплуатации в реальных условиях не раскрыты.
Условия успешной эксплуатации
Для успешной эксплуатации требуются следующие условия:
- Система использует NFSv4 и подключена к NFS-серверу.
- Операция
FREE_STATEIDзадерживается, создавая временное окно для освобождения объекта.
- Атакующий имеет возможность инициировать NFS-операции или влиять на сетевую задержку.
- В системе отсутствует исправление, фиксирующее
struct nfs_serverво время асинхронного вызова.
Возможный сценарий атаки
Атакующий подключается к NFSv4-шаре и инициирует операцию освобождения stateid. Одновременно он создаёт условия для задержки RPC-вызова (например, через сетевые ограничения). В это время ядро освобождает объект
struct nfs_server, так как ссылок на него нет.Асинхронный обработчик
nfs41_free_stateid_release срабатывает и обращается к уже освобождённой памяти. Атакующий может использовать этот сбой для повреждения структуры данных или выполнения кода. Сценарий требует точного тайминга и контроля над памятью, что делает эксплуатацию сложной, но возможной.Есть ли публичный эксплойт
Публичный эксплойт не опубликован. В описании CVE указано, что разработчик (Dan Aloni) смог воспроизвести сбой use-after-free, но это является техническим подтверждением наличия дефекта, а не готовым PoC для удалённой атаки.
- PoC: Не опубликован.
- Техническое описание: Подтверждено в коммите исправления.
- Эксплуатация в реальных атаках: Не подтверждена.
Признаки эксплуатации
Специфичные IOC для этой уязвимости не опубликованы. Общие признаки атаки на NFS-клиенты включают:
- Необычные задержки в NFS-операциях.
- Сбои ядра (kernel panic) или ошибки в
dmesgс упоминаниемnfs41_free_stateid.
- Аномальная активность в NFS-сервере (много запросов FREE_STATEID).
Эти признаки неспецифичны и могут быть вызваны другими проблемами.
Как обнаружить атаку
Для обнаружения атаки или сбоев, связанных с этой уязвимостью, рекомендуется:
- Мониторинг
dmesgи журналов ядра на ошибки NFS.
- Анализ сетевых логов NFS-сервера на аномальные паттерны запросов.
- Проверка целостности ядра после сбоев.
Специфичные сигнатуры для IDS/IPS не опубликованы, поэтому детекция основывается на общих признаках нестабильности NFS-клиента.
Как проверить свою версию
Для проверки версии ядра и наличия исправления используйте:
Bash:
uname -r
uname -a
cat /proc/version
Сравните версию с официальными релизами, содержащими коммит
cf616096a0f3a2b60f7d68b6b39674a6867ded9c. Точные номера версий пакетов не указаны в источниках, поэтому сверка должна проводиться с релизными заметками дистрибутива.Исправление
Единственный надёжный способ устранения уязвимости — обновление ядра до версии, содержащей исправление.
- Коммит исправления:
cf616096a0f3a2b60f7d68b6b39674a6867ded9c(mainline) и его backports в stable-ветки.
- Действия: Обновите ядро через пакетный менеджер дистрибутива.
- Проверка: Убедитесь, что в ядре присутствует функция
nfs_sb_activeвnfs41_free_stateid.
Не используйте временные обходные пути как постоянное решение.
Временные меры защиты
Пока обновление не установлено, можно снизить риск:
- Ограничьте доступ к NFSv4-шарам до доверенных хостов.
- Отключите NFSv4, если это допустимо в инфраструктуре.
- Увеличьте сетевые таймауты для NFS, чтобы снизить вероятность задержек.
Эти меры не устраняют уязвимость, но могут затруднить эксплуатацию.
Как проверить устранение уязвимости
После обновления ядра проверьте наличие исправления:
Bash:
grep -r "nfs_sb_active" /boot/config-$(uname -r)
Также убедитесь, что в логах ядра нет ошибок, связанных с
nfs41_free_stateid. Если сбой воспроизводится после обновления, обратитесь к документации дистрибутива.Вывод
CVE-2026-74730 — критическая уязвимость в NFSv4, требующая немедленного обновления ядра. Механизм use-after-free может привести к выполнению кода, но эксплуатация требует специфичных условий. Администраторы должны проверить версии ядра и применить патч, а также усилить мониторинг NFS-клиентов.
Официальные источники
- NVD — CVE-2026-74730
- FIRST EPSS — CVE-2026-74730
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
- NFS: Pin the 'struct nfs_server' during a FREE_STATEID call - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 27.08.2026 — Опубликована первая версия материала.
