CVE: CVE-2026-64598
Продукт: Linux Kernel
Дата публикации: 06.08.2026
Критичность: HIGH
CVSS: 8.8 (3.1)
EPSS: 0,28%; процентиль 19,76%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В клиенте SMB ядра Linux обнаружена ошибка в функции
smb2_aead_req_alloc(). Некорректная обработка кода ошибки приводит к формированию невалидного указателя, что вызывает сбой ядра при последующем обращении к памяти. Материал описывает техническую природу дефекта, условия его проявления и способы проверки актуальности системы.Основные характеристики
Риск связан с нарушением целостности памяти при обработке ошибок в криптографическом стеке SMB-клиента. Дефект приводит к падению ядра (Denial of Service) при попытке доступа к невалидному указателю.
- Тип ошибки: Некорректная обработка кода ошибки. Переменная
u32используется для хранения отрицательного кода, что нарушает семантикуERR_PTR.
- CVSS: 8.8 (HIGH). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H. Высокая оценка обусловлена сетевой векторией и полным воздействием на конфиденциальность, целостность и доступность.
- Эксплуатация: В каталоге CISA KEV подтверждений активной эксплуатации не найдено. EPSS составляет 0,28% (процентиль 19,76%), что указывает на низкую вероятность эксплуатации в ближайшем будущем.
- Статус: Уязвимость исправлена в стабильных ветках ядра. Патч доступен в официальных репозиториях Linux Kernel.
Какие продукты и версии затронуты
Уязвимость затрагивает Linux Kernel в версиях, содержащих исходный дефект, который был введён в коммите
d08089f649a0 ("cifs: Change the I/O paths to use an iterator rather than a page list").- Компонент:
fs/smb/client/smb2ops.c(SMB client).
- Функция:
smb2_aead_req_alloc().
- Версии: Точный список уязвимых версий ядра не указан в предоставленных источниках. Патч был применён в стабильных ветках (stable tree) в июле 2026 года. Администраторам рекомендуется сверить версию ядра с релизными заметками дистрибутива.
Для определения текущей версии ядра используйте команды:
Bash:
uname -r
uname -a
cat /proc/version
Если версия ядра старше даты коммита исправления (июль 2026) и не содержит патча, система потенциально уязвима.
Причина уязвимости
Причина уязвимости кроется в некорректной обработке возвращаемого значения функции
cifs_get_num_sgs() в коде smb2_aead_req_alloc().В исходном коде переменная
*num_sgs имеет тип u32 (беззнаковое 32-битное целое). Функция cifs_get_num_sgs() может возвращать отрицательные коды ошибок (например, -ENOMEM или -EINVAL), которые в представлении u32 интерпретируются как очень большие положительные числа.Код проверял ошибку через
IS_ERR_VALUE((long)(int)*num_sgs). Однако при передаче *num_sgs в ERR_PTR(*num_sgs) происходит приведение u32 к указателю. Поскольку u32 не может корректно представить отрицательный код ошибки в формате ERR_PTR (который ожидает long или int), формируется невалидный указатель.Вместо возврата корректного указателя на ошибку, функция возвращала мусор, который затем использовался как валидный указатель на структуру запроса. При последующем обращении к этому указателю ядро падает (crash) из-за нарушения целостности памяти.
Как работает атака
Атака эксплуатирует логическую ошибку в обработке ошибок при подготовке криптографического запроса в SMB-клиенте.
- Инициализация: Пользователь или процесс инициирует операцию чтения/записи на SMB-шаре, требующую шифрования (AEAD).
- Вызов функции: Ядро вызывает
smb2_aead_req_alloc()для выделения структуры запроса.
- Ошибка в
cifs_get_num_sgs: Функцияcifs_get_num_sgs()возвращает отрицательный код ошибки (например, при нехватке памяти или некорректных параметрах).
- Некорректное приведение: Значение сохраняется в
u32переменную*num_sgs. Отрицательное число становится большим положительным.
- Формирование
ERR_PTR: Код пытается вернутьERR_PTR(*num_sgs). Из-за несовпадения типов формируется невалидный указатель.
- Сбой: Вызывающая функция получает этот указатель, считает его валидным и пытается по нему обратиться. Ядро фиксирует сбой (kernel panic или oops) из-за доступа к недопустимой области памяти.
Атакующий может спровоцировать эту ситуацию, отправив специально сформированные SMB-запросы, которые приводят к ошибке в
cifs_get_num_sgs(), например, через исчерпание ресурсов или некорректные параметры шифрования.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:
- Сетевой доступ: Атакующий должен иметь сетевой доступ к системе, работающей с SMB-клиентом (AV:N).
- Взаимодействие пользователя: Требуется, чтобы пользователь или процесс на целевой системе инициировал подключение к SMB-шару или операцию, требующую шифрования (UI:R). Это может быть автоматическое монтирование или ручное действие.
- Наличие SMB-клиента: В ядре должна быть загружена и активна подсистема
fs/smb/client.
- Уязвимая версия ядра: Система должна работать на версии ядра, не содержащей патч
61f28012e5650c619223decdb7970e0d3162e949.
- Способность вызвать ошибку: Атакующий должен иметь возможность повлиять на параметры SMB-запроса так, чтобы
cifs_get_num_sgs()вернула ошибку. Это может быть связано с ограничением ресурсов или некорректной конфигурацией шифрования.
Возможный сценарий атаки
Сценарий атаки предполагает, что атакующий находится в той же сети, что и жертва, и имеет доступ к SMB-серверу.
- Разведка: Атакующий определяет, что целевая система подключается к SMB-шарам с включенным шифрованием (SMB3).
- Провокация: Атакующий отправляет на SMB-сервер запросы, которые приводят к ошибке в обработке на стороне клиента. Например, запрос с некорректным размером или параметрами, вызывающими ошибку в
cifs_get_num_sgs().
- Сбой: Клиентская система пытается обработать ответ, вызывает
smb2_aead_req_alloc(), которая возвращает невалидный указатель. Ядро падает.
- Результат: Система перезагружается или становится недоступной (Denial of Service). В некоторых случаях, если сбой происходит в критическом контексте, это может привести к утечке данных или повышению привилегий, но основной подтвержденный эффект — сбой.
Атакующий может повторять атаку, чтобы поддерживать систему в нерабочем состоянии.
Есть ли публичный эксплойт
В предоставленных источниках нет информации о публичных эксплойтах или PoC для CVE-2026-64598.
- PoC: Не обнаружено.
- Техническое описание: Доступно в коммитах исправления в репозитории Linux Kernel.
- Подтвержденная эксплуатация: В каталоге CISA KEV уязвимость не числится, что означает отсутствие подтверждений массовой эксплуатации в дикой природе.
- EPSS: 0,28% (процентиль 19,76%). Низкая вероятность эксплуатации в ближайшие 30 дней.
Отсутствие публичного эксплойта не гарантирует, что уязвимость не может быть эксплуатирована. Атакующие с глубокими знаниями архитектуры SMB-клиента могут разработать собственный эксплойт.
Признаки эксплуатации
Специфичных IOC (Indicators of Compromise) для CVE-2026-64598 в источниках не указано. Однако можно использовать общие признаки аномального поведения SMB-клиента:
- Сбои ядра: Записи в
dmesgили системных журналах о kernel panic, oops или segfault в модулеsmbилиcifs.
- Аномальные SMB-запросы: Мониторинг сетевого трафика на предмет некорректных SMB-запросов, вызывающих ошибки в клиенте.
- Повторяющиеся перезагрузки: Если система регулярно перезагружается при попытке подключения к SMB-шарам.
Эти признаки неспецифичны и могут быть вызваны другими проблемами. Рекомендуется корреляция с другими событиями безопасности.
Как обнаружить атаку
Для обнаружения атаки или проявления уязвимости используйте следующие методы:
- Мониторинг логов ядра: Отслеживайте записи в
dmesg,/var/log/kern.logилиjournalctlна наличие ошибок, связанных сsmb2_aead_req_allocилиcifs.
- Сетевой мониторинг: Используйте IDS/IPS для детектирования аномальных SMB-запросов, которые могут приводить к ошибкам в клиенте.
- Аудит конфигурации: Проверьте, какие SMB-шары подключены к системе и используется ли шифрование. Ограничьте доступ к SMB-шарам, если они не критичны.
- Регулярное обновление: Убедитесь, что система получает обновления ядра от дистрибутива.
Команды для проверки логов:
Bash:
dmesg | grep -i "smb\|cifs\|aead"
journalctl -k | grep -i "smb\|cifs"
Если обнаружены повторяющиеся сбои, связанные с SMB, рекомендуется изолировать систему и провести расследование.
Как проверить свою версию
Для проверки версии ядра и наличия патча используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Затем сверьте версию с официальными релизными заметками вашего дистрибутива Linux. Патч
61f28012e5650c619223decdb7970e0d3162e949 был применён в стабильных ветках в июле 2026 года. Если ваша версия ядра старше этой даты и не содержит патча, система уязвима.Для проверки наличия конкретного коммита в ядре (если вы используете исходники):
Bash:
git log --oneline | grep 61f28012e5650c619223decdb7970e0d3162e949
Если коммит отсутствует, рекомендуется обновить ядро до последней стабильной версии.
Исправление
Единственный надежный способ устранения уязвимости — обновление ядра Linux до версии, содержащей патч.
- Обновление ядра: Используйте пакетный менеджер вашего дистрибутива для обновления ядра.
- Debian/Ubuntu:
sudo apt update && sudo apt upgrade linux-image-$(uname -r)
- RHEL/CentOS:
sudo dnf update kernel
- Arch:
sudo pacman -Syu linux
- Debian/Ubuntu:
- Перезагрузка: После обновления ядра требуется перезагрузка системы для применения изменений.
- Проверка: После перезагрузки убедитесь, что новая версия ядра активна и содержит патч.
Не используйте cherry-pick отдельных коммитов, если только вы не являетесь разработчиком ядра. Дистрибутивы предоставляют интегрированные обновления, которые протестированы в связке с другими изменениями.
Временные меры защиты
Пока обновление ядра не применено, можно использовать следующие временные меры:
- Отключение SMB-клиента: Если SMB-шары не критичны, отключите подключение к ним. Это можно сделать через
umountили отключение соответствующих сервисов.
- Ограничение доступа: Настройте firewall, чтобы блокировать исходящие SMB-запросы (порт 445) к недоверенным серверам.
- Изоляция: Изолируйте системы, которые активно используют SMB, от остальной сети, если они не могут быть обновлены немедленно.
- Мониторинг: Усиленный мониторинг логов ядра на предмет сбоев, связанных с SMB.
Эти меры не устраняют уязвимость, но снижают вероятность ее эксплуатации.
Как проверить устранение уязвимости
Для проверки успешного применения исправления:
- Проверка версии: Убедитесь, что активная версия ядра содержит патч.
Bash:uname -r
Сверьте версию с релизными заметками дистрибутива.
- Проверка коммита (для исходников):
Bash:git log --oneline | grep 61f28012e5650c619223decdb7970e0d3162e949 - Функциональное тестирование: Проведите тестовые операции с SMB-шарами, чтобы убедиться, что они работают корректно и не вызывают сбоев.
- Мониторинг: Наблюдайте за логами ядра в течение нескольких дней после обновления, чтобы убедиться в отсутствии новых сбоев.
Если система стабильна и версия ядра актуальна, уязвимость считается устраненной.
Вывод
CVE-2026-64598 представляет собой серьезную уязвимость в SMB-клиенте Linux Kernel, способную привести к падению ядра. Хотя вероятность активной эксплуатации в настоящее время низкая (EPSS 0,28%), риск Denial of Service остается значительным для систем, использующих SMB с шифрованием.
Администраторам рекомендуется:
- Немедленно обновить ядро до последней стабильной версии.
- Проверить, какие системы используют SMB-клиент и ограничить их доступ, если обновление невозможно.
- Усилить мониторинг логов ядра на предмет сбоев, связанных с SMB.
Своевременное обновление и соблюдение принципа минимальных привилегий помогут снизить риск эксплуатации этой и подобных уязвимостей.
Официальные источники
- NVD — CVE-2026-64598
- FIRST EPSS — CVE-2026-64598
- smb/client: Fix error code in smb2_aead_req_alloc() - kernel/git/stable/linux.git - Linux kernel stable tree
- smb/client: Fix error code in smb2_aead_req_alloc() - kernel/git/stable/linux.git - Linux kernel stable tree
- smb/client: Fix error code in smb2_aead_req_alloc() - kernel/git/stable/linux.git - Linux kernel stable tree
- smb/client: Fix error code in smb2_aead_req_alloc() - kernel/git/stable/linux.git - Linux kernel stable tree
- smb/client: Fix error code in smb2_aead_req_alloc() - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 11.08.2026 — Опубликована первая версия материала.
- 27.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
