18-летняя SCTPhantom в Linux даёт root — исправление уже вошло в стабильные ядра

Исследователи Tencent Zhuque Lab раскрыли SCTPhantom (CVE-2026-64564), ошибку use-after-free в механизме SCTP Dynamic Address Reconfiguration, которая присутствовала в Linux со времён ядра 2.6.25. Уязвимость позволяет локальному пользователю с низкими привилегиями получить root, а в испытаниях контейнерный сценарий достиг прав root на хосте в шести из восьми попыток. Исправление уже находится в Linux 6.6.148, 6.12.101, 6.18.42, 7.1.6 и 7.2-rc5; Debian 13 получил его в пакете ядра 6.12.101-1.

18-летняя SCTPhantom в Linux даёт root
18-летняя SCTPhantom в Linux даёт root

SCTPhantom превращает ошибку в SCTP в полный контроль над Linux-хостом

Уязвимость SCTPhantom получила идентификатор CVE-2026-64564 и затрагивает реализацию SCTP в ядре Linux. Tencent Zhuque Lab опубликовала подробный технический разбор 6 августа 2026 года, а Linux kernel CVE team объявила CVE двумя днями ранее.

SCTP, или Stream Control Transmission Protocol, — транспортный сетевой протокол, который умеет работать сразу с несколькими сетевыми путями в рамках одного соединения. Такая возможность называется multihoming. Она используется, в частности, там, где соединение должно переживать смену адреса или отказ одного из сетевых путей.

SCTPhantom находится в механизме Dynamic Address Reconfiguration. Через сообщения ASCONF одна сторона SCTP-соединения может сообщать об изменениях адресов — добавлять адрес, удалять его или назначать другой путь основным.

Проблема появляется при обработке определённой последовательности операций DEL-IP. Ядро проверяет удаляемый адрес относительно источника сетевого пакета, одновременно дальнейшая обработка опирается на ранее выбранную структуру sctp_transport. При специально сформированной последовательности эта структура освобождается, а сохранённый указатель продолжает использоваться.

Получается классический use-after-free: объект памяти уже уничтожен, но код ядра всё ещё обращается к его прежнему адресу.

Исследователи свели вызывающую ошибку последовательность к трём элементам:

[Address Parameter L] [DEL-IP L] [DEL-IP 0.0.0.0]

После первого DEL-IP транспорт, на который ссылается обработчик ASCONF, освобождается. Следующая операция с адресом 0.0.0.0 повторно использует устаревший указатель. В результате поля primary_path и active_path SCTP-ассоциации могут продолжить указывать на уже освобождённую область памяти.

Именно этот момент превращает ошибку управления памятью в основу для повышения привилегий.

Ошибка появилась ещё в Linux 2.6.25 и прожила около 18 лет

История SCTPhantom уходит к Linux 2.6.25. По данным исследователей, уязвимая последовательность окончательно сформировалась после изменения 42e30bf3463c, появившегося в коде SCTP в конце 2007 года.

На протяжении последующих поколений ядра этот участок пережил огромные изменения вокруг себя. Сам дефект при этом сохранился в ветках, которые спустя годы стали основой современных серверных дистрибутивов.

Tencent указывает такую хронологию исследования:

ДатаСобытие
Декабрь 2007 года / Linux 2.6.25Изменение 42e30bf3463c завершило формирование уязвимой логики
12 июля 2026 годаИсследователи подтвердили нарушение времени жизни SCTP transport и начали закрытое раскрытие
15–23 июляЭксплойт проверяли на ядрах семейств 5.14, 6.6, 6.8 и 6.12
24 июляИсправление попало в сетевое дерево Linux
27 июляПодтверждён выход из контейнера на хост
4 августаLinux kernel CVE team объявила CVE-2026-64564
6 августаTencent Zhuque Lab опубликовала подробное исследование

Срок существования бага здесь интересен ещё и тем, что SCTP заметно реже встречается в пользовательских сценариях, чем TCP или UDP. Ошибка находилась в сравнительно специализированном участке сетевого стека, где взаимодействуют multihoming, ASCONF и управление временем жизни внутренних структур ядра.

