CVE-2026-64597 в Linux Kernel: double-free в SMB-клиенте, уязвимые версии и защита

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

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


В клиенте SMB Linux ядра обнаружена ошибка double-free в функции SMB2_close() при обработке повторяющихся запросов. Сбой возникает при неудачной инициализации повторной отправки и приводит к повторному освобождению буфера ответа.

Уязвимость классифицирована как критическая (CVSS 9.8) и затрагивает системы, использующие файловые шары SMB/CIFS. Статья описывает механику ошибки, условия её проявления и способы проверки исправления.

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


Уязвимость представляет собой ошибку управления памятью (double-free) в клиентской части протокола SMB, что может привести к нарушению целостности памяти ядра. Риск связан с возможностью удалённого срабатывания при работе с сетевыми файловыми системами.

  • Тип ошибки: Double-free (повторное освобождение памяти). Ошибка возникает при некорректном управлении буфером ответа в цикле повторных попыток.
  • 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. Высокий балл отражает удалённый доступ без необходимости аутентификации и полное воздействие на конфиденциальность, целостность и доступность.
  • Условия атаки: Удалённый (Network), низкая сложность (Low), отсутствие прав (None), отсутствие взаимодействия пользователя (None).
  • Эксплуатация: В каталоге CISA KEV подтверждений активной эксплуатации не найдено. EPSS составляет 0,36% (процентиль 28,66%), что указывает на низкую вероятность эксплуатации в ближайшем будущем.
  • Статус: CVE-2026-64597. Дата публикации: 06.08.2026. Статус в NVD: Received.

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


Уязвимость затрагивает клиентскую часть реализации SMB в ядре Linux. Конкретные версии пакетов для дистрибутивов в переданных данных не указаны, однако исправление внесено в стабильные ветки ядра.

  • Компонент: fs/smb/client/smb2pdu.c (клиент SMB/CIFS).
  • Функция: __SMB2_close().
  • Исправляющий коммит: f96e1cdcb63ed3321142ff2fcdf784e32cda8fee (upstream).
  • Стабильные ветки: Коммиты 037511726228aaf165c7067ff2bfc88eaecdf1f3, 0aa97edf7c347c0f54e7e60c4740574b8120c66a, b18ed621dbfceecea5539848cddcb9272c9a61e1, d15d83125007f673aec4323e1bbbaaffbe87ea13.

Для определения актуальности системы необходимо сверить версию ядра с перечнем исправленных версий в документации вашего дистрибутива.

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


Причина ошибки кроется в некорректном управлении состоянием буфера ответа при повторных попытках отправки запроса SMB2.

В функции __SMB2_close() предусмотрен механизм повторных попыток (replay) при возникновении определённых ошибок. Если попытка с ответом возвращает повторяемую ошибку, буфер ответа освобождается. Однако, если последующая инициализация SMB2_close_init() завершается ошибкой до следующей отправки, код очистки (cleanup) сохраняет предыдущий тип буфера и повторно освобождает уже освобождённый ответ.

Исправление заключается в сбросе учёта ответа (response bookkeeping) перед каждой попыткой. В коммите добавлены строки resp_buftype = CIFS_NO_BUFFER; и memset(&rsp_iov, 0, sizeof(rsp_iov)); в метке replay_again, что гарантирует чистое состояние перед повторной инициализацией.

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


Атака эксплуатирует логическую ошибку в цикле обработки ошибок протокола SMB2. Атакующий взаимодействует с системой, использующей SMB-клиент, и провоцирует сценарий, при котором запрос SMB2_close возвращает повторяемую ошибку.

После освобождения буфера ответа в рамках обработки этой ошибки, атакующий может повлиять на условия, при которых следующая инициализация запроса завершится неудачей. Это приводит к тому, что функция очистки пытается освободить тот же самый указатель памяти повторно.

Повторное освобождение (double-free) в ядре Linux может привести к повреждению структуры памяти, что потенциально позволяет атакующему выполнить произвольный код или вызвать отказ в обслуживании (DoS). Механизм требует точного контроля над последовательностью сетевых пакетов и состоянием соединения.

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


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

  • Доступ к SMB-серверу: Система-жертва должна быть подключена к SMB-серверу, с которым атакующий может взаимодействовать или который он контролирует.
  • Загрузка модуля SMB-клиента: В ядре должен быть загружен модуль cifs или встроенная поддержка SMB-клиента.
  • Триггер повторяемой ошибки: Необходимо вызвать сценарий, при котором SMB2_close возвращает ошибку, помеченную как replayable, и последующая инициализация завершается ошибкой.
  • Контроль над памятью: Для перехода от double-free к выполнению кода атакующему, вероятно, потребуется контроль над содержимым освобождённой памяти (heap grooming).

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


Сценарий атаки начинается с установления соединения SMB с целевой системой. Атакующий инициирует операцию закрытия файла или ресурса, которая вызывает функцию __SMB2_close в ядре.

В ответ на запрос сервер (или промежуточный узел, контролируемый атакующим) возвращает ошибку, которую клиент классифицирует как подлежащую повтору. Клиент освобождает буфер ответа. Затем атакующий манипулирует сетевым трафиком или состоянием сессии так, чтобы следующая попытка инициализации запроса завершилась ошибкой.

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

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


На момент подготовки материала публичные эксплойты для CVE-2026-64597 не обнаружены в открытых базах данных. В каталоге CISA KEV уязвимость не значится, что означает отсутствие подтверждений активной эксплуатации в реальных атаках.

EPSS (Exploit Prediction Scoring System) составляет 0,36%, что указывает на низкую вероятность эксплуатации в ближайшие 30 дней. Отсутствие публичного PoC не гарантирует, что эксплойт не существует в закрытых базах данных, но текущий риск эксплуатации считается низким.

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


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

  • Сегфолты ядра: Записи в dmesg или системном журнале о BUG: unable to handle kernel paging request или general protection fault в модуле cifs.
  • Аномальные ошибки SMB: Частые сообщения об ошибках в протоколе SMB2, связанные с повторными попытками (replay) и освобождением буферов.
  • Неожиданные перезагрузки: Системные сбои, связанные с повреждением памяти ядра, при работе с сетевыми файловыми системами.

Эти признаки неспецифичны и могут быть вызваны другими проблемами, но их наличие требует дополнительного расследования.

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


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

  • Мониторинг журналов ядра: Анализ dmesg и /var/log/kern.log на предмет ошибок, связанных с модулем cifs и функцией SMB2_close.
  • Сетевой анализ: Мониторинг трафика SMB2 на предмет аномальных последовательностей запросов SMB2_close и ошибок, которые могут указывать на попытку триггерирования double-free.
  • Инструменты аудита: Использование auditd для отслеживания системных вызовов, связанных с файловыми операциями SMB, и выявление аномальных паттернов.

Также рекомендуется включить KASAN (Kernel Address Sanitizer) в тестовых средах для раннего обнаружения ошибок управления памятью.

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


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

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

Сравните полученную версию с перечнем исправленных версий в документации вашего дистрибутива Linux. Если ваша версия ядра содержит коммит f96e1cdcb63ed3321142ff2fcdf784e32cda8fee или более поздний, система защищена от этой уязвимости.

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


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

  • Обновление ядра: Используйте пакетный менеджер вашего дистрибутива для обновления ядра. Например, для Debian/Ubuntu: sudo apt update && sudo apt upgrade linux-image-$(uname -r).
  • Перезагрузка: После обновления ядра требуется перезагрузка системы для применения изменений.
  • Проверка: После перезагрузки убедитесь, что новая версия ядра загружена и содержит исправление.

Не рекомендуется применять частичные патчи или модификации исходного кода без полного обновления, так как это может привести к нестабильности системы.

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


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

  • Отключение SMB-клиента: Если использование SMB-файловых шаров не критично, отключите модуль cifs или запретите его загрузку.
  • Ограничение доступа: Ограничьте доступ к SMB-серверам, с которыми взаимодействует система, через файрвол. Разрешите доступ только к доверенным адресам.
  • Использование альтернативных протоколов: Если возможно, переключитесь на другие протоколы передачи файлов (например, NFS), не использующие уязвимый код.

Эти меры снижают вероятность эксплуатации, но не устраняют уязвимость полностью. Они должны рассматриваться как временное решение до установки обновления.

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


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

  1. Проверка версии ядра: Убедитесь, что система работает на обновлённом ядре.

    Bash:
    uname -r
  2. Проверка наличия коммита: Если вы используете кастомное ядро, проверьте наличие коммита f96e1cdcb63ed3321142ff2fcdf784e32cda8fee в истории.

    Bash:
    git log --oneline | grep f96e1cdcb63ed3321142ff2fcdf784e32cda8fee
  3. Функциональное тестирование: Проведите тестовые операции с SMB-файловыми системами, чтобы убедиться в отсутствии сбоев и ошибок в работе клиента.

Если все проверки пройдены, система считается защищённой от CVE-2026-64597.

Вывод​


CVE-2026-64597 представляет собой критическую уязвимость в клиенте SMB Linux ядра, связанную с double-free при обработке повторяющихся запросов. Несмотря на высокий балл CVSS, текущая вероятность эксплуатации считается низкой, так как публичные эксплойты отсутствуют, а уязвимость не включена в каталог CISA KEV.

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

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


  1. NVD — CVE-2026-64597
  2. FIRST EPSS — CVE-2026-64597
  3. smb: client: fix double-free in SMB2_close() replay - kernel/git/stable/linux.git - Linux kernel stable tree
  4. smb: client: fix double-free in SMB2_close() replay - kernel/git/stable/linux.git - Linux kernel stable tree
  5. smb: client: fix double-free in SMB2_close() replay - kernel/git/stable/linux.git - Linux kernel stable tree
  6. smb: client: fix double-free in SMB2_close() replay - kernel/git/stable/linux.git - Linux kernel stable tree
  7. smb: client: fix double-free in SMB2_close() replay - kernel/git/stable/linux.git - Linux kernel stable tree
  8. CVEs — The Linux Kernel documentation

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


  • 10.08.2026 — Опубликована первая версия материала.
  • 27.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