Ошибка в ядре Linux позволяет захватить сервер по сети без пароля

Критическая уязвимость в обработке TCP-подключений: проверяем версию ядра, ставим патч или временную защиту.

Обложка: Ошибка в ядре Linux позволяет захватить сервер по сети без пароля

Разработчики ядра Linux 11 и 15 октября закрыли уязвимость CVE-2026-98432: через неё посторонний человек может по сети, без пароля и без каких-либо действий со стороны владельца, повредить память ядра, уронить машину или получить над ней полный контроль. Команда ядра, которая сама присваивает номера своим уязвимостям, оценила её в 9,8 балла из 10 по шкале CVSS, это уровень «критическая». Ошибка живёт в ядре с версии 4.4, то есть с 2016 года.

Через две недели после выхода патчей, 27 октября, Anthropic рассказала, что её модель Claude написала для этой ошибки рабочий эксплойт. Он запускает команды с правами root на серверах, где открыт порт Multipath TCP, а в программах на Go такой порт включён по умолчанию.

Касается это в первую очередь серверов: VPS, сайтов, баз данных, узлов Kubernetes, домашних серверов и NAS на Linux, которые принимают входящие подключения по IPv4. Исправленные ядра уже выпустили Debian, Amazon Linux, Oracle Linux и, для части версий, SUSE. У Ubuntu и Red Hat Enterprise Linux на 1 ноября исправления нет, а на этих системах работает заметная часть серверов, поэтому ниже собрали и временные меры.

Ключевые выводы
  • Ошибка в коде, который принимает входящие TCP-подключения по IPv4; срабатывает ещё до того, как подключение увидит любая программа, поэтому пароль атакующему не нужен.
  • Исправлено в ядрах 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 и 7.3; после установки нужна перезагрузка.
  • Ubuntu и RHEL 8, 9 и 10 на 1 ноября исправлений не выпустили; Red Hat опубликовал правило nftables, которое снижает риск до выхода патча.
  • Эксплойт Anthropic требует открытого порта Multipath TCP и не опубликован; в опыте компании атака заняла около 53 минут.
  • В каталоге CISA KEV, куда попадают уязвимости, которые уже используют в реальных атаках, этой CVE на 1 ноября нет.

Что именно сломалось в ядре

Ядро забывало, что кусок памяти ещё кто-то читает, и освобождало его раньше времени. Такую ошибку называют use-after-free, «использование после освобождения»: программа продолжает пользоваться памятью, которую уже отдала под другие данные. Если атакующий успеет подложить в этот участок свои байты, ядро начнёт работать с ними как со своими.

Как это выглядит на практике. Любое TCP-подключение начинается с «рукопожатия»: клиент шлёт пакет SYN, сервер отвечает SYN-ACK, клиент подтверждает. В заголовок IPv4-пакета можно вложить служебные опции, например Record Route («запиши маршрут») или Timestamp («поставь отметки времени»). В обычном трафике они почти не встречаются, но ядро их хранит, чтобы повторить в своём ответе.

Когда рукопожатие завершается, ядро передаёт эти сохранённые опции новому соединению без копии. Если соединение тут же закрыть, ядро сразу освобождает опции. А в это время другое ядро процессора может обрабатывать повторный SYN того же клиента и собирать из тех же опций ответный пакет. Получается гонка: один поток уже выбросил данные, другой ещё их читает. Подробности есть в описании исправления.

Последствия команда ядра расписала в записи CVE: подменив освобождённые данные, атакующий может заставить ядро отправить ему в ответном пакете кусок памяти ядра, записать данные за пределы буфера или вызвать падение системы. Всё это происходит внутри ядра, до веб-сервера, SSH или базы данных, поэтому ни пароли, ни настройки приложения тут не помогают.

Исправление написал Эрик Дюмазе, один из сопровождающих сетевой подсистемы ядра; об ошибке сообщил Синьян Гэ из Anthropic. Патч меняет две строки: вместо немедленного освобождения памяти через kfree() ядро вызывает kfree_rcu(), которая ждёт, пока все, кто читает эти данные, закончат. Другие участки кода, работающие с теми же опциями, уже делали именно так. Тот же патч закрывает похожую гонку при миграции запросов на подключение между сокетами (настройка net.ipv4.tcp_migrate_req, по умолчанию выключена).

Что показала Anthropic и насколько это реально

Команда Frontier Red Team, которая в Anthropic проверяет опасные возможности моделей, опубликовала 27 октября отчёт о пяти цепочках атак, собранных Claude, в том числе для Chrome, Safari и Windows. Про Linux компания пишет, что после начальной постановки задачи модель написала эксплойт, который позволяет удалённо выполнять команды от root на серверах с открытым портом Multipath TCP, «без учётных данных и действий пользователя» (перевод редакции).

Атака идёт в два этапа. Сначала эксплойт раз за разом выигрывает гонку и заставляет ядро прислать лишние байты памяти, пока среди них не окажется адрес внутри ядра: так обходится KASLR, защита, которая прячет расположение ядра в памяти. Затем та же ошибка используется, чтобы переписать указатель на функцию и запустить команду от root. По данным Anthropic, проигранная гонка просто срывает одно подключение и не роняет систему, поэтому атакующий может пробовать сколько угодно. В опыте компании первый этап занял 48 минут, второй ещё 5.

