CVE-2026-97524 в Linux Kernel: рекурсивный сбой mptcp при сбросе subflow и последствия для стабильности

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. Конкретные версии дистрибутивов и точный диапазон версий ядра не указаны в предоставленных источниках.


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


Ошибка возникает в пути получения данных 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:


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


Основное исправление — обновление ядра Linux до версии, содержащей commit 2b0f561f21b27c40c91ea4975268a06092bd7e9c или более позднюю стабильную версию.

  • Обновить ядро через пакетный менеджер дистрибутива.
  • Проверить наличие исправления в стабильном дереве ядра.
  • Перезагрузить систему после обновления.

Если обновление не возможно немедленно, можно рассмотреть временные меры.

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


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

  • Отключить использование mptcp на критических соединениях, если это допустимо архитектурно.
  • Ограничить количество активных subflow в mptcp-соединениях.
  • Мониторинг сетевых событий для раннего обнаружения сбоев.

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

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


После обновления ядра необходимо:

  1. Проверить версию ядра:

    Bash:
    uname -r
  2. Убедиться, что версия содержит исправление CVE-2026-97524.
  3. Провести функциональные тесты mptcp-соединений.
  4. Проверить логи ядра на отсутствие сообщений о DSS corruption и предупреждениях.

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

Вывод​


CVE-2026-97524 — логическая ошибка в модуле mptcp ядра Linux, приводящая к рекурсии и повторному захвату блокировки при редких ошибках. Исправление добавляет флаг resetting и явную очистку RX-очереди.

Для администратора главное — обновить ядро до стабильной версии с исправлением. Если mptcp не используется, риск минимален. Если используется, необходимо проверить версию и применить обновление.

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


  1. NVD — CVE-2026-97524
  2. FIRST EPSS — CVE-2026-97524
  3. mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
  4. mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
  5. mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
  6. mptcp: avoid unneeded actions on subflow reset - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

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


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