CVE: CVE-2026-74588
Продукт: Linux Kernel
Дата публикации: 22.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,50%; процентиль 40,64%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В реализации протокола SCTP в ядре Linux обнаружена уязвимость, позволяющая удаленному атакующему вызвать обращение к освобожденной памяти. Ошибка возникает при перемещении пакетов между транспортными очередями без синхронизации указателя
chunk->transport. Атака возможна без аутентификации и может привести к выполнению кода с привилегиями ядра.Основные характеристики
Риск связан с классическим сценарием use-after-free в сетевом стеке ядра. Злоумышленник может спровоцировать обращение к памяти, которая уже была освобождена, что потенциально позволяет выполнить произвольный код с привилегиями ядра.
- Тип ошибки: 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. Высокая оценка отражает удаленный доступ без аутентификации и полное нарушение конфиденциальности, целостности и доступности.
- Условия атаки: Удаленный (Network), низкая сложность (Low), отсутствие требований к привилегиям (None), отсутствие взаимодействия пользователя (None).
- Эксплуатация: Подтверждено наличие технического описания и патча. Публичный эксплойт в каталоге CISA KEV не подтвержден.
- EPSS: 0,50% (процентиль 40,64%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но риск остается высоким из-за критичности.
Какие продукты и версии затронуты
Уязвимость затрагивает реализации протокола SCTP в ядре Linux. Ошибка присутствует в коде, который был введён в версии 2.6.12-rc2 и не был исправлен до момента выпуска патча.
- Компонент:
net/sctp/outqueue.c(модуль обработки исходящих пакетов SCTP).
- Версии: Все версии ядра Linux, содержащие код
__sctp_outq_flush_rtx()без исправления. Точный список версий, требующих обновления, зависит от дистрибутива и стабильных веток (stable tree).
- Платформы: Все архитектуры, поддерживающие SCTP в ядре Linux (x86, ARM, и др.).
Причина уязвимости
Причина уязвимости кроется в несогласованности состояния объекта
chunk при его перемещении между очередями.Функция
__sctp_outq_flush_rtx() перемещает пакет (chunk) с флагом tsn_gap_acked в очередь transmitted другого транспорта. При этом указатель chunk->transport не обновляется и продолжает ссылаться на старый, уже неактуальный транспорт.Если этот старый транспорт удаляется (например, через
sctp_assoc_rm_peer() при обработке ASCONF Delete-IP), память под него освобождается через sctp_transport_free(). Однако пакет всё ещё находится в очереди другого, живого транспорта, а его поле transport указывает на освобожденную память. Это создает dangling pointer (висящий указатель).Как работает атака
Атака эксплуатирует временное окно между освобождением памяти транспорта и последующим обращением к нему через висящий указатель.
- Злоумышленник устанавливает SCTP-ассоциацию с целью.
- Он отправляет пакет, который попадает в состояние
tsn_gap_ackedи перемещается в очередь другого транспорта без обновленияchunk->transport.
- Злоумышленник инициирует удаление транспорта (через ASCONF Delete-IP), что приводит к освобождению памяти под этот транспорт.
- При получении SACK-пакета, который сбрасывает флаг
tsn_gap_acked, ядро пытается обновить статистикуflight_sizeчерезtchunk->transport->flight_size.
- Происходит чтение из освобожденной памяти (slab-use-after-free), что может привести к падению ядра или выполнению кода.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости атакующему необходимо выполнить следующие условия:
- Доступ к сети: Удаленный доступ к системе, принимающей SCTP-трафик.
- Активный SCTP-стек: В ядре должна быть включена поддержка протокола SCTP.
- Управление ассоциацией: Возможность устанавливать SCTP-ассоциацию и отправлять управляющие сообщения (ASCONF, SACK).
- Тайминг: Необходим точный тайминг для совпадения освобождения памяти и последующего обращения к ней, что может усложнить эксплуатацию, но не делает её невозможной.
Возможный сценарий атаки
Сценарий атаки начинается с установления SCTP-ассоциации между атакующим и жертвой. Атакующий отправляет данные, которые формируют пакет с флагом
tsn_gap_acked. Этот пакет перемещается в очередь другого транспорта, но его указатель transport не обновляется.Затем атакующий отправляет команду ASCONF Delete-IP для удаления транспорта, на который ссылается старый указатель. Ядро освобождает память под этот транспорт. В этот момент в памяти формируется висящий указатель.
При получении следующего SACK-пакета ядро пытается обновить статистику через этот указатель. Если память была переиспользована, атакующий может контролировать данные, которые будут прочитаны или записаны, что приводит к выполнению произвольного кода в контексте ядра.
Есть ли публичный эксплойт
На момент публикации CVE-2026-74588 в каталоге CISA KEV нет подтверждений о публичной эксплуатации в реальных атаках.
Однако наличие патча и подробного технического описания механизма уязвимости (включая отчет KASAN) позволяет предположить, что PoC (proof of concept) может быть разработан относительно быстро. Отсутствие в KEV не означает отсутствие эксплойта, а лишь отражает текущий статус мониторинга CISA.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости не опубликованы. Однако можно использовать следующие неспецифичные признаки для мониторинга:
- Аномальный SCTP-трафик: Частые изменения конфигурации ассоциаций (ASCONF) и отправка SACK-пакетов с подозрительными таймингами.
- Сбои ядра: Сообщения в
dmesgилиkern.logоslab-use-after-freeилиKASANв модулеsctp.
- Неожиданные процессы: Запуск процессов с привилегиями ядра, которые не связаны с легитимными сетевыми службами.
Как обнаружить атаку
Для обнаружения атаки рекомендуется использовать следующие методы:
- Мониторинг логов ядра: Настройка алертов на сообщения KASAN,
use-after-freeиBUGв модулеsctp.
- Сетевой анализ: Использование IDS/IPS для отслеживания аномальных паттернов SCTP-трафика, особенно частых ASCONF-сообщений.
- Аудит конфигурации: Проверка, включен ли модуль SCTP в ядре, если он не требуется для бизнес-процессов.
Как проверить свою версию
Для проверки версии ядра и наличия уязвимости используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с списком исправленных версий в официальных базах данных вашего дистрибутива. Если версия ядра старше 2.6.12-rc2 и не содержит патча
9f2cf069a9a72a2d6b97ca8b4c70e714aac99749, система уязвима.Исправление
Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление.
- Официальный патч: Коммит
9f2cf069a9a72a2d6b97ca8b4c70e714aac99749в mainline и стабильных ветках.
- Обновление дистрибутива: Используйте штатные механизмы обновления пакетов вашего дистрибутива (apt, yum, dnf, pacman и др.).
- Перезагрузка: После обновления ядра требуется перезагрузка системы для применения нового ядра.
Временные меры защиты
Пока обновление не установлено, можно применить следующие временные меры:
- Отключение SCTP: Если протокол SCTP не используется, отключите модуль
sctpв ядре или заблокируйте трафик на уровне файрвола.
- Ограничение доступа: Ограничьте доступ к портам SCTP (99, 989) только для доверенных IP-адресов.
- Мониторинг: Усиленный мониторинг сетевых соединений и логов ядра на предмет аномальной активности.
Как проверить устранение уязвимости
Для проверки успешного применения исправления выполните следующие шаги:
- Проверьте версию ядра:
uname -r.
- Убедитесь, что версия соответствует или превышает версию, содержащую патч.
- Проверьте наличие патча в исходниках ядра (если доступно):
git log --oneline | grep 9f2cf069a9a72a2d6b97ca8b4c70e714aac99749.
- Проведите функциональное тестирование SCTP-соединений, чтобы убедиться в работоспособности протокола после обновления.
Вывод
CVE-2026-74588 представляет собой критическую угрозу для систем с активным SCTP-стек. Уязвимость позволяет удаленному атакующему выполнить произвольный код с привилегиями ядра.
Рекомендуется срочно обновить ядро Linux до последней версии, содержащей исправление, или отключить SCTP, если он не требуется. Мониторинг логов ядра и сетевого трафика поможет обнаружить попытки эксплуатации до применения патча.
Официальные источники
- NVD — CVE-2026-74588
- FIRST EPSS — CVE-2026-74588
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
- sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 27.08.2026 — Опубликована первая версия материала.
