Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!
CVE-2026-52924 — Технический анализ CVE-2026-52924 — критической уязвимости use-after-free в обработке устаревших cookie-файлов SCTP в ядре Linux, включая первопричину, вектор атаки, исправление и методы обнаружения. | Kitploit
Технический анализ CVE-2026-52924 — критической уязвимости use-after-free в обработке устаревших cookie-файлов SCTP в ядре Linux, включая первопричину, вектор атаки, исправление и методы обнаружения.
CVE-2026-52924: Use-After-Free в SCTP при обработке устаревших cookie
Сводка по уязвимости
CVE ID: CVE-2026-52924 Критичность: КРИТИЧЕСКАЯ (CVSS 9.8) Компонент: Ядро Linux — SCTP (протокол передачи с управлением потоком) Тип: Use-After-Free (CWE-416, CWE-825) Опубликовано: 2026-06-24 Статус: Исправлено
Затронутые версии
Ядро Linux < 5.10.259
Ядро Linux < 5.15.210
Ядро Linux < 6.1.176
Ядро Linux < 6.6.143
Ядро Linux < 6.12.94
Ядро Linux < 6.18.36
Ядро Linux < 7.0.13
Ядро Linux < 7.1
Технические детали
Корневая причина
Уязвимость возникает в обработке устаревших пакетов COOKIE-ECHO конечным автоматом SCTP. Проблема связана с некорректной очисткой очереди исходящих потоков при откате ассоциации.
Сценарий атаки
Нормальная работа: Ассоциация переходит в состояние COOKIE_ECHOED
Постановка пользовательских данных в очередь: Приложение отправляет данные, которые помещаются в очередь для передачи
Ошибка устаревшего cookie: Удалённый узел отправляет ошибку Stale Cookie
Запуск отката: Ассоциация откатывается из состояния COOKIE_ECHOED → COOKIE_WAIT
Обновление состояния потока:sctp_stream_update() освобождает старую таблицу потоков и устанавливает новую
Некорректный указатель:stream->out_curr по-прежнему указывает на освобождённую запись sctp_stream_out
Доступ при извлечении из очереди: Когда планировщик пытается извлечь данные (FCFS, RR, PRIO), он обращается к out_curr->ext
Use-After-Free: Обращение к освобождённой памяти → крах ядра, обнаруживаемый с помощью KASAN
Проблемный поток кода
root@kitploit:~
sctp_sf_do_5_2_6_stale():
├─ Получение ошибки Stale Cookie
├─ Откат состояния ассоциации
└─ Вызов sctp_stream_update()
├─ Освобождение старой таблицы потоков
├─ Установка новой таблицы потоков
└─ ОШИБКА: stream->out_curr НЕ инвалидируется ❌
Позже при извлечении из очереди:
sctp_sched_fcfs_dequeue():
└─ Доступ к stream->out_curr->ext (ОСВОБОЖДЁННАЯ ПАМЯТЬ) 💥
Пример краха
root@kitploit:~
BUG: KASAN: slab-use-after-free in sctp_sched_fcfs_dequeue+0x13a/0x140
Read of size 8 at addr ff1100004d4d3208 by task mini_poc/9312
CPU: 1 UID: 1001 PID: 9312 Comm: mini_poc Not tainted 7.1.0-rc1-00305-gbd3a4795d574 #5 PREEMPT(full)
Call trace:
sctp_sched_fcfs_dequeue+0x13a/0x140
sctp_outq_flush+0x1603/0x33e0
sctp_do_sm+0x31c9/0x5d30
sctp_assoc_bh_rcv+0x392/0x6f0
sctp_inq_push+0x1db/0x270
sctp_rcv+0x138d/0x3c10
Почему простого обновления out_curr недостаточно
Наивное исправление может заключаться в простой очистке stream->out_curr:
Все записи очереди повторной передачи освобождаются
Кэшированные указатели планировщика (out_curr и др.) инвалидируются
Состояние потока может быть безопасно перестроено при перезапуске COOKIE_WAIT
Отсутствуют висячие ссылки на освобождённые записи потоков
Место внедрения
Файл:net/sctp/sm_statefuns.c Функция:sctp_sf_do_5_2_6_stale() Добавление: Вызов sctp_outq_free(&asoc->outqueue) перед sctp_stream_update()
root@kitploit:~
enum sctp_disposition sctp_sf_do_5_2_6_stale(...)
{
// ... существующий код ...
// Очистка очереди исходящих данных перед перестроением состояния потока
sctp_outq_free(&asoc->outqueue);
// Теперь безопасно обновлять поток
sctp_stream_update(&asoc->stream, &asoc->c.h_init_tag);
// ... остальная часть функции ...
}
Анализ воздействия
Факторы критичности (CVSS 9.8)
Вектор атаки: Сетевой (CVSS:3.1/AV:N)
Сложность атаки: Низкая (CVSS:3.1/AC:L)
Требуемые привилегии: Отсутствуют (CVSS:3.1/PR:N)
Взаимодействие с пользователем: Отсутствует (CVSS:3.1/UI:N)
Область воздействия: Без изменений (CVSS:3.1/S:U)
Влияние на конфиденциальность: Высокое (CVSS:3.1/C:H)
Влияние на целостность: Высокое (CVSS:3.1/I:H)
Влияние на доступность: Высокое (CVSS:3.1/A:H)
Требования для эксплуатации
Сетевой доступ к целевой системе (открытый порт SCTP)
Возможность отправки SCTP-пакетов для установления соединения
Отправка ошибки Stale Cookie в определённый момент (состояние COOKIE_ECHOED)
Запуск операции извлечения из очереди планировщиком
Сценарии атак
Отказ в обслуживании: Многократный крах ядра → DoS
Раскрытие информации: Чтение памяти ядра через UAF
Повышение привилегий: Возможно через манипуляцию памятью
Удалённое выполнение кода: Возможно при эксплуатации повреждения памяти
Методы обнаружения
Обнаружение с помощью KASAN (во время выполнения)
root@kitploit:~
# Включение KASAN в конфигурации ядра
CONFIG_KASAN=y
CONFIG_KASAN_GENERIC=y
# Вывод во время выполнения показывает:
BUG: KASAN: slab-use-after-free
Статический анализ
root@kitploit:~
# Поиск небезопасного доступа к stream->out_curr без проверки
grep -r "out_curr->ext" net/sctp/
grep -r "out_curr->" net/sctp/sched*.c
Сетевое обнаружение
Мониторинг SCTP-пакетов ошибки Stale Cookie (тип 3, код 1)
Отслеживание паттернов отката соединений
Оповещение о быстрых переходах COOKIE_ECHOED → COOKIE_WAIT