CVE-2026-89655 в Linux Kernel: UAF в Ceph, механизм гонки и порядок применения патча

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.

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


  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. ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
  8. ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
  9. ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock - kernel/git/stable/linux.git - Linux kernel stable tree
  10. 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 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