CVE-2026-74586 в Linux Kernel: use-after-free в SCTP, уязвимые версии и защита

CVE: CVE-2026-74586
Продукт: Linux Kernel
Дата публикации: 22.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,50%; процентиль 40,64%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В ядре Linux обнаружена уязвимость use-after-free в модуле SCTP, позволяющая удалённому атакующему вызвать чтение освобождённой памяти. Проблема возникает при обработке ASCONF-сообщений и может привести к отказу в обслуживании или потенциальному повышению привилегий. Статья разбирает механику бага, условия эксплуатации и способы проверки исправления.

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


Уязвимость представляет собой чтение освобождённой памяти (use-after-free) в сетевом стеке Linux. Атакующий может инициировать её удалённо, не имея учётных данных, что делает риск высоким для систем, использующих SCTP.

  • Тип ошибки: Use-after-free. Ядро обращается к памяти объекта sctp_transport после его освобождения.
  • CVSS 3.1: 9.8 (CRITICAL). Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Высокая оценка отражает сетевой доступ и отсутствие необходимости в аутентификации.
  • Эксплуатация: Подтверждено воспроизведение бага с помощью KASAN. Публичный PoC существует, но массовая эксплуатация в реальных атаках не зафиксирована.
  • EPSS: 0,50% (процентиль 40,64%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но не нулевая.
  • CISA KEV: Уязвимость не включена в каталог Known Exploited Vulnerabilities.

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


Уязвимость затрагивает ядра Linux, содержащие код обработки SCTP, введённый в коммите 6af29ccc223b ("sctp: Bundle HEAERTBEAT into ASCONF_ACK").

  • Версии ядра: Все версии, содержащие указанный коммит и не содержащие исправление beb33f8ee1ca83acddb2a5ae80f3d22ec550b4c3.
  • Модули: Подсистема SCTP (net/sctp/associola.c, net/sctp/outqueue.c).
  • Дистрибутивы: Конкретные версии пакетов для дистрибутивов (Debian, Ubuntu и др.) не указаны в предоставленных источниках. Рекомендуется проверять обновления в репозиториях конкретного дистрибутива.

Для определения текущей версии ядра используйте команды из раздела «Проверка версии».

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


Причина бага кроется в некорректном управлении указателем asoc->new_transport в функции sctp_assoc_rm_peer().

Когда удалённый пир отправляет ASCONF-сообщение, ядро добавляет новый транспорт и сохраняет его указатель в asoc->new_transport. Если в том же сообщении содержится параметр wildcard DEL-IP, ядро удаляет этот транспорт через sctp_assoc_del_nonprimary_peers(). Однако функция удаления не обнуляет asoc->new_transport, оставляя висячий указатель на освобождённую память.

Позднее, при обработке ACK, функция sctp_outq_select_transport() пытается прочитать состояние этого транспорта, что приводит к use-after-free. Исправление добавляет проверку и обнуление указателя при удалении пира.

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


Атакующий использует установленное SCTP-соединение для отправки специально сформированного ASCONF-сообщения. В этом сообщении он сначала добавляет новый транспорт, а затем удаляет его с помощью wildcard DEL-IP параметра.

Ядро обрабатывает параметры последовательно. После добавления транспорта указатель сохраняется в asoc->new_transport. При удалении транспорта память освобождается, но указатель не сбрасывается. Когда ядро пытается отправить HEARTBEAT или обработать ACK, оно обращается к этому висячему указателю.

Чтение освобождённой памяти может привести к:

  • Сбою ядра (kernel panic) из-за невалидного доступа.
  • Чтению случайных данных из памяти, что потенциально позволяет атакующему извлечь чувствительную информацию.
  • В худшем случае — к исполнению кода, если атакующий сможет контролировать содержимое освобождённой области.

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


Для успешной эксплуатации уязвимости атакующему необходимо:

  • Доступ к сети: Возможность отправлять SCTP-пакеты на целевой хост.
  • Установленное соединение: Наличие активного SCTP-ассоциации с целевой системой.
  • Аутентификация: В описании упоминается «authenticated ASCONF», что подразумевает необходимость прохождения проверки подлинности SCTP (SCTP Authentication). Без этого параметра атакующий может не иметь доступа к отправке ASCONF.
  • Специфичная последовательность: Точная последовательность параметров в ASCONF-сообщении, приводящая к освобождению памяти и последующему обращению к ней.

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


  1. Атакующий устанавливает SCTP-соединение с целевым хостом.
  2. Он отправляет ASCONF-сообщение, содержащее параметр добавления нового транспорта (ADD-IP) и параметр удаления (DEL-IP) с wildcard.
  3. Ядро добавляет транспорт, сохраняет указатель в asoc->new_transport, затем удаляет транспорт и освобождает память.
  4. Указатель asoc->new_transport остаётся валидным по значению, но указывает на освобождённую память.
  5. При обработке последующих пакетов (например, ACK) ядро обращается к этому указателю, вызывая use-after-free.
  6. Результат: сбой ядра или утечка данных.

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


Существует публичный PoC (Proof of Concept), описанный в коммите исправления. Автор уязвимости подтвердил, что PoC вызывает KASAN-отчёт в 2 из 2 запусков на ядре с включённым KASAN.

  • PoC: Доступен в виде кода, воспроизводящего сценарий атаки.
  • Эксплуатация: Массовая эксплуатация в реальных атаках не зафиксирована. Уязвимость не включена в CISA KEV.
  • Риск: Несмотря на отсутствие подтверждённых атак, наличие PoC и высокая CVSS-оценка делают уязвимость приоритетной для патчинга.

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


Специфичные IOC (Indicators of Compromise) для этой уязвимости не опубликованы. Однако можно отслеживать следующие неспецифичные признаки:

  • KASAN-отчёты: В логах ядра (dmesg, journalctl) могут появляться сообщения BUG: KASAN: slab-use-after-free in sctp_outq_select_transport.
  • Сбои ядра: Неожиданные перезагрузки или panics, связанные с модулем SCTP.
  • Сетевая активность: Аномальные ASCONF-сообщения с последовательностью ADD-IP и DEL-IP в одном пакете.

Эти признаки не являются уникальными для CVE-2026-74586 и могут возникать по другим причинам.

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


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

  1. Мониторинг логов ядра: Настройте сбор и анализ dmesg и journalctl на наличие KASAN-отчётов, связанных с sctp_outq_select_transport или sctp.
  2. Сетевой анализ: Используйте IDS/IPS для отслеживания аномальных SCTP-пакетов, особенно ASCONF с параметрами ADD-IP и DEL-IP.
  3. Мониторинг стабильности: Отслеживайте частые сбои или перезагрузки хостов, использующих SCTP.
  4. Аудит конфигурации: Проверьте, включена ли аутентификация SCTP на критических хостах.

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


Для проверки текущей версии ядра Linux используйте следующие команды:

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

Сравните полученную версию с информацией от вашего дистрибутива о том, какие версии содержат исправление beb33f8ee1ca83acddb2a5ae80f3d22ec550b4c3. Если вы используете модульное ядро, убедитесь, что модуль SCTP обновлён.

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


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

  • Официальный патч: Коммит beb33f8ee1ca83acddb2a5ae80f3d22ec550b4c3 ("sctp: clear new_transport when removing a peer").
  • Обновление дистрибутива: Используйте штатные механизмы обновления вашего дистрибутива (apt, yum, dnf и т.д.).
  • Пересборка ядра: Если вы собираете ядро самостоятельно, убедитесь, что в исходниках присутствует указанный коммит.

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

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


Пока обновление не установлено, можно применить следующие временные меры:

  • Отключение SCTP: Если ваш сервис не использует SCTP, отключите модуль sctp в ядре или через sysctl.
  • Ограничение доступа: Ограничьте доступ к портам SCTP (99) на уровне файрвола, разрешив соединения только от доверенных хостов.
  • Включение аутентификации SCTP: Убедитесь, что SCTP Authentication включён, чтобы атакующий не мог отправлять ASCONF-сообщения без проверки подлинности.

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

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


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

  1. Проверка версии: Убедитесь, что версия ядра соответствует рекомендациям дистрибутива.
  2. Проверка коммита: Если вы используете исходники, проверьте наличие коммита beb33f8ee1ca83acddb2a5ae80f3d22ec550b4c3 в истории git.
  3. Функциональное тестирование: Проведите тестирование SCTP-соединений, чтобы убедиться, что они работают корректно.
  4. Мониторинг: Продолжайте отслеживать логи на наличие KASAN-отчётов, связанных с SCTP.

Вывод​


CVE-2026-74586 — критическая уязвимость в модуле SCTP ядра Linux, позволяющая удалённому атакующему вызвать use-after-free. Несмотря на отсутствие подтверждённых массовых атак, наличие PoC и высокая CVSS-оценка делают обновление ядра приоритетной задачей. Администраторы должны проверить свои системы, применить патч и, при необходимости, временно ограничить доступ к SCTP.

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


  1. NVD — CVE-2026-74586
  2. FIRST EPSS — CVE-2026-74586
  3. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree
  4. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree
  5. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree
  6. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree
  7. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree
  8. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree
  9. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree
  10. sctp: clear new_transport when removing a peer - kernel/git/stable/linux.git - Linux kernel stable tree

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


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