Код эксплойта Anthropic не публиковала: по её правилам раскрытия полные технические подробности компания обычно публикует через 45 дней после выхода патча, чтобы пользователи успели обновиться. Это не первый случай, когда ИИ доводит находку до рабочего эксплойта: мы уже писали, как модель написала полный эксплойт для ядра FreeBSD, а исследователь Anthropic нашёл с Claude Code 23-летнюю ошибку в ядре Linux.

Причём здесь Multipath TCP и программы на Go

Multipath TCP (MPTCP) позволяет одному соединению идти сразу по нескольким сетям, например по Wi-Fi и мобильной связи. Anthropic не объяснила, почему её эксплойту нужен именно такой порт, но этот режим включён чаще, чем кажется. Команда безопасности Go 29 октября напомнила, что начиная с Go 1.24 программы на Go в Linux по умолчанию открывают слушающие сокеты с MPTCP. Значит, любой сервис на свежем Go, будь то API, прокси или панель мониторинга, может оказаться той самой целью, если ядро разрешает MPTCP.

Там же команда Go предупреждает, что сама ошибка с MPTCP не связана и системы без таких портов тоже могут оказаться уязвимы к похожим атакам. Отключение MPTCP убирает условие, которое нужно показанной атаке, но ядро от этого исправленным не становится.

Кого это касается: сервер, домашний компьютер, роутер

Уязвима любая система на ядре Linux от 4.4 и новее без исправления, которая принимает входящие TCP-подключения по IPv4. Red Hat в бюллетене RHSB-2026-016 пишет, что сильнее всего под ударом системы, принимающие входящие соединения. Основная часть ошибки IPv6 не затрагивает, говорится в описании исправления.

  • Серверы и VPS. Главная группа риска: у них открыты порты в интернет. Контейнеры работают на ядре хоста, поэтому новый образ Docker ничего не меняет, обновлять нужно сам хост и узлы Kubernetes. Если у вас VPS на контейнерной виртуализации (OpenVZ, LXC), ядро принадлежит провайдеру и обновить его может только он.
  • Домашние компьютеры и смартфоны. По нашей оценке, риск заметно ниже: устройство за домашним роутером обычно не принимает входящих подключений из интернета. В общей сети вроде гостевого Wi-Fi другие участники до него дотянуться могут, так что системные обновления всё равно стоит поставить, когда они придут.
  • Роутеры, NAS, камеры и другие устройства на Linux. Опасны, если у них открыт доступ извне: удалённое управление, проброс портов, облачный доступ к NAS. Исправление придёт только с прошивкой от производителя; ветки ядра старше 5.10 разработчики Linux больше не поддерживают, их исправят только сами производители устройств, если захотят.

Вышло ли исправление для моей системы

Дистрибутивы переносят исправления в свои ядра под собственными номерами версий, поэтому сверяться нужно со страницей своего дистрибутива, а не с номером версии на kernel.org. Состояние на 1 ноября:

Статус исправления CVE-2026-98432 по дистрибутивам на 1 ноября 2026 года

7 сервисов · 3 столбца
Статус исправления CVE-2026-98432 по дистрибутивам на 1 ноября 2026 года
ДистрибутивСтатусПодробности
DebianИсправлено12: linux 6.1.190-1 или linux-6.12 6.12.113-1~deb12u1; 13: 6.12.113-1
UbuntuУязвимо, исправлений нетДля 22.04, 24.04, 26.04 и 26.10 исправление в работе
RHEL 8, 9, 10Уязвимо, Red Hat ускоряет выпускПока временное правило nftables
AlmaLinux 8, 9, 10Исправленные ядра в тестовом репозитории4.18.0-553.180.2.el8_10, 5.14.0-687.61.2.el9_8, 6.12.0-211.69.2.el10_2
SUSEИсправлено в SLES 16.0 и openSUSE Leap 16.0; в SLES 15 часть ядер исправлена, часть в работеopenSUSE Leap 15.6 пока уязвим; для части конфигураций есть живые патчи
Oracle LinuxИсправлено в ядрах UEK для версий 7–10Обновления от 16 октября
Amazon Linux 2 и 2023ИсправленоВсе ядра
Листайте столбцы →Смахните влевоВсе 3 столбца
Источник: страницы безопасности дистрибутивов, проверено 1 ноября 2026 года

Узнать, какое ядро работает прямо сейчас и что установлено:

			uname -r                           # версия работающего ядра
dpkg -l 'linux-image*' | grep ^ii  # Debian и Ubuntu: установленные ядра
rpm -q kernel                      # RHEL, AlmaLinux, Rocky: установленные ядра
		

Если установленное ядро новее работающего, исправление ещё не действует: машину нужно перезагрузить. Проверять нужно хост: внутри контейнера uname -r всё равно покажет ядро хоста.

Как защититься прямо сейчас

