CVE-2026-98130 в Linux Kernel: TOCTOU race в SCTP_CMD_TIMER_START и use-after-free

CVE: CVE-2026-98130
Продукт: Linux Kernel
Дата публикации: 25.09.2026
Критичность: HIGH
CVSS: 8.1 (3.1)
EPSS: 0,52%; процентиль 41,47%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В ядре Linux обнаружена гонка TOCTOU в обработчике SCTP_CMD_TIMER_START протокола SCTP. Проверка состояния таймера перед вызовом timer_reduce() может стать невалидной, если таймер истек и отсоединился между операциями. Это приводит к несбалансированному счетчику ссылок на ассоциацию и use-after-free при разборе ассоциации.

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


Ошибка затрагивает подсистему SCTP в ядре Linux и связана с гонкой TOCTOU при управлении таймерами. Уязвимость позволяет нарушить целостность счетчика ссылок на объект ассоциации, что приводит к использованию освобожденной памяти.

  • Тип ошибки: TOCTOU race / use-after-free
  • CVSS 3.1 вектор: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Скорость CVSS: 8.1 (HIGH)
  • Вектор атаки: удаленный, без необходимости привилегий и взаимодействия с пользователем
  • EPSS: 0,52% (процентиль 41,47%)

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


Уязвимость подтверждена в подсистеме SCTP ядра Linux. Пакет доказательств не содержит списка конкретных версий или дистрибутивов.

  • Компонент: net/sctp/sm_sideeffect.c (обработчик SCTP_CMD_TIMER_START)
  • Функция: sctp_cmd_interpreter()
  • Подсистема: SCTP (Stream Control Transmission Protocol)
  • Файл с исправлением: net/sctp/sm_sideeffect.c

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


Обработчик SCTP_CMD_TIMER_START проверяет состояние таймера через timer_pending() перед вызовом timer_reduce(). Между этими операциями таймер может истечь и отсоединиться.

timer_reduce() в этом случае перезапускает таймер, но не берет ассоциационную ссылку, необходимую для нового таймера. Позднее колбэк таймера безоговорочно сбрасывает ассоциационную ссылку, что приводит к несбалансированному счетчику ссылок.

При разборе ассоциации (teardown) освобожденная память может быть использована повторно, что и есть use-after-free. Исправление использует возвращаемое значение timer_reduce() для определения фактического запуска таймера и берет ссылку только при успешном запуске.

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


Атака строится на создании гонки между обработкой команды SCTP_CMD_TIMER_START и истечением/отсоединением таймера.

  • Атакующий отправляет команду SCTP_CMD_TIMER_START в ядро SCTP.
  • Ядро проверяет timer_pending() — таймер еще активен.
  • До вызова timer_reduce() таймер истекает и отсоединяется.
  • timer_reduce() перезапускает таймер без получения ассоциационной ссылки.
  • Колбэк таймера сбрасывает ссылку, которой не было получено при запуске.
  • Счетчик ссылок становится отрицательным или несбалансированным.
  • При разборе ассоциации происходит use-after-free освобожденной памяти.

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

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


  • Доступ к SCTP: система должна иметь активную подсистему SCTP и обрабатывать команды SCTP_CMD_TIMER_START.
  • Удаленный доступ: вектор AV:N указывает на удаленную эксплуатацию без локального доступа.
  • Гонка таймеров: необходимо совпадение временных окон между обработкой команды и истечением таймера.
  • Отсутствие привилегий: PR:N — эксплуатация возможна без специальных прав.
  • Активная ассоциация SCTP: требуется наличие или создание ассоциации, с которой работает таймер.

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


Сценарий предполагает удаленный атакующий, взаимодействующий с сервисом SCTP на целевой системе.

Атакующий отправляет серию команд SCTP_CMD_TIMER_START, создавая условия для гонки. Через задержку или повторные запросы он синхронизирует момент между проверкой timer_pending() и истечением таймера.

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

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

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


