CVE: CVE-2026-74688
Продукт: Linux Kernel
Дата публикации: 22.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,50%; процентиль 40,64%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В реализации протокола SCTP в ядре Linux обнаружен сбой типа use-after-free. Ошибка возникает при удалении транспорта, если в очереди контроля остаются пакеты с устаревшими указателями.
При последующей отправке этих пакетов ядро обращается к освобожденной памяти. Это может привести к падению системы или выполнению кода. Ниже описаны механика сбоя, условия эксплуатации и способы проверки исправления.
Основные характеристики
Уязвимость затрагивает сетевой стек ядра Linux и позволяет нарушителю вызвать сбой системы или выполнить код через специально сформированный трафик SCTP.
- Тип ошибки: Use-after-free. Сбой возникает при обращении к памяти, которая была освобождена ранее.
- 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. Оценивается как критическая из-за удаленного доступа без аутентификации.
- Эксплуатация: Публичные данные о массовой эксплуатации отсутствуют, но техническое описание и патч доступны.
- EPSS: 0,5% (процентиль 40,6%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но риск остается высоким из-за критичности.
Какие продукты и версии затронуты
Уязвимость затрагивает реализации протокола SCTP в ядре Linux. Точные номера версий, в которых присутствует ошибка, не указаны в предоставленных источниках, однако патч был применен в ветках stable.
- Компонент:
net/sctp/associola.c.
- Ветки ядра: Патч был принят в upstream (commit
c9158ceaf27780ef64534ad72f44ffde3f8ccc49) и портирован в ветки stable (commits18d704bdd809377dfd81a3c2f42426763b5da227,4d6b9cac6df5e0cfef1a66b3edd7aebdb9e4b7e7и другие).
- Платформы: Все системы, использующие ядро Linux с включенной поддержкой SCTP.
Причина уязвимости
Причина ошибки заключается в некорректном управлении жизненным циклом указателей на транспортные объекты в модуле SCTP.
Функция
sctp_make_heartbeat_ack() кэширует указатель на транспорт в структуре chunk->transport, не увеличивая счетчик ссылок. Если включен параметр src_out_of_asoc_ok, пакет HEARTBEAT ACK может остаться в очереди control_chunk_list вместо немедленной отправки.При удалении транспорта функция
sctp_assoc_rm_peer() освобождает объект и планирует его удаление через RCU. Однако она очищает кэшированные указатели только в out_chunk_list, игнорируя control_chunk_list. В результате в очереди контроля остается «висящий» указатель на освобожденную память.Как работает атака
Атакующий может инициировать сценарий, при котором в очереди контроля SCTP накапливается пакет HEARTBEAT ACK, содержащий указатель на транспорт.
Затем атакующий вызывает удаление этого транспорта (например, через ASCONF). Ядро освобождает память транспорта, но не обнуляет указатель в застрявшем пакете.
Когда приходит ASCONF_ACK, снимающий блокировку отправки, ядро пытается отправить застрявший пакет. При этом оно обращается по устаревшему указателю, что приводит к use-after-free. Это может вызвать сбой ядра или, при удачном выравнивании памяти, выполнение произвольного кода.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнить следующие условия:
- Наличие активной сессии SCTP между атакующим и жертвой.
- Возможность отправки управляющих сообщений SCTP (ASCONF, HEARTBEAT) для управления состоянием транспорта.
- Включение параметра
src_out_of_asoc_okв конфигурации ядра или приложения, что позволяет пакетам оставаться в очереди контроля.
- Точное время удаления транспорта, совпадающее с моментом, когда пакет все еще находится в
control_chunk_list.
Возможный сценарий атаки
Сценарий атаки начинается с установления SCTP-соединения. Атакующий отправляет HEARTBEAT, на который генерируется ACK, но из-за особенностей конфигурации он остается в очереди контроля.
Далее атакующий отправляет ASCONF для удаления одного из адресов транспорта. Ядро освобождает объект транспорта, но не очищает указатель в застрявшем ACK.
После этого атакующий отправляет ASCONF_ACK. Ядро снимает блокировку и пытается отправить застрявший ACK, обращаясь к освобожденной памяти. Это приводит к сбою или выполнению кода.
Есть ли публичный эксплойт
Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют. Однако техническое описание уязвимости и патч доступны в репозитории ядра Linux.
- PoC: Публичный proof-of-concept код в предоставленных источниках не указан.
- Эксплуатация: Нет подтверждений массового использования.
- Патч: Исправление опубликовано в upstream и stable-ветках ядра.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости не раскрыты в официальных источниках. Ниже приведены общие, неспецифичные признаки, которые могут указывать на атакующую активность:
- Аномальные сбои ядра (kernel panics) или ошибки памяти (use-after-free) в логах, связанные с модулем SCTP.
- Необычные паттерны трафика SCTP, включая частые ASCONF и HEARTBEAT сообщения.
- Запросы к удалению адресов транспорта в SCTP-сессиях, которые не соответствуют легитимной конфигурации.
Как обнаружить атаку
Для обнаружения атаки можно использовать следующие методы:
- Мониторинг логов ядра на ошибки памяти, связанные с
net/sctp.
- Анализ сетевого трафика SCTP на предмет аномальных последовательностей ASCONF и HEARTBEAT.
- Проверка конфигурации ядра на наличие параметра
src_out_of_asoc_okи его влияние на поведение очереди контроля.
- Использование инструментов для анализа памяти (например, KASAN) в тестовых средах для выявления use-after-free.
Как проверить свою версию
Для проверки версии ядра и наличия патча используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните версию ядра с версиями, в которые был применен патч. Точные номера версий, в которых присутствует уязвимость, не указаны в источниках, поэтому рекомендуется сверяться с официальными релизными заметками дистрибутива.
Исправление
Основной способ устранения уязвимости — обновление ядра Linux до версии, содержащей патч.
- Upstream: Commit
c9158ceaf27780ef64534ad72f44ffde3f8ccc49.
- Stable: Commits
18d704bdd809377dfd81a3c2f42426763b5da227,4d6b9cac6df5e0cfef1a66b3edd7aebdb9e4b7e7,6160e756db81d6cb63e3e2952efcf6c5134be385,8de65194a04d2552cd39b6c67d942d490f22d174,936658ec41c28c397ef390140e02d4c91ade92f0,dbb3f418a8665ffb0514e1a9520ab6a1c5d4d886,fad4766a74220fe579c6fcaa10ba01c23529814f.
Обновите ядро через пакетный менеджер дистрибутива или соберите его из исходников с включенным патчем.
Временные меры защиты
Пока обновление не установлено, можно рассмотреть следующие временные меры:
- Отключение поддержки SCTP в ядре, если это допустимо для рабочих нагрузок.
- Ограничение доступа к портам SCTP на уровне файрвола, чтобы предотвратить установление сессий с недоверенными источниками.
- Мониторинг сетевого трафика на предмет аномальной активности SCTP.
- Использование сетевых экранов для фильтрации подозрительных ASCONF и HEARTBEAT сообщений.
Как проверить устранение уязвимости
Для проверки, что уязвимость устранена, выполните следующие шаги:
- Убедитесь, что версия ядра содержит патч (см. раздел «Version Check»).
- Проверьте, что в исходном коде
net/sctp/associola.cприсутствует код, обнуляющийchunk->transportвcontrol_chunk_listпри удалении транспорта.
- Проведите функциональное тестирование SCTP-соединений, чтобы убедиться в отсутствии сбоев.
- Используйте инструменты для анализа памяти (например, KASAN) в тестовой среде для подтверждения отсутствия use-after-free.
Вывод
CVE-2026-74688 представляет собой критическую уязвимость в реализации SCTP в ядре Linux, ведущую к use-after-free. Хотя публичные данные о массовой эксплуатации отсутствуют, риск остается высоким из-за возможности удаленного выполнения кода. Рекомендуется срочно обновить ядро до версии, содержащей патч, и применить временные меры защиты до завершения обновления.
Официальные источники
- NVD — CVE-2026-74688
- FIRST EPSS — CVE-2026-74688
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: clear control chunk transport if it is being removed - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 27.08.2026 — Опубликована первая версия материала.