Полностью защищает только исправленное ядро. После обычного обновления машину нужно перезагрузить; без перезагрузки исправление ставится только живым патчем, если дистрибутив его выпустил (у SUSE такие уже есть). Если обновление для вашего дистрибутива уже вышло, ставьте его в первую очередь на машины с портами в интернет.

			# Debian
sudo apt update && sudo apt full-upgrade && sudo reboot

# Amazon Linux 2023, Oracle Linux 8-10
sudo dnf upgrade 'kernel*' && sudo reboot

# Amazon Linux 2
sudo yum update kernel && sudo reboot

# SUSE
sudo zypper patch && sudo reboot
		

Пока патча нет, Red Hat и AlmaLinux предлагают правило nftables, которое отбрасывает входящие TCP-пакеты IPv4 с опциями в заголовке. Такие опции и нужны атакующему, а в обычном трафике их почти не бывает. Red Hat оговаривается, что правило «снижает риск, но не может полностью его исключить» (перевод редакции), и советует сначала проверить его на тестовой машине.

Приводим вариант AlmaLinux. Он срабатывает на самом раннем этапе обработки пакета (prerouting), поэтому закрывает и трафик, который хост передаёт контейнерам. Правило Red Hat висит на этапе input и защищает только сам хост: пакеты для контейнеров через этот этап не проходят.

			sudo nft -f - <<'EOF'
add table ip cve_2026_98432
delete table ip cve_2026_98432
table ip cve_2026_98432 {
  chain prerouting {
    type filter hook prerouting priority -300; policy accept;
    meta l4proto tcp ip hdrlength > 5 counter drop
  }
}
EOF

sudo nft list table ip cve_2026_98432   # счётчик покажет отброшенные пакеты

# после перехода на исправленное ядро
sudo nft delete table ip cve_2026_98432
		

У правила есть ограничения, о которых предупреждает AlmaLinux: после перезагрузки его нужно применить заново; трафик между контейнерами на одном хосте может пройти мимо; если машина работает маршрутизатором, она перестанет пропускать дальше TCP-пакеты с опциями IPv4. В сетях с метками безопасности CIPSO, которые передаются как раз в опциях IPv4, правило использовать нельзя. Если пограничный файрвол умеет отбрасывать IPv4-пакеты с опциями, такое правило на нём снизит риск для всех машин за ним.

Второй шаг: выключить Multipath TCP, если он вам не нужен. Так пропадает условие, которое требовалось атаке Anthropic. Команды из инструкции AlmaLinux:

			sysctl net.mptcp.enabled          # 1 значит, что программы могут открывать MPTCP-порты
sudo ss -Mlnp                     # какие MPTCP-порты открыты сейчас и чьи они

echo 'net.mptcp.enabled = 0' | sudo tee /etc/sysctl.d/90-disable-mptcp.conf
sudo sysctl -w net.mptcp.enabled=0
		

Настройка запрещает только новые MPTCP-сокеты: уже открытые порты останутся, поэтому сервисы из вывода ss -Mlnp нужно перезапустить. Ещё она действует отдельно в каждом сетевом пространстве имён, так что в контейнерах со своей сетью её нужно проверить и выключить отдельно. Для отдельной программы на Go поведение по умолчанию меняет переменная окружения GODEBUG=multipathtcp=0 или строка godebug multipathtcp=0 в go.mod (действует после пересборки). Если программа сама явно включает MPTCP в коде, эти настройки не помогут. Команда Go называет точечное отключение ненадёжной мерой: достаточно забыть один сервис.

Обычному пользователю делать много не нужно: установите системные обновления и обновите прошивку роутера и NAS, когда производитель её выпустит. Если на роутере включено удалённое управление или проброс портов, которыми вы не пользуетесь, выключите их.

Что дальше

В ближайшие дни ждём исправленные ядра Ubuntu и Red Hat, а за ними CentOS Stream, Rocky Linux и других производных; AlmaLinux обещает перевести свои ядра из тестового репозитория в основной после проверки сообществом. Похожую ошибку в IPv6, которая касается только систем с метками CALIPSO, разработчики обещали закрыть отдельным патчем. Национальная база уязвимостей США NVD собственную оценку ещё не дала.

Недавно мы разбирали ещё одну уязвимость ядра Linux, которая даёт root, и её тоже закрывает только новое ядро. Если машины у вас перезагружаются раз в полгода, сейчас хороший повод завести регулярное окно для обновлений ядра или подключить живое патчирование вроде kpatch и Livepatch.

Источники: Запись CVE-2026-98432 на cve.org, Исправление в ядре Linux, коммит e3f33b0, Anthropic: Discovering and exploiting vulnerabilities in critical, real-world software with Claude, Red Hat: бюллетень RHSB-2026-016, Команда безопасности Go в рассылке oss-security, AlmaLinux: исправленные ядра в тестовом репозитории, Ubuntu: CVE-2026-98432, Debian Security Tracker: CVE-2026-98432, Atlas: разбор CVE-2026-98432

Изображение на обложке: Tux, Larry Ewing и The GIMP