Локальный пользователь получает root без взаимодействия с владельцем системы

В публикации oss-sec исследователи оценивают SCTPhantom в 8,5 балла по CVSS 4.0, уровень High. Вектор указывает локальную атаку, низкую сложность, уже имеющиеся низкие привилегии и отсутствие действий со стороны другого пользователя.

Исходная точка атаки поэтому отличается от классической удалённой уязвимости сетевого сервиса. Атакующему требуется возможность выполнять код в затронутой Linux-системе или внутри подходящего контейнера.

После успешной эксплуатации граница привилегий исчезает: исследователи получили глобальные права root и подтвердили их доступом к /etc/shadow и созданием файла от имени root в /root.

Полная исследовательская цепочка использует два эпизода use-after-free. На первом этапе освобождённая область памяти повторно занимается объектом pg_vec, что позволяет получить адрес страницы в прямом отображении памяти ядра. Из этого исследователи построили повторяемое чтение четырёх байтов памяти ядра и восстановили смещение KASLR через IDT.

Второй use-after-free используется для размещения контролируемого объекта в памяти. После восстановления адресов ядра цепочка достигает commit_creds() и меняет учётные данные процесса на привилегированные.

Важная деталь исследования — цепочка использует уже существующий код ядра. Для демонстрации не потребовалась отдельная пользовательская shellcode внутри kernel space или традиционная ROP-цепочка.

Выход из контейнера проверили с обычным seccomp и без двух мощных capabilities

Контейнерный сценарий делает SCTPhantom особенно заметной для серверной инфраструктуры. Контейнеры используют общее ядро хоста, поэтому ошибка в kernel space потенциально пересекает границу, которую создаёт контейнерная изоляция.

Ранние варианты proof of concept включали параметры net.sctp.addip_enable и net.sctp.addip_noauth_enable. Позднее исследователи нашли путь, при котором эти глобальные sysctl-параметры менять не требовалось: нужные возможности SCTP включались на уровне сокета через SCTP_ASCONF_SUPPORTED и SCTP_AUTH_SUPPORTED, а триггер содержал корректный AUTH chunk.

В сохранённом тесте работал стандартный seccomp-профиль контейнера. Контейнеру не выдавали CAP_NET_ADMIN и CAP_SYS_ADMIN.

Из восьми попыток шесть завершились получением root на хосте. Две оставшиеся остановились на ошибке обхода указателей без kernel panic.

Это не даёт универсальных 75% вероятности успешной эксплуатации для любой Linux-системы. Результат относится к конкретной тестовой конфигурации Tencent. Доступность SCTP, raw- и packet-сокетов, политика user namespaces, seccomp, capabilities и LSM меняют поверхность атаки в разных окружениях.

Исследователи подтвердили получение root на нескольких системах:

СистемаПроверенное ядроРезультат
Linux research kernel7.2-rc2Root
OpenCloudOS-family6.6.119Root
Debian 136.12.95+deb13-amd64Root
Rocky Linux 9 / семейство RHEL 9vendor kernel 5.14, SCTP загруженRoot
Ubuntu 24.046.8.0-134-genericRoot

Наличие старшего или младшего номера ядра само по себе не определяет состояние уязвимости в дистрибутиве. Производители Linux часто переносят исправления в собственные ядра без изменения базовой ветки на ту, где патч впервые появился upstream.

Патч Linux состоит из небольшой проверки перед удалением SCTP transport

Исправление SCTPhantom оказалось значительно компактнее цепочки, которая превращает ошибку в root.

Upstream-коммит 9b2854f86f0b добавляет проверку перед удалением peer transport. Если удаляемый объект совпадает с транспортом, который ASCONF продолжает хранить в asconf->transport, операция отклоняется.

Логика исправления сводится к условию:

if (peer == asconf->transport)
        return SCTP_ERROR_REQ_REFUSED;

