В ядре Linux обнаружена критическая уязвимость CVE-2026-98432 в коде, который устанавливает TCP-соединения по IPv4. Команда Frontier Red Team компании Anthropic показала, что с ее помощью удаленный злоумышленник может без учетных данных выполнять команды с правами root на серверах с прослушивающим сокетом Multipath TCP (MPTCP).

Команда ядра Linux оценила уязвимость в 9.8 балла из 10 по шкале CVSS. Исправление вошло в поддерживаемые ветки ядра, но обновленные пакеты вышли не для всех дистрибутивов: на 1 ноября их нет для Ubuntu и Red Hat Enterprise Linux (RHEL). Сообщений о реальных атаках нет, а в каталог активно эксплуатируемых уязвимостей CISA проблема не внесена.
В чем суть уязвимости
Ошибка типа use-after-free появилась в Linux 4.4 и связана с состоянием гонки при установке соединения. Если пакет SYN содержит параметры IPv4 Record Route или Timestamp, ядро сохраняет их вместе с запросом на подключение, а после завершения рукопожатия передает новому сокету без копирования. Повторный пакет SYN в это время может обрабатываться на другом ядре процессора. Если новое соединение закроется раньше, чем будет собран ответ SYN-ACK, ядро обратится к уже освобожденной памяти.
Как сказано в записи CVE, это может привести к утечке содержимого памяти ядра по сети, записи за пределы буфера или сбою системы. Аутентификация не требуется: уязвимый код выполняется в ядре до того, как приложение получит соединение. Похожая проблема есть в механизме миграции запросов на подключение, но он по умолчанию выключен: для него нужны параметр net.ipv4.tcp_migrate_req=1 или отдельная программа BPF.
Основная ошибка не затрагивает IPv6, потому что там параметры копируются. Исправление подготовил Eric Dumazet, об ошибке сообщил Xinyang Ge из Anthropic. Оно вошло в ядра 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10, 7.3 и более новые выпуски этих веток.
Что показала Anthropic
Anthropic описала эксплойт 27 октября в отчете о цепочках атак, созданных с помощью невыпущенной внутренней модели Claude. По словам компании, эксплойт написала сама модель после начальных указаний исследователей.
Атака состоит из двух этапов. Сначала гонка заставляет ядро отправить атакующему лишние данные из памяти. Как только в ответе оказывается указатель ядра, атакующий обходит рандомизацию адресного пространства (KASLR). Затем та же ошибка используется для переполнения буфера и перехвата управления, и ядро выполняет выбранную атакующим команду с правами root. В тесте Anthropic на получение указателя ушло 48 минут, на выполнение команды – еще пять.
По данным Anthropic, проигранная гонка только прерывает рукопожатие и не приводит к сбою, поэтому попытки можно повторять. При этом в записи CVE описан и сценарий аварийного завершения ядра, а Red Hat отдельно упоминает немедленный сбой системы. Компания не указала версию ядра и конфигурацию тестового сервера и не объяснила, почему для атаки нужен именно сокет MPTCP.
Anthropic код эксплойта не публиковала. С 30 октября на GitHub появляются сторонние подтверждения концепции (PoC). В их описаниях заявлены воспроизведение ошибки и утечка памяти, но не выполнение кода.
Matthieu Baerts, сопровождающий подсистему MPTCP в ядре, в обсуждении на GitHub назвал работу такой атаки вне лаборатории маловероятной. По его мнению, она требует огромного числа запросов на подключение, параметры IPv4 уже блокируются во многих сетях, а MPTCP использовался потому, что с ним атака заняла меньше времени, чем с обычным TCP.
Какие системы затронуты
Multipath TCP позволяет одному соединению использовать несколько сетевых путей одновременно. Приложение должно запросить MPTCP само, поэтому обычно такие сокеты не открываются. Исключение – программы на Go: начиная с Go 1.24 они по умолчанию включают MPTCP для входящих подключений в Linux, поэтому служба на Go может открыть такой сокет без ведома администратора. В AlmaLinux и Rocky Linux MPTCP на уровне системы выключен.
Ограничиваться проверкой MPTCP не стоит. Команда безопасности Go подчеркивает, что сама ошибка не связана с MPTCP и системы без него могут быть уязвимы к похожим атакам. Возможно ли удаленное выполнение кода без сокета MPTCP, пока неизвестно. Red Hat относит к затронутым все системы с уязвимым ядром, а в первую очередь те, что принимают входящие TCP-соединения.
Оценки опасности различаются. SUSE, Oracle и Amazon ставят 8.1 балла, потому что считают атаку сложной. Red Hat сначала указывала 5.9 балла, затем 8.1, а 30 октября присвоила уязвимости уровень Critical и оценку 9.8, выпустила бюллетень RHSB-2026-016 и сообщила, что ускоряет выпуск исправлений.
Какие дистрибутивы получили исправления
Состояние на 1 ноября 2026 года. У дистрибутивов свои номера версий, поэтому сравнивать установленное ядро нужно с их бюллетенями.
| Дистрибутив | Состояние | Пакет или бюллетень |
|---|---|---|
| Debian 13 | Исправлено | linux 6.12.113-1 (DSA-6568-1) |
| Debian 12 | Исправлено | linux 6.1.190-1 (DLA-4841-1), linux-6.12 6.12.113-1~deb12u1 (DLA-4850-1) |
| Amazon Linux 2 и 2023 | Исправлено | ALAS2-2026-4065, ALAS2023-2026-3365 и другие |
| Oracle Linux 7–10, ядро UEK | Исправлено | ELSA-2026-500397, ELSA-2026-500398, ELSA-2026-500399 |
| SLES 16.0, SUSE Linux Micro 6.2, openSUSE Leap 16.0 | Исправлено | kernel-default 6.12.0-160000.40.1 |
| SLES 15 SP4–SP6 LTSS, SLE Micro 5.3–5.5 | Исправлено | – |
| SLES 15 SP7 | Исправление готовится | – |
| AlmaLinux 8, 9, 10 | В тестовом репозитории | kernel-4.18.0-553.180.2.el8_10, kernel-5.14.0-687.61.2.el9_8, kernel-6.12.0-211.69.2.el10_2 |
| Ubuntu 22.04, 24.04, 26.04, 26.10 | Исправление готовится | – |
| Ubuntu 16.04, 18.04, 20.04 | Уязвимы, исправления нет | – |
| RHEL 8, 9, 10, OpenShift | Уязвимы, исправления нет | – |
| Rocky Linux 8, 9, 10 | Уязвимы, на 30 октября исправления от CIQ не было | – |
| RHEL 6 и 7 | Не затронуты | – |
Если вашего дистрибутива нет в таблице, состояние исправления нужно смотреть в его трекере безопасности.
Как защититься
Полностью устраняет уязвимость только обновленное ядро. Новое ядро начнет работать после перезагрузки, поэтому после установки пакета систему нужно перезапустить и проверить версию:
uname -r
Если обновления еще нет, стоит ограничить доступ к службам только доверенными сетями и адресами. Red Hat также предлагает временно отбрасывать входящие TCP-пакеты IPv4 с параметрами IP. Обычный трафик это затронуть не должно, потому что стандартные параметры TCP передаются в другом заголовке. Правило снижает риск, но не исключает его полностью. Перед применением компания советует проверить его в тестовой среде. Сохраните правило в файл cve-2026-98432.nft:
table inet cve_2026_98432 {
chain input {
type filter hook input priority -310; policy accept;
ip protocol tcp ip hdrlength > 5 counter drop
}
}
Проверьте и примените его:
sudo nft --check --file cve-2026-98432.nft sudo nft --file cve-2026-98432.nft sudo nft list table inet cve_2026_98432
После обновления ядра правило можно удалить:
sudo nft delete table inet cve_2026_98432
Такое правило не сохраняется после перезагрузки. CIQ опубликовала вариант со службой systemd, которая загружает его при запуске системы. AlmaLinux предупреждает, что отбрасывать такие пакеты нельзя в сетях с метками безопасности CIPSO, а трафик между контейнерами на одном хосте может обходить правило.
Отключение MPTCP закрывает только сценарий, показанный Anthropic. В проверке CIQ при net.mptcp.enabled=0 обычный TCP-сокет по-прежнему принимал пакет SYN с параметром Record Route, поэтому уязвимый код остается доступным. Проверить настройку и найти открытые сокеты MPTCP можно так:
sysctl net.mptcp.enabled sudo ss -lnMp
Если MPTCP не нужен, его можно отключить. Эти команды запрещают только создание новых сокетов, поэтому службы, которые уже открыли их, нужно перезапустить:
echo 'net.mptcp.enabled = 0' | sudo tee /etc/sysctl.d/90-disable-mptcp.conf sudo sysctl -w net.mptcp.enabled=0
Для отдельной программы на Go можно задать переменную окружения GODEBUG=multipathtcp=0 или добавить строку godebug multipathtcp=0 в файл go.mod основного модуля. Команда Go считает такой способ ненадежным: одна пропущенная программа оставит сокет MPTCP открытым, а другие варианты атаки могут обойтись без него.