CVE: CVE-2026-97523
Продукт: Linux Kernel
Дата публикации: 25.09.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Уязвимость CVE-2026-97523 связана с гонкой состояний в модуле MPTCP внутри ядра Linux. При определённой последовательности закрытия subflow sockets и передачи данных поле mss_now может быть обнулено, после чего функция tcp_push получает нулевой делитель. Это приводит к некорректной обработке и потенциальному сбою работы сети или ядра на затронутых системах.
Основные характеристики
Риск заключается в нарушении инварианта при передаче данных через MPTCP: код может обратиться к нулевому значению mss_now как к делителю. Это не информационная утечка и не обход авторизации, а сбой логической обработки внутри сетевого стека.
- Тип ошибки: race condition между планировщиком MPTCP и изменением состояния subflow sockets
- CVSS 3.1:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, оценка 7.5, severity HIGH
- Вектор атаки: удалённый, без необходимости привилегий и взаимодействия пользователя; цель — отказ от службы или нестабильность ядра
- Эксплуатация в реальных атаках: не подтверждена доступными источниками
- EPSS: нет данных
Какие продукты и версии затронуты
Затронут Linux Kernel с включённой подсистемой MPTCP. Конкретные диапазоны версий ядра, которые содержат уязвимый код, в предоставленных источниках не раскрыты.
- Ядро Linux: версия не подтверждена доступными официальными данными
- Подсистема: net/mptcp/protocol.c
- Функция: mptcp_push_release
- Влияние: системы с активным MPTCP и нагрузкой на передачу данных через subflow sockets
Причина уязвимости
В функции mptcp_push_release вызывается tcp_push с параметром info->mss_now. Если между выбором subflow socket планировщиком и фактической передачей данных состояние сокета меняется, передача может завершиться ошибкой.
При последующем освобождении сокета значение mss_now в структуре mptcp_sendmsg_info может быть обнулено. Код не проверял этот случай и передавал ноль в tcp_push, где он использовался как делитель. Это создаёт условие для деления на ноль внутри сетевого стека.
Исправление добавляет явную проверку if (info->mss_now) перед вызовом tcp_push. Если поле равно нулю, передача не выполняется, а сокет освобождается напрямую.
Как работает атака
Атака строится на создании гонки состояний внутри MPTCP. Планировщик выбирает subflow socket для отправки данных. В этот момент другой поток может изменить состояние этого сокета или закрыть его.
Если передача завершается ошибкой, структура mptcp_sendmsg_info остаётся в системе с обнулённым mss_now. Позднее вызов mptcp_push_release передаёт это значение в tcp_push. Внутри tcp_push нулевой делитель приводит к некорректной арифметической операции.
Результат зависит от реализации и состояния ядра: может произойти сбой обработки пакета, зависание сетевого стека или отказ от службы. Удалённый злоумышленник может попытаться вызвать гонку через управляемый трафик к MPTCP-подключению.
Условия успешной эксплуатации
Для успешной эксплуатации необходимы следующие условия:
- Включена подсистема MPTCP в ядре Linux
- Система обрабатывает сетевой трафик через MPTCP с использованием subflow sockets
- Достигается гонка между планировщиком и изменением состояния сокета
- Поле mss_now обнуляется до вызова tcp_push
- Нет внешних ограничений, предотвращающих передачу данных в момент смены состояния
Возможный сценарий атаки
Злоумышленник направляет сетевой трафик на хост с активным MPTCP. Трафик вызывает создание или закрытие subflow sockets в определённой последовательности.
Планировщик MPTCP выбирает socket для отправки данных, но до завершения передачи socket закрывается или меняет состояние. Передача завершается ошибкой, mss_now становится нулём.
При освобождении сокета вызывается mptcp_push_release. Функция передаёт info->mss_now в tcp_push без проверки. Нулевой делитель вызывает некорректную обработку внутри стека и может привести к сбою ядра или отказу от службы.
Есть ли публичный эксплойт
Доступные источники содержат только описание уязвимости, патч и ссылки на коммиты исправления в стабильном дереве Linux kernel.
- PoC: не подтверждён доступными источниками
- Техническое описание: доступно через описание CVE и diff патча
- Подтверждённая эксплуатация: не подтверждена доступными источниками
- Готовый рабочий payload: не раскрыт в предоставленных данных
Признаки эксплуатации
Специфичных индикаторов компрометации для этой уязвимости в предоставленных источниках нет. Ниже приведены общие точки контроля, которые можно использовать при подозрении на сбой MPTCP или аномальную нагрузку.
- Внезапное увеличение количества сетевых ошибок в подсистеме MPTCP
- Рост числа обрывов соединений через subflow sockets
- Аномальные значения mss_now в отладочных логах ядра, если доступны
- Повторяющиеся сбои сетевого стека после закрытия MPTCP-соединений
- Повышенная нагрузка на CPU в контексте обработки сетевых пакетов
Как обнаружить атаку
Для обнаружения аномалий можно использовать мониторинг состояния MPTCP и сетевых ошибок.
- Проверка активных MPTCP-соединений через утилиты ядра, если они доступны на системе
- Анализ логов ядра на ошибки в подсистеме net/mptcp
- Мониторинг количества закрытых subflow sockets за единицу времени
- Сравнение текущей версии ядра с известными исправлениями MPTCP
- Проверка журналов сетевого стека на аномальные значения параметров передачи
Как проверить свою версию
Для проверки версии ядра Linux используйте следующие команды:
Bash:
uname -r
Bash:
uname -a
Bash:
cat /proc/version
Эти команды показывают текущую версию ядра. Для точного определения наличия исправления CVE-2026-97523 необходимо сопоставить версию с официальными релизами дистрибутива или стабильным деревом Linux kernel.
Если используется пакетное управление, можно проверить наличие патча в списке установленных обновлений:
Bash:
dpkg -l | grep linux-kernel
или
Bash:
rpm -qa | grep kernel
Конкретные имена пакетов зависят от дистрибутива.
Исправление
Исправление CVE-2026-97523 реализовано в коммитах Linux kernel stable tree.
- mptcp: close race between scheduler and state change
- mptcp: close race between scheduler and state change
- mptcp: close race between scheduler and state change
- mptcp: close race between scheduler and state change
Рекомендуется обновить ядро до версии, содержащей эти исправления. Для дистрибутивов Linux необходимо установить пакет ядра с патчем от поставщика.
Если обновление не возможно немедленно, можно временно отключить MPTCP или ограничить его использование на критических системах.
Временные меры защиты
Пока обновление ядра не применено, можно снизить вероятность срыва гонки состояний:
- Отключить подсистему MPTCP через модуль ядра, если он загружен динамически
- Ограничить использование MPTCP на критических сетевых интерфейсах
- Уменьшить нагрузку на MPTCP-соединения во время обновления
- Мониторинг сетевых ошибок и готовность к перезапуску сетевого стека
- Изоляция систем с активным MPTCP от внешнего трафика, если это допустимо бизнес-процессами
Как проверить устранение уязвимости
После обновления ядра необходимо убедиться, что патч применён.
Bash:
grep -r "mptcp: close race between scheduler" /proc/version
или проверить версию ядра:
Bash:
uname -r
Для проверки наличия исправления в исходном коде ядра можно выполнить:
Bash:
grep -A 5 "if (info->mss_now)" /lib/modules/$(uname -r)/build/net/mptcp/protocol.c
Если строка if (info->mss_now) присутствует перед вызовом tcp_push, патч применён.
Также рекомендуется проверить логи ядра на отсутствие новых ошибок в подсистеме MPTCP после обновления.
Вывод
CVE-2026-97523 — это race condition в MPTCP, который приводит к делению на ноль при передаче данных через subflow sockets. Уязвимость затрагивает системы с активным MPTCP и может вызвать отказ от службы или нестабильность ядра.
Исправление добавляет проверку нулевого значения mss_now перед вызовом tcp_push. Администратору необходимо обновить ядро до версии, содержащей патч, или временно ограничить использование MPTCP на критических системах.
Официальные источники
- NVD — CVE-2026-97523
- mptcp: close race between scheduler and state change - kernel/git/stable/linux.git - Linux kernel stable tree
- mptcp: close race between scheduler and state change - kernel/git/stable/linux.git - Linux kernel stable tree
- mptcp: close race between scheduler and state change - kernel/git/stable/linux.git - Linux kernel stable tree
- mptcp: close race between scheduler and state change - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 29.09.2026 — Опубликована первая версия материала.
