CVE-2026-89655 в Linux Kernel: гонка в Ceph, уязвимые версии и защита

CVE: CVE-2026-89655
Продукт: Linux Kernel
Дата публикации: 11.09.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,63%; процентиль 48,08%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В подсистеме Ceph ядра Linux обнаружена уязвимость Use-After-Free, возникающая из-за гонки при обработке сообщений о сбросе прав доступа. Ошибка позволяет нарушителю повлиять на состояние ядра, вызвав сбой или выполнив произвольный код. В статье разобран механизм атаки, затронутые версии и порядок применения исправлений.

Основные характеристики​


Уязвимость позволяет нарушителю, имеющему доступ к файловой системе Ceph, вызвать сбой ядра или выполнить произвольный код с привилегиями root. Риск обусловлен обращением к освобожденной памяти в многопоточном окружении.

  • Тип ошибки: Use-After-Free (UAF) в подсистеме Ceph.
  • 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.
  • Условия атаки: Удаленный доступ, низкая сложность, отсутствие необходимости в привилегиях или взаимодействии пользователя.
  • Эксплуатация: Публичные эксплойты не подтверждены, но риск эксплуатации в реальных атаках оценивается как 0,63% (EPSS 0.00626).

Какие продукты и версии затронуты​


Уязвимость затрагивает ядра Linux, в которых включена поддержка файловой системы Ceph. Точный список версий, требующих обновления, зависит от конкретного дистрибутива и его политики поддержки.

  • Ядро Linux: Все версии, содержащие подсистему Ceph и не включающие исправление (коммит 7af4c4f01305b0935adf6d4301b1ec407025485d).
  • Дистрибутивы: Пользователи должны проверить наличие обновлений в официальных репозиториях своих дистрибутивов (Debian, Ubuntu, RHEL и др.).

Причина уязвимости​


Причина уязвимости кроется в нарушении порядка управления памятью в функции __kick_flushing_caps() файла fs/ceph/caps.c. Код использует макрос list_for_each_entry() для итерации по списку i_cap_flush_list, но при этом снимает блокировку i_ceph_lock для отправки сообщений.

В этот момент другой поток (handle_cap_flush_ack()) может получить блокировку, отсоединить элемент списка и освободить его память через ceph_free_cap_flush(). Когда исходный поток возвращает блокировку и пытается перейти к следующему элементу, он обращается к уже освобожденной памяти, что приводит к ошибке Use-After-Free.

Как работает атака​


Атака эксплуатирует гонку (race condition) между двумя потоками ядра. Первый поток итерирует список задач сброса прав доступа и отправляет сообщение FLUSH в MDS (Metadata Server). Второй поток обрабатывает ответ FLUSH_ACK от MDS и освобождает память, связанную с этим сообщением.

Если ответ MDS приходит достаточно быстро, память освобождается до того, как первый поток завершит итерацию. При попытке первого потока прочитать указатель next в освобожденной структуре возникает обращение к невалидной памяти. Это позволяет нарушителю повлиять на состояние ядра, вызвав сбой или, в худшем случае, выполнив произвольный код.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости нарушителю необходимо выполнить следующие условия:

  • Доступ к Ceph: Система должна быть подключена к кластеру Ceph и активно использовать файловую систему Ceph.
  • Удаленный доступ: Атака возможна по сети (AV:N) без необходимости физического доступа к устройству.
  • Отсутствие привилегий: Нарушителю не требуются специальные права доступа (PR:N) или взаимодействие с пользователем (UI:N).

Возможный сценарий атаки​


Сценарий атаки начинается с отправки запроса на сброс прав доступа (cap flush) в Ceph. Ядро формирует сообщение FLUSH и отправляет его в MDS. В этот момент блокировка i_ceph_lock снимается.

MDS быстро обрабатывает запрос и возвращает FLUSH_ACK. Поток обработки ответа освобождает память структуры ceph_cap_flush. В это же время исходный поток пытается продолжить итерацию по списку и обращается к освобожденной памяти. Это приводит к повреждению данных ядра или выполнению кода нарушителя.

Есть ли публичный эксплойт​


На момент публикации сведений о CVE-2026-89655 публичные эксплойты или подтвержденные случаи эксплуатации в реальных атаках не зафиксированы. Однако наличие подробного технического описания механизма гонки и критический уровень CVSS делают уязвимость привлекательной для злоумышленников.

Отсутствие публичного эксплойта не означает, что атака невозможна. Разработчики и администраторы должны рассматривать эту уязвимость как требующую срочного устранения.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для CVE-2026-89655 не опубликованы. Для обнаружения атаки можно использовать общие, неспецифичные признаки:

  • Сбои ядра: Записи в dmesg или системных журналах об ошибках памяти (segfault, page fault) в подсистеме Ceph.
  • Аномальная активность: Необъяснимые процессы с правами root, работающие в фоне.
  • Сетевые аномалии: Необычные соединения с узлами Ceph MDS, не связанные с легитимной работой файловой системы.

Как обнаружить атаку​


Для обнаружения признаков эксплуатации уязвимости рекомендуется использовать следующие методы:

  • Мониторинг журналов: Анализ dmesg и journalctl на наличие ошибок, связанных с fs/ceph/caps.c или ceph_free_cap_flush.
  • Системное аудирование: Использование инструментов аудита (auditd) для отслеживания подозрительных вызовов в подсистеме Ceph.
  • Сетевой анализ: Мониторинг трафика между узлами и Ceph MDS на предмет аномальных паттернов, характерных для атак на файловую систему.

Как проверить свою версию​


Для проверки версии ядра и наличия поддержки Ceph используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Чтобы проверить, включена ли подсистема Ceph в ядре, выполните:

Bash:
modinfo ceph

Если модуль ceph присутствует, ваша система потенциально уязвима, если ядро не обновлено до версии, содержащей исправление.

Исправление​


Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Исправление было внесено в коммит 7af4c4f01305b0935adf6d4301b1ec407025485d и распространено в стабильные ветки ядра.

  • Обновление ядра: Используйте пакетный менеджер вашего дистрибутива для установки последней доступной версии ядра.
  • Перезагрузка: После обновления ядра требуется перезагрузка системы для применения изменений.
  • Проверка: Убедитесь, что новая версия ядра содержит исправление, проверив наличие соответствующего коммита в истории ядра.

Временные меры защиты​


Пока обновление ядра не применено, можно использовать следующие временные меры для снижения риска:

  • Отключение Ceph: Если файловая система Ceph не критична для работы, отключите ее или размонтируйте томы Ceph.
  • Ограничение доступа: Ограничьте сетевой доступ к узлам, использующим Ceph, доверенным IP-адресам.
  • Мониторинг: Усиленный мониторинг системных журналов на предмет аномальной активности в подсистеме Ceph.

Как проверить устранение уязвимости​


Для проверки успешного применения исправления выполните следующие шаги:

  1. Проверка версии ядра: Убедитесь, что система работает на обновленной версии ядра.
  2. Проверка коммита: Используйте git log или инструменты для проверки истории ядра, чтобы убедиться в наличии коммита 7af4c4f01305b0935adf6d4301b1ec407025485d.
  3. Функциональное тестирование: Проведите тестирование работы файловой системы Ceph, чтобы убедиться, что исправление не вызвало регрессий.

Вывод​


CVE-2026-89655 представляет серьезную угрозу для систем, использующих файловую систему Ceph. Критический уровень уязвимости и возможность удаленной атаки без привилегий делают обновление ядра приоритетной задачей. Администраторы должны незамедлительно применить исправления и усилить мониторинг систем до завершения обновления.

Официальные источники​


  1. NVD — CVE-2026-89655
  2. FIRST EPSS — CVE-2026-89655
  3. ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
  4. ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
  5. ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
  6. ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 14.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