CVE: CVE-2026-89655
Продукт: Linux Kernel
Дата публикации: 11.09.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,70%; процентиль 51,42%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере Ceph для Linux ядра обнаружена уязвимость Use-After-Free (UAF) в функции
__kick_flushing_caps(). Ошибка возникает из-за гонки при освобождении объектов ceph_cap_flush во время итерации по списку.Успешная эксплуатация может привести к повреждению памяти и выполнению кода с привилегиями ядра. Статья описывает механику атаки, затронутые версии и способы проверки исправления.
Основные характеристики
Уязвимость представляет собой критический риск для систем, использующих файловую систему Ceph. Ошибка позволяет нарушителю получить полный контроль над системой через повреждение памяти в ядре.
- Тип ошибки: Use-After-Free (UAF) в модуле
fs/ceph/caps.c.
- 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. Это означает, что атака возможна удаленно без аутентификации.
- EPSS: 0,70%. Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но риск остается высоким из-за критичности.
- Статус: Патч опубликован в стабильных ветках ядра. Эксплуатация в реальных атаках не подтверждена.
Какие продукты и версии затронуты
Затронуты версии Linux Kernel, содержащие уязвимый код в драйвере Ceph. Патч был применен в следующих стабильных ветках:
- 6.16.x
- 6.15.x
- 6.14.x
- 6.13.x
- 6.12.x
- 6.11.x
- 6.10.x
- 6.9.x
Точные номера исправленных релизов зависят от дистрибутива. Рекомендуется проверить наличие патча в репозиториях вашего поставщика.
Причина уязвимости
Причина уязвимости кроется в нарушении порядка блокировок при итерации по списку
i_cap_flush_list.Функция
__kick_flushing_caps() использует макрос list_for_each_entry(), который временно освобождает i_ceph_lock для отправки сообщений. В этот момент другая функция handle_cap_flush_ack() может захватить блокировку, отсоединить и освободить объект cf через ceph_free_cap_flush().Когда исходная функция возвращает блокировку и пытается перейти к следующему элементу через
list_next_entry(), она обращается к уже освобожденной памяти. Это приводит к UAF.Как работает атака
Атака эксплуатирует гонку между двумя потоками в ядре. Первый поток отправляет сообщение FLUSH и освобождает блокировку. Второй поток получает ответ FLUSH_ACK, освобождает объект и возвращает блокировку.
Когда первый поток продолжает итерацию, он обращается к
cf->i_list.next в освобожденной памяти. Это позволяет нарушителю контролировать содержимое памяти и потенциально изменить указатели для выполнения кода.Условия успешной эксплуатации
Для успешной эксплуатации необходимо:
- Система должна использовать файловую систему Ceph.
- Должна быть активна сессия с MDS (Metadata Daemon).
- Должен произойти конфликт во времени между отправкой FLUSH и получением FLUSH_ACK.
Возможный сценарий атаки
Нарушитель подключается к Ceph-кластеру и инициирует операции, вызывающие flush capabilities. Если MDS быстро отвечает на FLUSH, срабатывает гонка. Уязвимость позволяет нарушителю повредить память ядра и получить привилегии root.
Есть ли публичный эксплойт
Публичный эксплойт не опубликован. Доступны только патчи и техническое описание уязвимости. Отсутствие эксплойта не означает, что атака невозможна, но снижает срочность внедрения патча.
Признаки эксплуатации
Специфичных IOC для этой уязвимости нет. Общие признаки атаки на ядро:
- Нестабильность системы или паники ядра.
- Необъяснимые процессы с привилегиями root.
- Изменения в файловой системе, не связанные с легитимными операциями.
Как обнаружить атаку
Для обнаружения атаки используйте:
- Мониторинг логов ядра на предмет ошибок памяти.
- Анализ процессов на аномальное поведение.
- Проверку целостности файловых систем Ceph.
Как проверить свою версию
Проверьте версию ядра:
Bash:
uname -r
uname -a
cat /proc/version
Сравните с номерами исправленных версий в вашем дистрибутиве.
Исправление
Обновите ядро до версии, содержащей патч. Для Debian/Ubuntu:
Bash:
sudo apt update
sudo apt upgrade linux-image-$(uname -r)
Для RHEL/CentOS:
Bash:
sudo dnf update kernel
Перезагрузите систему после обновления.
Временные меры защиты
Временных мер защиты нет. Единственный способ — обновление ядра. Если обновление невозможно, рассмотрите отключение Ceph или изоляцию системы.
Как проверить устранение уязвимости
После обновления проверьте версию ядра:
Bash:
uname -r
Убедитесь, что версия соответствует исправленной. Проверьте логи загрузки на ошибки.
Вывод
CVE-2026-89655 — критическая уязвимость в драйвере Ceph. Обновление ядра обязательно для всех систем, использующих Ceph. Патч устраняет гонку и предотвращает UAF.
Официальные источники
- NVD — CVE-2026-89655
- FIRST EPSS — CVE-2026-89655
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
- ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 14.09.2026 — Опубликована первая версия материала.
- 16.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
