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

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 (висящий указатель).

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


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

  1. Злоумышленник устанавливает SCTP-ассоциацию с целью.
  2. Он отправляет пакет, который попадает в состояние tsn_gap_acked и перемещается в очередь другого транспорта без обновления chunk->transport.
  3. Злоумышленник инициирует удаление транспорта (через ASCONF Delete-IP), что приводит к освобождению памяти под этот транспорт.
  4. При получении SACK-пакета, который сбрасывает флаг tsn_gap_acked, ядро пытается обновить статистику flight_size через tchunk->transport->flight_size.
  5. Происходит чтение из освобожденной памяти (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-адресов.
  • Мониторинг: Усиленный мониторинг сетевых соединений и логов ядра на предмет аномальной активности.

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


Для проверки успешного применения исправления выполните следующие шаги:

  1. Проверьте версию ядра: uname -r.
  2. Убедитесь, что версия соответствует или превышает версию, содержащую патч.
  3. Проверьте наличие патча в исходниках ядра (если доступно): git log --oneline | grep 9f2cf069a9a72a2d6b97ca8b4c70e714aac99749.
  4. Проведите функциональное тестирование SCTP-соединений, чтобы убедиться в работоспособности протокола после обновления.

Вывод​


CVE-2026-74588 представляет собой критическую угрозу для систем с активным SCTP-стек. Уязвимость позволяет удаленному атакующему выполнить произвольный код с привилегиями ядра.

Рекомендуется срочно обновить ядро Linux до последней версии, содержащей исправление, или отключить SCTP, если он не требуется. Мониторинг логов ядра и сетевого трафика поможет обнаружить попытки эксплуатации до применения патча.

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


  1. NVD — CVE-2026-74588
  2. FIRST EPSS — CVE-2026-74588
  3. sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
  4. sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
  5. sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
  6. sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
  7. sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
  8. sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
  9. sctp: keep chunk->transport in step with the list it is queued on - kernel/git/stable/linux.git - Linux kernel stable tree
  10. 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 — Опубликована первая версия материала.
 
Назад
Верх Низ