CVE: CVE-2026-97524
Продукт: Linux Kernel
Дата публикации: 25.09.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: 0,60%; процентиль 46,74%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Уязвимость CVE-2026-97524 затрагивает модуль mptcp в ядре Linux. При редких ошибках в пути получения данных mptcp_data_ready() может вызываться рекурсивно через смену состояния, что приводит к повторному захвату data lock и нарушению нормальной работы соединения. Исправление добавляет флаг resetting, прерывает рекурсию и очищает RX-очередь при сбросе subflow.
Основные характеристики
Риск связан с внутренним состоянием сетевого стека Linux и проявляется в виде нестабильного поведения mptcp под редкими условиями ошибки. Это не классическая уязвимость с прямым доступом к памяти, а логический дефект управления потоком данных и блокировок.
- Тип риска: логическая ошибка в обработке ошибок мультитранспортного TCP (mptcp), приводящая к рекурсии и повторному захвату блокировки.
- CVSS 3.1:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H— оценка HIGH, основной эффект — потеря доступности (A:H).
- Вектор атаки: удалённый, без необходимости авторизации или взаимодействия с пользователем.
- Факт эксплуатации: в предоставленных источниках нет подтверждённого публичного эксплойта или реального инцидента.
- EPSS: 0,60% (процентиль 46,74%) — вероятность эксплуатации в ближайшие 90 дней умеренная, но не критичная.
Какие продукты и версии затронуты
Затронут модуль mptcp в ядре Linux. Конкретные версии дистрибутивов и точный диапазон версий ядра не указаны в предоставленных источниках.
- Компонент:
net/mptcp/— подсистема мультитранспортного TCP в ядре Linux.
- Файлы, изменённые исправлением:
net/mptcp/protocol.c
net/mptcp/protocol.h
net/mptcp/subflow.c
- Связанные commits:
Причина уязвимости
Ошибка возникает в пути получения данных mptcp при редких ошибках. При смене состояния subflow функция
mptcp_data_ready() может вызываться рекурсивно.В момент, когда subflow уже находится в процессе сброса, рекурсивный вызов пытается снова захватить data lock. Это нарушает инвариант блокировки и приводит к некорректной обработке очереди данных.
Исправление добавляет новый флаг
resetting в структуру mptcp_subflow_context. Этот флаг устанавливается в функции mptcp_subflow_reset() и проверяется в subflow_state_change(), чтобы прервать дальнейшую обработку RX-очереди, если subflow уже сбрасывается.Дополнительно при сбросе subflow выполняется явная очистка RX-очереди через
__skb_queue_purge(). Это предотвращает повторную обработку пакетов, которые должны быть отброшены.В функции
__mptcp_move_skbs_from_subflow() порядок операций изменён: сейчас sk_eat_skb(ssk, skb) вызывается до проверки условия fin и вызова mptcp_dss_corruption(). Это гарантирует, что текущий peeked skb будет потреблён до того, как произойдёт сброс и освобождение памяти.Как работает атака
Атака возможна через удалённое воздействие на mptcp-соединение. Условие — редкая комбинация ошибок при обработке DSS (Data Segment Sequence) или FIN-пакетов в пути получения.
При смене состояния subflow под определёнными ошибками вызывается
mptcp_data_ready(). Если subflow уже находится в процессе сброса, рекурсивный вызов пытается снова захватить data lock. Это приводит к циклу и потенциальному зависанию или падению процесса.Механика не требует специальных прав и работает на уровне ядра. Эффект — потеря доступности сетевого соединения или всего процесса, использующего mptcp.
Исправление устраняет рекурсию через проверку флага
resetting и явную очистку RX-очереди при сбросе.Условия успешной эксплуатации
Для успешной эксплуатации необходимы следующие условия:
- Система использует модуль mptcp в ядре Linux.
- Активно работает mptcp-соединение с несколькими subflow.
- Происходит редкая комбинация ошибок при обработке DSS или FIN-пакетов в пути получения.
- Состояние subflow переходит в режим сброса в момент, когда
mptcp_data_ready()уже вызвана рекурсивно.
Возможный сценарий атаки
Атакующий направляет специально сформированные пакеты на mptcp-соединение жертвы. Пакеты вызывают редкую ошибку при обработке DSS или FIN.
При смене состояния subflow ядро пытается обработать очередь данных. Рекурсивный вызов
mptcp_data_ready() происходит в момент сброса subflow. Повторный захват data lock приводит к циклу и потере доступности.После исправления флаг
resetting устанавливается при сбросе, а subflow_state_change() сразу возвращает управление без дальнейшей обработки RX-очереди. Очередь очищается явно, что предотвращает повторную обработку.Есть ли публичный эксплойт
В предоставленных источниках нет подтверждённого публичного эксплойта или PoC.
Исправление опубликовано в стабильном дереве ядра Linux. Коммиты доступны для просмотра и применения.
Отсутствие сведений о публичном эксплойте не означает, что он отсутствует. Однако в текущих данных нет подтверждённого факта его существования.
Признаки эксплуатации
Специфичные IOC для этой уязвимости не предоставлены в источниках.
Общие точки контроля (неспецифичные):
- Внезапное завершение mptcp-соединений с кодами ошибок DSS corruption.
- Появление сообщений
DEBUG_NET_WARN_ON_ONCEв логах ядра при обработке mptcp.
- Рост количества сбросов subflow (
mptcp_subflow_reset) в статистике сетевых событий.
- Зависания или падение процессов, использующих мультитранспортное TCP.
Как обнаружить атаку
Для обнаружения атаки или сбоев, связанных с этой уязвимостью, рекомендуется:
- Мониторинг логов ядра на сообщения о DSS corruption и предупреждениях
DEBUG_NET_WARN_ON_ONCE.
- Анализ сетевых событий для выявления аномального количества сбросов subflow в mptcp.
- Проверка версий ядра Linux на наличие исправления CVE-2026-97524.
Команды проверки:
Bash:
uname -r
uname -a
cat /proc/version
Результаты показывают версию ядра. Сравнение с известными исправленными версиями позволяет определить, требуется ли обновление.
Как проверить свою версию
Проверка версии ядра Linux выполняется стандартными командами:
Bash:
uname -r
uname -a
cat /proc/version
Эти команды показывают текущую версию ядра и информацию о сборке. Для точного определения наличия исправления необходимо сверить версию с списком обновлений дистрибутива или стабильным деревом ядра.
Исправление входит в commits:
- 2b0f561f21b27c40c91ea4975268a06092bd7e9c
- 4b7abdcb5ba832fafab679f0d998af39cbc99307
- b2dbcc1ed48b5ac070a41db4a52aade6823c4df0
- ce7e4ede01ed3e47a48c0f1ce1d87bf4864bee9f
Исправление
Основное исправление — обновление ядра Linux до версии, содержащей commit 2b0f561f21b27c40c91ea4975268a06092bd7e9c или более позднюю стабильную версию.
- Обновить ядро через пакетный менеджер дистрибутива.
- Проверить наличие исправления в стабильном дереве ядра.
- Перезагрузить систему после обновления.
Если обновление не возможно немедленно, можно рассмотреть временные меры.
Временные меры защиты
Временные меры защиты:
- Отключить использование mptcp на критических соединениях, если это допустимо архитектурно.
- Ограничить количество активных subflow в mptcp-соединениях.
- Мониторинг сетевых событий для раннего обнаружения сбоев.
Эти меры снижают вероятность проявления уязвимости, но не заменяют обновление ядра.
Как проверить устранение уязвимости
После обновления ядра необходимо:
- Проверить версию ядра:
Bash:uname -r - Убедиться, что версия содержит исправление CVE-2026-97524.
- Провести функциональные тесты mptcp-соединений.
- Проверить логи ядра на отсутствие сообщений о DSS corruption и предупреждениях.
Если используется дистрибутив, проверить наличие пакета с обновлённым ядром через пакетный менеджер.
Вывод
CVE-2026-97524 — логическая ошибка в модуле mptcp ядра Linux, приводящая к рекурсии и повторному захвату блокировки при редких ошибках. Исправление добавляет флаг resetting и явную очистку RX-очереди.
Для администратора главное — обновить ядро до стабильной версии с исправлением. Если mptcp не используется, риск минимален. Если используется, необходимо проверить версию и применить обновление.
Официальные источники
- NVD — CVE-2026-97524
- FIRST EPSS — CVE-2026-97524
- mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
- mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
- mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
- mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 28.09.2026 — Опубликована первая версия материала.
