CVE: CVE-2026-89990
Продукт: Linux Kernel
Дата публикации: 16.09.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,61%; процентиль 47,75%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В ядре Linux обнаружен use-after-free в модуле Ceph MDS client. Функция ceph_mds_check_access() читает массив авторизаций без мьютекса, а одновременная обработка сессии OPEN освобождает этот массив. Результатом становится обращение к освобождённой памяти и падение ядра с Oops.
Основные характеристики
Риск связан с гонкой потоков в Ceph MDS client: один поток читает массив авторизаций, другой освобождает его во время обработки сессии OPEN.
- Тип ошибки: use-after-free в
ceph_mds_check_access()
- CVSS v3.1:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H(9.8)
- Вектор атаки: удалённый, без привилегий и взаимодействия с пользователем
- Подтверждённый эффект: падение ядра с Oops при воспроизведении гонки
- EPSS: 0,61% (процентиль 47,75%)
Какие продукты и версии затронуты
Затронуты системы Linux Kernel с включённым Ceph MDS client.
- Ядра Linux версии 6.18.x до применения исправления
a61c6ae1dae2611082b831b4aaa780878099c012
- Дистрибутивы, использующие ядро 6.18.x и не обновлённые до стабильных релизов с патчем
- Системы с подключёнными Ceph-хранилищами через MDS-клиент
Причина уязвимости
Функция
ceph_mds_check_access() обходит массив mdsc->s_cap_auths без захвата мьютекса mdsc->mutex. При обработке сессии OPEN другой поток заменяет этот массив и освобождает предыдущий.Если второй поток завершает освобождение памяти до завершения обхода, первый продолжает читать уже невалидные указатели. Это классический use-after-free: данные в памяти могут быть перезаписаны или освобождены, но переменная
s_cap_auths всё ещё указывает на неё.Исправление добавляет вызовы
mutex_lock(&mdsc->mutex) и mutex_unlock(&mdsc->mutex) вокруг цикла обхода массива авторизаций в ceph_mds_check_access().Как работает атака
Атака строится на гонке между двумя потоками ядра.
Первый поток выполняет файловую операцию, которая вызывает
do_sys_openat2 → do_filp_open → path_openat → ceph_atomic_open → ceph_mds_check_access. Внутри этой функции код читает массив авторизаций Ceph MDS.Второй поток обрабатывает сессию OPEN и под мьютексом заменяет
mdsc->s_cap_auths, освобождая старый массив. Если первый поток успел начать обход, но не захватил мьютекс, он читает уже освобождённую память.Результат: обращение к недопустимому виртуальному адресу, Oops в ядре и потеря работоспособности процесса или системы.
Условия успешной эксплуатации
Для воспроизведения нужен доступ к файловой системе Ceph MDS client на хосте с уязвимым ядром.
- Включённый модуль Ceph MDS client (
ceph)
- Ядро версии 6.18.x без патча
a61c6ae1dae2611082b831b4aaa780878099c012
- Возможность инициировать файловые операции, проходящие через
ceph_mds_check_access()
- Одновременная обработка сессии OPEN, вызывающая замену массива авторизаций
Возможный сценарий атаки
Сценарий начинается с обычного открытия файла в Ceph-томе.
Процесс выполняет системный вызов
openat, который проходит через ядро и попадает в код Ceph MDS client. Функция ceph_mds_check_access() проверяет права доступа, обходя массив авторизаций.В этот момент другой поток обрабатывает сессию OPEN и освобождает старый массив. Ядро не блокирует доступ к памяти во время чтения, поэтому процесс продолжает работу с освобождённым объектом.
Память может содержать случайные данные или быть уже переиспользованной. Чтение приводит к падению ядра с сообщением
Oops: 0000000096000004 [#1] SMP.Есть ли публичный эксплойт
В предоставленных источниках есть подтверждённый технический пример падения ядра и полный стек вызовов.
- PoC: в описании CVE приведён сценарий воспроизведения с Oops, но отдельного готового эксплойта или скрипта не указано
- Техническое описание: доступно: функция
ceph_mds_check_access(), массивs_cap_auths, мьютексmdsc->mutex, вызовыpath_openatиdo_sys_openat2
- Подтверждённая эксплуатация: в источниках нет данных о реальных атаках или массовом использовании; есть только воспроизведение падения ядра
Признаки эксплуатации
Специфичных IOC для этой уязвимости не подтверждено.
Неспецифичные признаки, которые можно проверить:
- Падения ядра с сообщением
Oopsв логах
- Стек вызовов, содержащий
ceph_mds_check_access,ceph_atomic_open,path_openat,do_filp_open,do_sys_openat2
- Внезапное завершение процессов, работающих с Ceph-томами
- Рост количества ошибок в
/var/log/kern.logилиdmesgпосле операций с файлами
Как обнаружить атаку
Для обнаружения нужно анализировать логи ядра и системные журналы.
- Проверить наличие строк
Oops: 0000000096000004 [#1] SMPвdmesgили/var/log/kern.log
- Найти стек вызовов с функциями
ceph_mds_check_access+0xd4/0x550иceph_atomic_open+0x138/0xbe8
- Отслеживать ошибки при открытии файлов в Ceph-томах
- Проверить наличие процессов, завершившихся с кодом 137 или SIGKILL после операций с файлами
Как проверить свою версию
Проверка версии ядра:
Bash:
uname -r
uname -a
cat /proc/version
Если вывод показывает версию 6.18.x, нужно проверить наличие патча
a61c6ae1dae2611082b831b4aaa780878099c012 в ядре.
Bash:
git log --oneline | grep a61c6ae1dae2611082b831b4aaa780878099c012
Если команда не найдена, система уязвима.
Исправление
Обновление ядра до версии с патчем
a61c6ae1dae2611082b831b4aaa780878099c012.- Для дистрибутивов: установить пакет ядра от поставщика, содержащий исправление
- Для кастомных сборок: применить патч
a61c6ae1dae2611082b831b4aaa780878099c012и пересобрать ядро
- После обновления перезагрузить систему
- Проверить версию ядра командой
uname -r
Временные меры защиты
Временные меры до обновления:
- Ограничить количество одновременных операций с Ceph-томами
- Отключить автоматическое обновление сессий MDS, если это возможно в конфигурации Ceph
- Мониторинг логов ядра на наличие Oops со стеком
ceph_mds_check_access
- Перенос критичных рабочих процессов на системы с обновлённым ядром
Как проверить устранение уязвимости
После обновления нужно подтвердить, что патч применён.
Bash:
git log --oneline | grep a61c6ae1dae2611082b831b4aaa780878099c012
uname -r
dmesg | grep -i ceph_mds_check_access
Отсутствие новых Oops в логах после обновления подтверждает устранение уязвимости.
Если патч не найден, нужно повторить обновление или проверить источник пакетов ядра.
Вывод
Уязвимость CVE-2026-89990 требует срочного обновления систем с Ceph MDS client. Падение ядра может привести к потере данных и нарушению работоспособности сервисов.
Обновление до версии ядра с патчем
a61c6ae1dae2611082b831b4aaa780878099c012 устраняет проблему. До обновления рекомендуется ограничить нагрузку на Ceph-томы и мониторить логи ядра.Официальные источники
- NVD — CVE-2026-89990
- FIRST EPSS — CVE-2026-89990
- ceph: lock mutex in ceph_mds_check_access() - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: lock mutex in ceph_mds_check_access() - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: lock mutex in ceph_mds_check_access() - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: lock mutex in ceph_mds_check_access() - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 21.09.2026 — Опубликована первая версия материала.
