CVE-2026-89788 в Linux Kernel: use-after-free в ksmbd при гонке tree connection

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

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


В модуле ksmbd обнаружена уязвимость use-after-free, возникающая при параллельном выполнении запросов TREE CONNECT и LOGOFF. Ошибка позволяет нарушителю с сетевым доступом вызвать обращение к освобожденной памяти в контексте ядра. Разбираем механику гонки, условия эксплуатации и способы проверки исправления.

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


Уязвимость затрагивает встроенный SMB-сервер Linux (ksmbd) и позволяет удаленному нарушителю вызвать обращение к освобожденной памяти через гонку при создании tree connection. Риск оценивается как критический из-за возможности удаленного выполнения кода без аутентификации.

  • Тип ошибки: Use-after-free в функции smb2_tree_connect().
  • 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.
  • Условия атаки: Удаленный доступ к порту SMB2, отсутствие необходимости в учетных данных или пользовательском взаимодействии.
  • Эксплуатация: Подтверждено наличие PoC (KASAN report), подтвержденная эксплуатация в реальных атаках не зафиксирована.
  • EPSS: 0,19% (процентиль 8,78%), что указывает на низкую вероятность эксплуатации в ближайшие 30 дней.

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


Уязвимость затрагивает ядра Linux, в которых включен модуль ksmbd (встроенный SMB-сервер). Точный список версий, требующих обновления, зависит от дистрибутива и стабильной ветки ядра, в которую был применен патч.

  • Версии ядра: Все версии, содержащие код ksmbd до применения коммита b5ec6c462aab1062cf5d1e667ba7c6442f737055.
  • Стабильные ветки: Патч был применен в stable-ветки ядра (см. ссылки на git.kernel.org).
  • Дистрибутивы: Пользователи должны проверить наличие обновления в своих репозиториях, так как точные номера пакетов не указаны в предоставленных источниках.

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


Причина уязвимости заключается в нарушении правил управления счетчиком ссылок (reference counting) при создании tree connection в ksmbd_tree_conn_connect().

Функция публикует новый объект tree connection в xarray sess->tree_conns с одной ссылкой и возвращает указатель в smb2_tree_connect(). Однако обработчик продолжает инициализировать объект и формировать ответ уже после публикации. В этот момент параллельный запрос на завершение сессии (logoff) может удалить запись из xarray и освободить объект, пока обработчик все еще использует его указатель.

Исправление вводит вторую ссылку на объект сразу после успешного xa_store(), но до освобождения блокировки tree_conns_lock. Это гарантирует, что объект не будет освобожден, пока обработчик smb2_tree_connect() не завершит свою работу и явно не снизит счетчик ссылок.

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


Атакующий отправляет SMB2-запрос на создание tree connection (SMB2 TREE CONNECT) на сервер, работающий с ksmbd. Параллельно (или в очень короткий промежуток времени) он инициирует завершение сессии (SMB2 LOGOFF) для той же сессии.

В уязвимой версии ядра:

  1. ksmbd_tree_conn_connect() создает объект и добавляет его в sess->tree_conns.
  2. smb2_tree_connect() получает указатель и продолжает работу.
  3. Параллельный поток, обрабатывающий LOGOFF, удаляет запись из xarray и освобождает объект.
  4. smb2_tree_connect() обращается к уже освобожденной памяти, что приводит к use-after-free.

Эта гонка (race condition) позволяет нарушителю контролировать состояние памяти или вызвать сбой ядра, что может быть эксплуатировано для выполнения кода.

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


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

  • Доступ к SMB2: Атакующий должен иметь сетевой доступ к порту, на котором работает ksmbd (обычно 445).
  • Включенный ksmbd: Модуль ksmbd должен быть загружен и активен в ядре.
  • Возможность создания сессии: Атакующий должен иметь возможность установить SMB2-сессию и отправить запросы TREE CONNECT и LOGOFF.
  • Точность тайминга: Эксплуатация требует успешного выполнения гонки, что может быть сложно, но не невозможно для опытного атакующего.

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


Сценарий атаки предполагает, что атакующий имеет удаленный доступ к SMB-серверу на Linux.

  1. Атакующий устанавливает SMB2-сессию с сервером.
  2. Он отправляет запрос SMB2 TREE CONNECT для подключения к шару.
  3. Одновременно (или в очень короткий промежуток времени) он отправляет запрос SMB2 LOGOFF для завершения сессии.
  4. Из-за гонки в ядре объект tree connection освобождается, пока обработчик TREE CONNECT еще работает с ним.
  5. Обращение к освобожденной памяти приводит к сбою ядра или позволяет атакующему выполнить код в контексте ядра.

Этот сценарий требует точного синхронизации запросов, но может быть автоматизирован с помощью специализированного инструмента.

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


Доступны технические описания и PoC (Proof of Concept) в виде KASAN-отчета, который демонстрирует срабатывание use-after-free. Подтвержденная эксплуатация в реальных атаках (in-the-wild) не зафиксирована в предоставленных источниках. Отсутствие сведений о массовом использовании не означает, что эксплойт недоступен, но указывает на то, что уязвимость пока не широко эксплуатируется.

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


Специфичные IOC (Indicators of Compromise) для этой уязвимости не опубликованы. Однако можно использовать общие признаки атаки на SMB-сервер:

  • Аномальные SMB2-запросы: Частые последовательности TREE CONNECT и LOGOFF от одного IP-адреса.
  • Сбои ядра: Сообщения в dmesg или journalctl о KASAN use-after-free в smb2_tree_connect.
  • Необычная активность: Резкое увеличение числа сбоей или перезагрузок сервера, работающего с ksmbd.

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


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

  • Мониторинг логов ядра: Ищите сообщения KASAN или oops в dmesg или journalctl, содержащие smb2_tree_connect и use-after-free.
  • Сетевой мониторинг: Анализируйте трафик SMB2 на предмет аномальных паттернов запросов TREE CONNECT и LOGOFF.
  • Системное логирование: Используйте auditd для отслеживания вызовов функций ядра, связанных с ksmbd, если это поддерживается дистрибутивом.

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


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

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

Чтобы проверить, загружен ли модуль ksmbd:

Bash:
lsmod | grep ksmbd

Если модуль не загружен, уязвимость не эксплуатируема, но рекомендуется обновить ядро для предотвращения будущих рисков.

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


Единственный надежный способ устранения уязвимости — обновление ядра до версии, содержащей патч b5ec6c462aab1062cf5d1e667ba7c6442f737055.

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

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


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

  • Отключение ksmbd: Если SMB-сервер не требуется, отключите модуль ksmbd или остановите сервис ksmbd.
  • Ограничение доступа: Используйте файрвол для ограничения доступа к порту SMB2 (445) только для доверенных IP-адресов.
  • Мониторинг: Усиленный мониторинг логов ядра и сетевого трафика для выявления аномальной активности.

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


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

  1. Проверка версии ядра: Убедитесь, что установлена версия ядра, содержащая патч.
  2. Проверка коммита: Если возможно, проверьте наличие коммита b5ec6c462aab1062cf5d1e667ba7c6442f737055 в истории ядра (например, через git log в исходниках, если они доступны).
  3. Функциональное тестирование: Проведите тестирование SMB-сервера, чтобы убедиться, что он работает корректно после обновления.
  4. Мониторинг: Продолжайте мониторинг логов ядра на предмет сообщений KASAN или use-after-free.

Вывод​


CVE-2026-89788 представляет серьезную угрозу для систем, использующих встроенный SMB-сервер Linux (ksmbd). Уязвимость позволяет удаленному атакующему вызвать use-after-free, что может привести к компрометации системы.

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

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


  1. NVD — CVE-2026-89788
  2. FIRST EPSS — CVE-2026-89788
  3. ksmbd: fix tree connection use-after-free in smb2_tree_connect() - kernel/git/stable/linux.git - Linux kernel stable tree
  4. ksmbd: fix tree connection use-after-free in smb2_tree_connect() - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

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


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