CVE-2026-64578 в Linux Kernel: уязвимость в обработке составных SMB2-запросов

CVE: CVE-2026-64578
Продукт: Linux Kernel
Дата публикации: 05.08.2026
Критичность: HIGH
CVSS: 8.2 (3.1)
EPSS: 0,32%; процентиль 24,08%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


Уязвимость CVE-2026-64578 в ядре Linux связана с некорректной проверкой размера составных SMB2-запросов, что может привести к выходу за границы буфера и потенциальному сбою в работе ядра. Системы, использующие компонент ksmbd для реализации SMB2-сервера, могут быть подвержены риску. Администраторы должны проверить версии ядра и применить обновления для устранения уязвимости.

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


Уязвимость классифицируется как уязвимость типа memory corruption. Она затрагивает компонент ksmbd, реализующий SMB2-сервер в ядре Linux. При обработке составных (compound) запросов, если длина элемента недостаточна для содержания поля StructureSize2, происходит чтение за пределы буфера. Это может привести к сбою в работе ядра. Уязвимость имеет высокий уровень критичности (CVSS 8.2) и может быть использована удалённым клиентом для вызова сбоев. Механизм атаки основан на некорректной проверке длины элемента перед чтением поля структуры.

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


Уязвимость затрагивает версии ядра Linux, где используется компонент ksmbd для реализации SMB2-сервера. Системы, которые используют ksmbd для предоставления SMB-ресурсов, находятся в зоне риска. Уязвимость может проявляться в конфигурациях, где активен SMB2-протокол. Детальная информация о версиях, в которых устранена проблема, содержится в источниках. Администраторы должны проверить, какие версии ядра установлены, и применить обновления, если они не включают исправление.

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


Основная причина уязвимости — отсутствие проверки размера входящего SMB2-запроса перед чтением поля StructureSize2. В функции ksmbd_smb2_check_message() производится чтение 2-байтового поля StructureSize2 по адресу, который может находиться за пределами буфера. Это происходит при обработке составных (compound) запросов, где последний элемент имеет размер ровно 64 байта. Логика обработки гарантирует наличие полного заголовка SMB2 только для последнего элемента. Однако, если элемент меньше, чем 66 байт (64 байта заголовка + 2 байта StructureSize2), чтение за пределы буфера происходит. Это приводит к KASAN-ошибке и возможному выходу за границы буфера.

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


Атакующий может отправить специально подготовленный составной SMB2-запрос, в котором последний элемент имеет размер ровно 64 байта. Сервер, использующий ksmbd, обрабатывает этот запрос и пытается прочитать StructureSize2, находясь за пределами буфера. Это может привести к сбою в работе ядра. Механизм атаки зависит от того, как ядро обрабатывает составные запросы и как оно проверяет длину элементов. Уязвимость может быть использована для вызова сбоев в работе ядра.

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


Для эксплуатации уязвимости требуется возможность отправки составного SMB2-запроса на сервер, использующий ksmbd. Атакующий должен иметь доступ к сети, через которую осуществляется взаимодействие с сервером. Также необходима возможность инициировать SMB2-сессию. Уязвимость не может быть использована, если сервер не использует ksmbd или не поддерживает SMB2. Администраторы должны проверить, активны ли на сервере службы SMB2, и использовать только обновлённые версии ядра.

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


Сценарий атаки предполагает, что удалённый клиент создаёт составной SMB2-запрос, в котором последний элемент имеет размер 64 байта. Сервер, использующий ksmbd, обрабатывает этот запрос и пытается прочитать StructureSize2, находясь за пределами буфера. Это может привести к сбою в работе ядра. Атакующий может использовать это для вызова других ошибок. Сценарий требует наличия SMB2-сервера на целевой системе.

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


На момент написания статьи, публичные эксплойты или PoC для CVE-2026-64578 не были подтверждены. Информация о том, что уязвимость уже эксплуатируется в реальных атаках, также отсутствует. Однако, так как уязвимость имеет высокий уровень критичности и может быть использована для вызова сбоев в работе ядра, рекомендуется немедленно применить исправление. Отсутствие публичных PoC не означает отсутствие уязвимости или возможности её эксплуатации.

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


В отсутствие подтверждённых эксплойтов, индикаторы компрометации могут включать аномалии в журналах ядра, связанные с KASAN-ошибками или сбоями в работе ksmbd. Также возможны записи в логах, указывающие на необычное поведение SMB2-запросов. Администраторы должны мониторить логи ядра на предмет сообщений, связанных с out-of-bounds read или другими ошибками памяти. В случае обнаружения таких событий, необходимо провести анализ и применить обновление.

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


Обнаружение уязвимости возможно через мониторинг журналов ядра, особенно при наличии сообщений KASAN о выходе за границы буфера. Также можно использовать системные мониторы, отслеживающие активность ksmbd. В случае обнаружения ошибок, связанных с StructureSize2 или smb2misc.c, следует проверить версию ядра и наличие исправления. Администраторы могут использовать команды для проверки версии ядра и состояния модулей, чтобы определить, подвержена ли система уязвимости.

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


Для проверки версии ядра, в которой может быть уязвимость, можно использовать команды: uname -r, uname -a, cat /proc/version. Также можно проверить, установлены ли патчи, связанные с исправлением уязвимости. Например, можно проверить, есть ли в исходном коде файла fs/smb/server/smb2misc.c строка, добавленная в исправлении: if (len < __SMB2_HEADER_STRUCTURE_SIZE + sizeof(__le16)) { и соответствующие сообщения об ошибке. Если строка отсутствует, система может быть уязвимой.

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


Рекомендуется обновить ядро Linux до версии, содержащей исправление CVE-2026-64578. Исправление добавляет проверку размера элемента перед чтением StructureSize2. Администраторы должны проверить, какие версии ядра установлены на системах, и применить обновления, если они не включают исправление. Также необходимо отключить использование ksmbd, если он не требуется. Обновление ядра должно быть выполнено с осторожностью, чтобы избежать проблем с совместимостью.

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


Временные меры защиты могут включать отключение службы SMB2, если она не используется, или ограничение доступа к серверу SMB через брандмауэр. Также можно использовать мониторинг и логирование для выявления подозрительной активности. Администраторы могут ограничить количество одновременных соединений или установить лимиты на размер входящих запросов. Эти меры не устраняют уязвимость, но могут снизить риск эксплуатации.

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


После применения обновления, необходимо проверить, что исправление действительно применено. Можно использовать команды uname -r и проверить, что версия ядра включает исправление. Также можно проверить, что в файле fs/smb/server/smb2misc.c содержится строка, добавленная в исправлении. Для подтверждения, что уязвимость устранена, можно выполнить тесты, которые ранее вызывали ошибку KASAN. После обновления, такие ошибки должны больше не возникать.

Вывод​


Уязвимость CVE-2026-64578 в Linux Kernel представляет собой уязвимость в обработке составных SMB2-запросов, которая может привести к выходу за границы буфера и сбою в работе ядра. Администраторы должны проверить, какие версии ядра установлены, и применить обновления, если они не включают исправление. Временные меры защиты могут снизить риск, но не устраняют уязвимость полностью. Рекомендуется регулярно обновлять ядро и следить за изменениями в безопасности.

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


  1. NVD — CVE-2026-64578
  2. FIRST EPSS — CVE-2026-64578
  3. ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
  4. ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
  5. ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
  6. ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
  7. ksmbd: validate compound request size before reading StructureSize2 - kernel/git/stable/linux.git - Linux kernel stable tree
  8. CVEs — The Linux Kernel documentation

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


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