Эта проверка сохраняет объект, который понадобится следующей ветке обработки ASCONF, и устраняет ситуацию с висячим указателем.

Linux kernel CVE announcement перечисляет первые версии с исправлением:

Ветка ядраПервая исправленная версия
6.6.y6.6.148
6.12.y6.12.101
6.18.y6.18.42
7.1.y7.1.6
mainline7.2-rc5

Патч вошёл в upstream раньше публичного подробного раскрытия. Поэтому к моменту публикации исследования Tencent исправленные stable-релизы уже существовали.

Debian 13 уже получил исправление, а статус Ubuntu зависит от конкретного kernel-пакета

После upstream-патча картина начинает зависеть от дистрибутива.

Актуальный Debian Security Tracker отмечает Linux 6.12.101-1 из репозитория безопасности Debian 13 trixie как исправленный. Ветка forky с 7.1.6-1 и sid с 7.1.7-1 тоже отмечены как fixed.

При этом Debian tracker продолжает показывать уязвимыми перечисленные там пакеты ядра для bullseye и bookworm, включая security-пакеты 5.10.262-1 и 6.1.180-1. Статус относится к конкретным пакетам, зафиксированным трекером на момент проверки.

У Canonical картина другая. Карточка Ubuntu CVE-2026-64564, опубликованная 4 августа и обновлённая 7 августа, присваивает уязвимости приоритет Medium. В таблице Canonical основной пакет linux для Ubuntu 26.04 LTS, 24.04 LTS, 22.04 LTS, 20.04 LTS, 18.04 LTS и 16.04 LTS на момент обновления отмечен как Vulnerable. У специализированных kernel flavour состояние различается.

Разница между CVSS 8.5 High в исследовании Tencent и Medium у Ubuntu отражает разные модели оценки риска. Tencent оценивает техническое воздействие подтверждённой exploit chain, а дистрибутив дополнительно учитывает особенности своих пакетов и реальную достижимость уязвимого кода в типичных конфигурациях.

SCTP определяет реальную поверхность атаки

SCTPhantom живёт внутри SCTP, поэтому наличие соответствующей функциональности ядра напрямую связано с достижимостью дефекта.

Tencent отдельно указывает, что результаты зависят от доступности SCTP и нескольких механизмов, используемых exploit chain. В тесте Rocky Linux 9 / RHEL 9-family исследователи явно отмечают загруженный SCTP module.

Для контейнерного сценария значение имеют доступ к raw- и packet-сокетам, user namespaces, seccomp, capabilities и правила LSM. Исследование подтверждает обход границы контейнера в проверенной конфигурации, при этом не утверждает одинаковую достижимость на каждой системе с Linux.

Именно поэтому одна строка с номером версии ядра даёт неполную картину для vendor kernels. Дистрибутив может перенести upstream-патч в более старую ветку, сохранив прежний номер семейства ядра.

Исправление уже расходится по дистрибутивам, статус пакетов остаётся неоднородным

К 9 августа 2026 года техническая сторона SCTPhantom описана достаточно подробно: CVE-2026-64564 связана с use-after-free в SCTP ASCONF, подтверждено локальное повышение привилегий до root, а исследовательская цепочка продемонстрировала выход из контейнера на хост.

Upstream Linux уже содержит исправление, и первые исправленные версии известны для веток 6.6, 6.12, 6.18, 7.1 и mainline 7.2. Debian 13 отмечает 6.12.101-1 как fixed. Ubuntu на последнем доступном обновлении карточки от 7 августа всё ещё показывает ряд основных и специализированных kernel-пакетов как vulnerable.

Ситуация вокруг vendor kernels остаётся неопределённой: статусы изменяются по мере выхода backport-пакетов, и даже при одинаковой базовой версии ядра у двух дистрибутивов их состояние по отношению к CVE-2026-64564 может различаться. Исследователи пока сообщают только о подтверждённой эксплуатации в лабораторных условиях и на определённых Linux-конфигурациях.

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться