CVE: CVE-2026-64578
Продукт: Linux Kernel
Дата публикации: 05.08.2026
Критичность: HIGH
CVSS: 8.2 (3.1)
EPSS: 0,34%; процентиль 27,22%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В модуле ядра Linux ksmbd обнаружена уязвимость CVE-2026-64578 (CVSS 8.2). При обработке составных SMB2-запросов функция проверки не валидирует размер последнего элемента перед чтением поля StructureSize2. Это приводит к чтению памяти за границами выделенного буфера (slab-out-of-bounds). Уязвимость позволяет удаленному атакующему вызвать отказ в обслуживании или потенциально раскрыть данные ядра.
Основные характеристики
Критичность: HIGH (CVSS 3.1: 8.2). Вектор: AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H. Проблема локализована в подсистеме SMB-сервера ядра (ksmbd). Дефект заключается в отсутствии проверки длины буфера перед доступом к 2-байтовому полю StructureSize2 в функции ksmbd_smb2_check_message. Атака возможна удаленно без аутентификации. EPSS составляет 0.34%, что указывает на низкую статистическую вероятность эксплуатации, однако высокий показатель влияния на доступность (A:H) требует внимания.
Какие продукты и версии затронуты
Linux Kernel с включенным модулем ksmbd. Уязвимость затрагивает версии ядра, содержащие коммит e2f34481b24d («cifsd: add server-side procedures for SMB3») и не имеющие исправления 15b38176fd1530372905c602fde51fe89ec8c877. Точные версии дистрибутивов зависят от статуса backport'а исправления в стабильные ветки. Системы, не использующие модуль ksmbd, не подвержены риску.
Причина уязвимости
Функция ksmbd_smb2_check_message в файле fs/smb/server/smb2misc.c обрабатывает составные SMB2-запросы. Логика обхода цепочки гарантирует наличие полных 64 байт заголовка SMB2 только для конечного элемента (когда NextCommand == 0). Однако перед чтением поля StructureSize2, расположенного по смещению 64 байта (__SMB2_HEADER_STRUCTURE_SIZE) от начала элемента, не проверяется, что оставшаяся длина буфера достаточна для этого поля. Если последний элемент имеет ровно 64 байта, чтение 2-байтового поля StructureSize2 происходит за пределами выделенной области памяти, вызывая ошибку KASAN: slab-out-of-bounds.
Как работает атака
Атакующий отправляет удаленный SMB2-запрос, сформированный как составная цепочка. Последний элемент этой цепочки должен иметь длину ровно 64 байта. Это значение проходит базовую проверку наличия заголовка, но недостаточно для размещения поля StructureSize2, которое начинается на 65-м байте. При обработке запроса функция ksmbd_smb2_check_message пытается прочитать 2 байта по смещению 64, выходя за границы выделенного буфера. Это приводит к чтению памяти вне границ (out-of-bounds read). В зависимости от конфигурации ядра и состояния памяти, это может вызвать крах рабочего процесса (kworker) или раскрытие содержимого соседних областей памяти.
Условия успешной эксплуатации
- Сервер Linux с загруженным модулем ksmbd.
- Сетевая доступность к порту SMB (обычно 445) на хосте.
- Возможность отправки произвольных SMB2-пакетов (не требуется аутентификация для отправки запроса, вызывающего ошибку).
- Отсутствие исправления в текущей версии ядра.
Возможный сценарий атаки
Злоумышленник сканирует сеть на наличие хостов с открытым портом 445 и активным сервисом ksmbd. После обнаружения цели он отправляет специально сформированный SMB2-пакет. Пакет содержит составной запрос, где последний элемент имеет длину 64 байта. Ядро принимает пакет, передает его на обработку в ворк-квю ksmbd-io. Функция проверки сообщения пытается прочитать StructureSize2, выходя за границы буфера. Результатом может быть генерация отчета KASAN (если включено), крах процесса ядра или, в худшем случае, чтение данных из соседних объектов памяти. Повторная отправка таких пакетов может привести к отказу в обслуживании SMB-сервиса.
Есть ли публичный эксплойт
Публичные эксплойты или PoC-коды для CVE-2026-64578 в открытом доступе не зафиксированы. Техническое описание уязвимости и дифф исправления предоставляют достаточные детали для создания PoC. Уязвимость была обнаружена и сообщена командой AutonomousCodeSecurity (Microsoft). Эксплуатация в реальных атаках не подтверждена.
Признаки эксплуатации
Специфичные IOC для этой уязвимости отсутствуют. Общие признаки потенциальной эксплуатации включают:
- Логи ядра с сообщениями KASAN: slab-out-of-bounds в ksmbd_smb2_check_message.
- Нестабильность или крахи процесса ksmbd.
- Необычная сетевая активность на порту 445 с малыми SMB2-пакетами.
- Сообщения об ошибках в dmesg, связанные с fs/smb/server/smb2misc.c.
Как обнаружить атаку
- Проверка версии ядра и наличия исправления.
- Мониторинг логов ядра (dmesg, /var/log/kern.log) на предмет сообщений KASAN или ошибок в модуле ksmbd.
- Анализ сетевых пакетов на наличие аномальных SMB2-запросов с минимальным размером последнего элемента составного запроса.
- Использование инструментов сканирования уязвимостей, обновленных с информацией о CVE-2026-64578.
Как проверить свою версию
Для проверки версии ядра используйте:
Bash:
uname -r
uname -a
cat /proc/version
Затем проверьте, содержит ли ваша версия ядра исправление. Это можно сделать, проверив наличие коммита 15b38176fd1530372905c602fde51fe89ec8c877 или более поздних стабильных версий, включающих этот патч. Для систем на базе Debian/Ubuntu проверьте статус обновления пакета linux-image. Для RHEL/CentOS проверьте обновления ядра через dnf или yum.
Исправление
Обновите ядро Linux до версии, содержащей исправление CVE-2026-64578. Исправление добавляет проверку:
if (len < __SMB2_HEADER_STRUCTURE_SIZE + sizeof(__le16)), которая отклоняет запросы, слишком короткие для поля StructureSize2. Убедитесь, что вы используете стабильную ветку ядра, в которую backport'нуто исправление. После обновления перезагрузите систему для загрузки нового ядра.Временные меры защиты
Если немедленное обновление ядра невозможно:
- Отключите модуль ksmbd, если он не требуется:
modprobe -r ksmbd.
- Добавьте ksmbd в черный список модулей, чтобы предотвратить его загрузку:
echo "blacklist ksmbd" >> /etc/modprobe.d/blacklist-ksmbd.conf.
- Ограничьте сетевой доступ к порту 445 на уровне файрвола, разрешив соединения только с доверенных IP-адресов.
- Если возможно, переключитесь на альтернативный SMB-сервер (например, Samba), не использующий модуль ядра ksmbd.
Как проверить устранение уязвимости
- Проверьте версию ядра:
uname -r.
- Убедитесь, что модуль ksmbd загружен (если требуется):
lsmod | grep ksmbd.
- Проверьте логи на отсутствие новых ошибок KASAN после обновления.
- При необходимости, проверьте наличие исправления в исходном коде ядра или используйте инструменты проверки уязвимостей.
Вывод
CVE-2026-64578 представляет собой серьезную уязвимость в модуле ksmbd ядра Linux, позволяющую удаленному атакующему вызвать чтение памяти вне границ. Хотя вероятность эксплуатации (EPSS) низкая, потенциальное влияние на доступность системы высоко. Рекомендуется своевременное обновление ядра или отключение модуля ksmbd, если он не используется. Администраторам следует мониторить логи на предмет признаков эксплуатации.
Официальные источники
- NVD — CVE-2026-64578
- FIRST EPSS — CVE-2026-64578
- ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
- ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
- ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
- ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
- ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
- ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
- ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 10.08.2026 — Опубликована первая версия материала.
- 22.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
