02.11.2026 — CVE-2026-98432 — удаленное выполнение кода в сетевом стеке IPv4 ядра Linux {#CVE-2026-98432}
Идентификатор CVE (CVE ID): CVE-2026-98432.
Ссылка на CVE: <https://www.cve.org/CVERecord?id=CVE-2026-98432>.
Ссылка на NVD: <https://nvd.nist.gov/vuln/detail/CVE-2026-98432>.
Исходный отчет {#original-report-CVE-2026-98432}
- Исправляющий коммит в дереве ядра Linux.
- Публикация обнаружившей стороны (Anthropic) о цепочке эксплуатации.
Краткое описание {#brief-description-CVE-2026-98432}
CVE-2026-98432 — уязвимость обращения к освобожденной памяти (use-after-free) в сетевом стеке IPv4 ядра Linux. Она проявляется при установлении входящего TCP-соединения, если SYN-пакет содержит IPv4-опции, например Record Route или Timestamp: из-за гонки между обработкой повторного SYN и закрытием дочернего сокета ядро формирует ответный SYN-ACK по уже освобожденной структуре с опциями.
Второй путь к той же ошибке — миграция запросов на соединение между слушающими сокетами с SOREUSEPORT (net.ipv4.tcpmigratereq=1 или eBPF-программа типа BPFSKREUSEPORTSELECTORMIGRATE).
Условия эксплуатации:
- Атакующему нужен только сетевой доступ к любому сервису, принимающему TCP-соединения по IPv4. Аутентификация и участие пользователя не требуются: все происходит на этапе рукопожатия, до передачи соединения приложению.
- Обе стороны гонки создает сам атакующий: он отправляет SYN с опциями, повторный SYN и пакеты завершения соединения. Проигранная гонка лишь срывает рукопожатие, не приводя к сбою системы, поэтому попытки можно повторять неограниченно.
Повторное использование освобожденной памяти позволяет подставить поддельную длину опций, из-за чего ядро копирует в исходящий SYN-ACK содержимое соседней области кучи ядра. Это позволяет раскрыть память и обойти KASLR. Поддельные смещения опций дают запись за границы буфера вплоть до выполнения кода с правами ядра. Обнаружившая сторона сообщила о рабочей цепочке эксплуатации, которая удаленно получает root-оболочку на серверах с открытым MPTCP-слушателем менее чем за час; код эксплойта не опубликован. При этом ошибка не ограничена MPTCP.
Стек IPv6 не затронут. Однако соединения по IPv4 к слушающему сокету IPv6 с двойным стеком (адрес ::, IPv4-mapped адреса) обрабатываются кодом IPv4 и уязвимы наравне с чистым IPv4.
Сведений об эксплуатации в реальных атаках на момент публикации нет; в каталоге CISA KEV уязвимость отсутствует.
Затронутые технологии {#technologies-affected-CVE-2026-98432}
- Ядро Linux, сетевой стек IPv4/TCP: обработка IPv4-опций при установлении соединения, миграция запросов
SO_REUSEPORT. - Любые сервисы, принимающие входящие TCP-соединения по IPv4, в том числе слушатели с двойным стеком IPv6/IPv4 и MPTCP.
Уязвимые продукты и версии {#vulnerable-products-and-versions-CVE-2026-98432}
Уязвимый код присутствует в ядре Linux начиная с версии 4.4 (коммит 079096f103fa, обработка запросов на соединение без блокировки слушающего сокета) во всех ветках до версий с исправлением.
Red Hat Enterprise Linux 7 не затронут.
Разработчик {#vendor-CVE-2026-98432}
Сообщество разработчиков ядра Linux.
Вектор атаки и уровень опасности согласно CVSS v.3.1 {#attack-vector-and-severity-level-CVE-2026-98432}
Базовая оценка: 9,8 CRITICAL (оценка CNA kernel.org; собственной оценки NVD на момент публикации нет).
Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
Рекомендации по обнаружению уязвимости и дополнительные материалы {#recommendations-for-vulnerability-detection-CVE-2026-98432}
Рекомендации актуальны для пользователей, которые самостоятельно администрируют хосты Linux с сервисами, доступными по IPv4: виртуальные машины Yandex Compute Cloud, выделенные хосты BareMetal, собственные узлы и контейнерные платформы.
Проверьте версию ядра {#check-kernel-CVE-2026-98432}
<code>uname -r dpkg -l 'linux-image-*' | grep '^ii' # Debian, Ubuntu rpm -q kernel # RHEL, AlmaLinux</code>
Сравните версию с безопасными версиями стабильных веток ядра из раздела Безопасная версия уязвимого продукта или патч или с версией пакета из бюллетеня безопасности вашего дистрибутива. Вендоры дистрибутивов переносят исправление, сохраняя прежний номер версии ядра, поэтому номер версии сам по себе не подтверждает наличие исправления — сверяйтесь с трекером безопасности дистрибутива.
Оцените доступность хоста {#check-exposure-CVE-2026-98432}
Уязвим любой хост с ядром без исправления, принимающий TCP-соединения по IPv4. Дополнительные проверки показывают, открыты ли на хосте пути, использованные в опубликованной цепочке эксплуатации, и путь через миграцию запросов:
<code>ss -tln # слушающие TCP-сокеты, включая двойной стек (адрес *:порт или [::]:порт) sysctl net.mptcp.enabled # 1 — MPTCP-сокеты разрешены (значение по умолчанию) ss -M -a -n # MPTCP-сокеты; состояние LISTEN — открытый MPTCP-слушатель sysctl net.ipv4.tcp_migrate_req # 1 — включена миграция запросов (по умолчанию 0)</code>
Программы на Go 1.24 и новее по умолчанию открывают MPTCP-слушатели — они видны в выводе ss -M -a -n.
Отключить обработку IPv4-опций средствами sysctl нельзя: параметр acceptsourceroute отбрасывает только опции маршрутизации от источника, а опции Record Route и Timestamp, достаточные для эксплуатации, принимаются всегда.
Примените меры защиты {#mitigation-CVE-2026-98432}
Основная мера — обновление ядра до версии с исправлением или до пакета с исправлением от вендора дистрибутива с последующей перезагрузкой.
До обновления ядра можно закрыть вектор компенсирующей мерой: отбрасывать входящие IPv4-пакеты TCP SYN с IP-опциями, то есть с длиной заголовка больше 20 байт (IHL больше 5). Без опций в SYN структура ireq_opt не создается, и оба уязвимых пути недостижимы. Фильтр в цепочке input срабатывает до передачи пакета в TCP, поэтому меры достаточно на самом хосте; ее же можно применить на сетевом периметре. Для фильтра используется длина заголовка, а не выражение ip option: оно в nftables не поддерживает опцию Timestamp.
nftables:
<code>nft add table inet cve_2026_98432
nft add chain inet cve_2026_98432 input '{ type filter hook input priority -150 ; policy accept ; }'
nft add rule inet cve_2026_98432 input 'ip hdrlength > 5 tcp flags & (syn|ack) == syn counter drop'</code>
iptables:
<code>iptables -I INPUT -p tcp --syn -m u32 --u32 "0>>24&0xF=6:15" -j DROP</code>
Штатные TCP-соединения IPv4-опции не используют, поэтому для подавляющего большинства нагрузок правило безопасно. Если нагрузка опирается на IP-опции в TCP (например, диагностика с Record Route), исключите ее источники из правила. Правила не защищают от атакующего, который уже находится на том же хосте, и не заменяют обновление ядра.
Публикация через Yandex Application Load Balancer. Балансировщик завершает TCP-соединение клиента и устанавливает с бэкендом новое соединение, поэтому SYN-пакеты с IP-опциями до виртуальных машин не доходят. Чтобы мера работала, не назначайте виртуальным машинам публичные IP-адреса и разрешите в группах безопасности входящий трафик только из подсетей балансировщика и от проверок состояния. Так же работают Yandex API Gateway и Yandex Cloud CDN. Yandex Network Load Balancer передает пакеты клиента бэкендам без изменений, поэтому бэкенды за ним защищайте фильтром или обновлением ядра.
Дополнительные меры снижают доступность хоста для атаки, но не закрывают уязвимость:
- Не включайте
net.ipv4.tcpmigratereqи не загружайте eBPF-программыBPFSKREUSEPORTSELECTOR_MIGRATEбез необходимости — это закрывает только второй путь. - Отключите MPTCP (
net.mptcp.enabled=0), если он не используется, — это убирает класс целей из опубликованной цепочки эксплуатации, но ошибка остается в обычном TCP. - В программах на Go 1.24 и новее MPTCP отключается переменной окружения
GODEBUG=multipathtcp=0или директивойgodebug multipathtcp=0вgo.mod; мера ненадежна и, как и отключение MPTCP, не устраняет ошибку в обычном TCP. - Не назначайте виртуальным машинам публичные IP-адреса без необходимости и ограничьте доступ к TCP-сервисам по IPv4 группами безопасности Yandex Virtual Private Cloud.
Дополнительные материалы:
- Рекомендации Go Security Team для программ на Go.
- Страница уязвимости Red Hat.
- Трекер безопасности Debian.
- Страница уязвимости Ubuntu.
Безопасная версия уязвимого продукта или патч {#safe-version-CVE-2026-98432}
Уязвимость устранена коммитом e3f33b0a1d89 («ipv4: free inetopt and ireqopt after an RCU grace period»), включенным в mainline 7.3-rc7, и в стабильных версиях ядра Linux 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56 и 7.2.10.
Исправленные пакеты Debian: bookworm (linux) — 6.1.190-1 (DLA-4841-1); bookworm (linux-6.12) — 6.12.113-1~deb12u1 (DLA-4850-1); trixie (linux) — 6.12.113-1 (DSA-6568-1). Для Ubuntu, Red Hat Enterprise Linux и AlmaLinux сверяйтесь с трекерами безопасности дистрибутивов по ссылкам в разделе Рекомендации по обнаружению уязвимости и дополнительные материалы.
Хронология раскрытия {#disclosure-timeline-CVE-2026-98432}
- 01.10.2026 — исправление направлено в рассылку netdev.
- 05.10.2026 — исправление принято в дерево
net.git. - 11–15.10.2026 — исправление перенесено в стабильные ветки ядра.
- 15.10.2026 — опубликован идентификатор CVE-2026-98432 и запись в NVD.
- 27.10.2026 — обнаружившая сторона опубликовала описание цепочки эксплуатации.
- 29.10.2026 — Go Security Team опубликовала рекомендации для программ на Go с MPTCP.
Влияние на сервисы Yandex Cloud {#impact-on-yandex-cloud-services-CVE-2026-98432}
Базовая инфраструктура Yandex Cloud не подвержена уязвимости. Обновление выполняется в плановом порядке.
В управляемых сервисах применяются компенсирующие меры: на хостах кластеров управляемых баз данных выполняется обновление конфигурации, действий со стороны пользователя не требуется.
Для узлов Managed Service for Kubernetes готовится компенсирующая мера, которую пользователи смогут применить на узлах своих кластеров. До ее публикации рекомендуем ограничить доступ к узлам группами безопасности. Бюллетень будет обновлен после публикации меры.
Публичные образы Yandex Compute Cloud и образы Yandex Cloud Marketplace будут обновлены после выхода исправленных пакетов дистрибутивов.
Виртуальные машины с Linux, выделенные хосты BareMetal и другие ресурсы, развернутые пользователями, могут быть подвержены уязвимости. Рекомендуем обновиться до версии с исправлением: проверить ресурсы можно по разделу Рекомендации по обнаружению уязвимости, а до обновления — применить компенсирующую меру.