CVE: CVE-2026-89547
Продукт: Linux Kernel
Дата публикации: 11.09.2026
Критичность: HIGH
CVSS: 8.1 (3.1)
EPSS: 0,22%; процентиль 13,18%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме SUNRPC ядра Linux обнаружена уязвимость, связанная с игнорированием ошибок при инициализации per-CPU счетчиков. При неудачном выделении памяти сервис продолжает работу с неинициализированными структурами, что приводит к тихому повреждению данных в памяти. Материал описывает механизм сбоя, условия воспроизведения и порядок проверки исправления.
Основные характеристики
Риск заключается в повреждении данных в памяти ядра при неудачном выделении ресурсов для per-CPU счетчиков в подсистеме SUNRPC. Эксплуатация требует локального доступа и специфических условий, что ограничивает практическую опасность.
- CVSS 3.1: 8.1 (HIGH). Вектор:
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H. Высокая оценка отражает потенциальный ущерб при успешном срабатывании, несмотря на сложность условий.
- EPSS: 0,23% (процентиль 13,18%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.
- Тип атаки: Нарушение целостности памяти (memory corruption) через запись в неинициализированную область.
- Доступность PoC: Публичные эксплойты и подтвержденная эксплуатация в реальных атаках не зафиксированы.
Какие продукты и версии затронуты
Затронуты версии ядра Linux, содержащие подсистему SUNRPC с уязвимой логикой в функции
__svc_create(). Точный список версий определяется наличием конкретного исправления в дереве ядра.- Компонент:
net/sunrpc/svc.c.
- Критические функции:
__svc_create(),svc_xprt_enqueue(),svc_handle_xprt(),svc_pool_wake_idle_thread().
- Условие сборки: Ядро должно быть собрано с поддержкой SMP и соответствующих NFS-сервисов (nfsd, lockd).
Причина уязвимости
Функция
__svc_create() инициализирует три per-CPU счетчика, игнорируя коды возврата. При неудаче выделения памяти указатель fbc->counters остается равным NULL, а внутренние структуры (raw_spinlock_t, list_head, count) не инициализируются.В результате сервис возвращается в состояние, где горячие пути обработки обращаются к невалидной памяти. Это нарушает базовый принцип проверки ошибок при выделении ресурсов в ядре.
Как работает атака
При запуске RPC-сервиса (nfsd, lockd) происходит инициализация счетчиков. Если выделение памяти не удается, указатель остается NULL. При последующих операциях в
svc_xprt_enqueue() и других функциях происходит запись в этот указатель.Так как это per-CPU offset, обращение не вызывает сбой (fault), а записывает данные в начало per-CPU области текущего процессора. Это приводит к тихому повреждению переменных, находящихся по этому адресу. Чтение
/proc/fs/nfsd/pool_stats также возвращает невалидные данные.Условия успешной эксплуатации
Для создания уязвимого состояния требуется неудача выделения per-CPU памяти при старте RPC-сервера. Это состояние не может быть вызвано удаленным пользователем.
- Доступ: Локальный администратор (root).
- Условия: Высокое давление на память или активная инъекция сбоев (fault injection).
- Среда: SMP-система с работающими NFS-сервисами.
Возможный сценарий атаки
Локальный администратор создает условия дефицита памяти или использует механизмы fault injection. При последующем запуске NFS-сервера инициализация счетчиков завершается ошибкой, но сервис запускается. При обработке первых RPC-запросов происходит повреждение памяти, что может привести к нестабильности системы или утечке данных.
Есть ли публичный эксплойт
Публичные PoC или подтвержденная эксплуатация в реальных атаках не зафиксированы. Ошибка имеет низкую вероятность эксплуатации (EPSS 0,23%) из-за строгих требований к условиям срабатывания и необходимости локального доступа.
Признаки эксплуатации
Специфичных IOC для этой уязвимости нет. Общие признаки аномалий в NFS-сервисе могут включать невалидные значения в статистике или сбои при работе с NFS-шарами, но они не являются доказательством эксплуатации именно этого CVE.
Как обнаружить атаку
Для обнаружения следов атаки или аномалий следует анализировать логи ядра и состояние NFS-сервисов. Специфичных маркеров для этого CVE не существует, поэтому мониторинг должен быть направлен на общую стабильность подсистемы.
- Логи: Проверка
dmesgна ошибки в SUNRPC или NFS.
- Статистика: Мониторинг аномальных значений в
/proc/fs/nfsd/pool_stats.
- Система: Контроль стабильности NFS-сервисов под нагрузкой.
Как проверить свою версию
Для проверки версии ядра и наличия исправлений используйте следующие команды. Замените
<имя-пакета> на актуальное имя пакета ядра в вашей дистрибуции.
Bash:
uname -r
uname -a
cat /proc/version
Проверьте, содержит ли текущая версия ядра коммиты с исправлением, упомянутые в официальных источниках.
Исправление
Единственным надежным способом устранения уязвимости является обновление ядра до версии, содержащей исправление. Патч добавляет проверку кодов возврата при инициализации счетчиков и корректную очистку ресурсов при ошибке.
- Действие: Обновите ядро до последней стабильной версии.
- Источники: Используйте официальные репозитории дистрибутива.
- Проверка: Убедитесь, что новые коммиты присутствуют в дереве ядра.
Временные меры защиты
Поскольку уязвимость требует локального доступа и специфических условий памяти, временные меры ограничены. Можно снизить нагрузку на память или отключить неиспользуемые NFS-сервисы, если это допустимо в вашей инфраструктуре.
- Ограничение доступа: Ограничьте права на запуск NFS-сервисов.
- Мониторинг: Усиленный контроль за состоянием памяти и стабильностью NFS.
Как проверить устранение уязвимости
После обновления ядра проверьте, что сервисы NFS работают корректно и статистика в
/proc/fs/nfsd/pool_stats возвращает валидные данные. Убедитесь, что в логах отсутствуют ошибки инициализации SUNRPC.
Bash:
cat /proc/fs/nfsd/pool_stats
dmesg | grep -i sunrpc
Отсутствие ошибок и корректная работа сервисов подтверждают применение исправления.
Вывод
CVE-2026-89547 представляет собой серьезную, но сложную для эксплуатации уязвимость в подсистеме SUNRPC. Основной риск связан с повреждением памяти при неудачном выделении ресурсов. Обновление ядра до версии с исправлением является обязательным шагом для систем, использующих NFS-сервисы.
Официальные источники
- NVD — CVE-2026-89547
- FIRST EPSS — CVE-2026-89547
- SUNRPC: Check svc pool percpu counter allocation - kernel/git/stable/linux.git - Linux kernel stable tree
- SUNRPC: Check svc pool percpu counter allocation - kernel/git/stable/linux.git - Linux kernel stable tree
- SUNRPC: Check svc pool percpu counter allocation - kernel/git/stable/linux.git - Linux kernel stable tree
- SUNRPC: Check svc pool percpu counter allocation - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 13.09.2026 — Опубликована первая версия материала.
- 13.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