Пакет доказательств не содержит подтвержденных публичных эксплойтов, PoC или рабочих payload.

  • Поиск по источникам: ссылки на git.kernel.org содержат только коммиты исправления и диффы кода.
  • Отсутствие метаданных: нет данных о конкретных атаках, PoC или инструментах.
  • Вывод: статус публичной эксплуатации не подтвержден доступными официальными источниками.

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


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

  • Аномальные SCTP-соединения: всплеск команд SCTP_CMD_TIMER_START с аномальной частотой или паттерном.
  • Повышенная нагрузка на таймеры ядра: рост активности в подсистеме net/sctp.
  • Необычные системные вызовы: неожиданные обращения к памяти ядра в контексте SCTP.
  • Сбои ядра: segfault, panic или BUG_ON в подсистеме SCTP.
  • Аномальные сетевые паттерны: повторяющиеся тайм-ауты и перезапуски таймеров.

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


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

  • Логи ядра: поиск сообщений об ошибках в подсистеме SCTP, особенно связанных с таймерами и ассоциациями.
  • Сетевой мониторинг: анализ трафика SCTP на предмет аномальных команд TIMER_START.
  • Проверка версий: сравнение текущей версии ядра с наличием исправления.
  • Анализ счетчиков ссылок: если доступно, мониторинг состояний объектов ядра в подсистеме SCTP.

Команды для проверки лога:

Bash:
grep -i sctp /var/log/kern.log
grep -i "sctp" dmesg | tail -50

Команды для проверки версии:

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

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


Проверка версии ядра Linux.

  • uname -r: показывает краткую версию ядра.
  • uname -a: показывает полную информацию о системе, включая версию ядра.
  • cat /proc/version: альтернативный способ получения версии из файла /proc.

Примеры:

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

Сравнение результата с версиями, содержащими исправление. Пакет доказательств не содержит списка конкретных версий с исправлением.

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


Исправление доступно в коммитах ядра Linux.


Исправление меняет логику проверки состояния таймера: вместо timer_pending() используется возвращаемое значение timer_reduce(). Ссылка на ассоциацию берется только при успешном запуске таймера.

Для применения:

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

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


Поскольку уязвимость связана с гонкой таймеров в SCTP, временные меры ограничены.

  • Отключение SCTP: если подсистема не требуется, можно отключить модуль SCTP ядра.
  • Ограничение доступа к SCTP: закрыть сетевые порты SCTP (обычно 2704/udp и 2704/tcp) для внешних источников.
  • Фильтрация команд: если доступно, ограничить типы обрабатываемых SCTP-команд до минимально необходимого набора.
  • Мониторинг: усиленный мониторинг SCTP-трафика и логов ядра в период ожидания обновления.

Команда для проверки состояния модуля:

Bash:
lsmod | grep sctp

Команда для проверки открытых портов SCTP:

Bash:
ss -ulnp | grep 2704
ss -tlnp | grep 2704

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


После обновления ядра необходимо проверить наличие исправления.

  • Проверка версии: убедитесь, что версия ядра содержит один из указанных коммитов.
  • Git log: если доступно исходное дерево ядра, проверьте наличие коммита 2188569e7e1b0bc3f3b557dc97ab7a02befc11c8.
  • Дистрибуторские пакеты: проверьте через пакетный менеджер наличие обновленного пакета ядра.

Команды:

Bash:
git log --oneline | grep 2188569e7e1b0bc3f3b557dc97ab7a02befc11c8
uname -r

Для дистрибутивов с пакетными обновлениями:

Bash:
dpkg -l | grep linux-kernel
rpm -qa | grep kernel

Вывод​


CVE-2026-98130 — это TOCTOU race в подсистеме SCTP ядра Linux, приводящая к use-after-free через несбалансированный счетчик ссылок на ассоциацию. Уязвимость критична из-за удаленного вектора и отсутствия необходимости привилегий.

Исправление доступно в стабильных ветках ядра. Приоритет — обновление ядра до версии, содержащей коммит 2188569e7e1b0bc3f3b557dc97ab7a02befc11c8 или его stable-версии.

До обновления рекомендуется ограничить доступ к SCTP и усилить мониторинг подсистемы.

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


  1. NVD — CVE-2026-98130
  2. FIRST EPSS — CVE-2026-98130
  3. sctp: fix a TOCTOU race in SCTP_CMD_TIMER_START - kernel/git/stable/linux.git - Linux kernel stable tree
  4. sctp: fix a TOCTOU race in SCTP_CMD_TIMER_START - kernel/git/stable/linux.git - Linux kernel stable tree
  5. sctp: fix a TOCTOU race in SCTP_CMD_TIMER_START - kernel/git/stable/linux.git - Linux kernel stable tree
  6. sctp: fix a TOCTOU race in SCTP_CMD_TIMER_START - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

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


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