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) для той же сессии.
В уязвимой версии ядра:
ksmbd_tree_conn_connect()создает объект и добавляет его вsess->tree_conns.
smb2_tree_connect()получает указатель и продолжает работу.
- Параллельный поток, обрабатывающий LOGOFF, удаляет запись из xarray и освобождает объект.
smb2_tree_connect()обращается к уже освобожденной памяти, что приводит к use-after-free.
Эта гонка (race condition) позволяет нарушителю контролировать состояние памяти или вызвать сбой ядра, что может быть эксплуатировано для выполнения кода.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- Доступ к SMB2: Атакующий должен иметь сетевой доступ к порту, на котором работает ksmbd (обычно 445).
- Включенный ksmbd: Модуль
ksmbdдолжен быть загружен и активен в ядре.
- Возможность создания сессии: Атакующий должен иметь возможность установить SMB2-сессию и отправить запросы TREE CONNECT и LOGOFF.
- Точность тайминга: Эксплуатация требует успешного выполнения гонки, что может быть сложно, но не невозможно для опытного атакующего.
Возможный сценарий атаки
Сценарий атаки предполагает, что атакующий имеет удаленный доступ к SMB-серверу на Linux.
- Атакующий устанавливает SMB2-сессию с сервером.
- Он отправляет запрос SMB2 TREE CONNECT для подключения к шару.
- Одновременно (или в очень короткий промежуток времени) он отправляет запрос SMB2 LOGOFF для завершения сессии.
- Из-за гонки в ядре объект tree connection освобождается, пока обработчик TREE CONNECT еще работает с ним.
- Обращение к освобожденной памяти приводит к сбою ядра или позволяет атакующему выполнить код в контексте ядра.
Этот сценарий требует точного синхронизации запросов, но может быть автоматизирован с помощью специализированного инструмента.
Есть ли публичный эксплойт
Доступны технические описания и 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-адресов.
- Мониторинг: Усиленный мониторинг логов ядра и сетевого трафика для выявления аномальной активности.
Как проверить устранение уязвимости
Для проверки, что уязвимость устранена, выполните следующие шаги:
- Проверка версии ядра: Убедитесь, что установлена версия ядра, содержащая патч.
- Проверка коммита: Если возможно, проверьте наличие коммита
b5ec6c462aab1062cf5d1e667ba7c6442f737055в истории ядра (например, черезgit logв исходниках, если они доступны).
- Функциональное тестирование: Проведите тестирование SMB-сервера, чтобы убедиться, что он работает корректно после обновления.
- Мониторинг: Продолжайте мониторинг логов ядра на предмет сообщений KASAN или use-after-free.
Вывод
CVE-2026-89788 представляет серьезную угрозу для систем, использующих встроенный SMB-сервер Linux (ksmbd). Уязвимость позволяет удаленному атакующему вызвать use-after-free, что может привести к компрометации системы.
Рекомендуется как можно скорее обновить ядро до версии, содержащей патч, или отключить ksmbd, если он не требуется. Мониторинг логов и сетевого трафика поможет выявить попытки эксплуатации до применения исправления.
Официальные источники
- NVD — CVE-2026-89788
- FIRST EPSS — CVE-2026-89788
- ksmbd: fix tree connection use-after-free in smb2_tree_connect() - kernel/git/stable/linux.git - Linux kernel stable tree
- ksmbd: fix tree connection use-after-free in smb2_tree_connect() - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 17.09.2026 — Опубликована первая версия материала.
