
Проверка Linux-сервера на наличие CVE-2026-98432 (use-after-free в IPv4 TCP, CVSS 9.8): объяснение первопричины, скрипт проверки только для чтения и меры по устранению.
Разберитесь и проверьте CVE-2026-98432 — состояние гонки в рукопожатии IPv4 TCP ядра Linux, которое позволяет удалённому атакующему использовать освобождённую память ядра. Frontier Red Team компании Anthropic превратила её в zero-click эксплойт для получения root-доступа на серверах с прослушивателем multipath TCP (MPTCP). По состоянию на 30 октября 2026 года в Ubuntu и Red Hat ещё нет исправленного ядра.
Вместо этого вставьте вывод команды в браузер: https://fbuff.com/tools/cve-2026-98432-checker/ (работает локально, ничего не загружается)
Каждое TCP-соединение начинается с рукопожатия: клиент отправляет SYN, сервер отвечает SYN-ACK, клиент отвечает ACK. Между SYN и ACK ядро хранит небольшой заполнитель для полуоткрытого соединения — request socket. Если SYN клиента содержал опции IPv4 (Record Route, Timestamp и подобные), ядро хранит их вместе с заполнителем (ireq_opt), поскольку SYN-ACK должен вернуть их обратно.
Когда приходит ACK, tcp_v4_syn_recv_sock() превращает заполнитель в полноценный сокет и передаёт ему тот же блок опций вместо копии. Теперь два объекта указывают на один блок памяти. Когда полноценный сокет уничтожается, inet_sock_destruct() освобождает этот блок сразу с помощью обычного kfree().
Заполнитель находится в хеш-таблице установленных соединений, которую другие CPU читают без блокировки (этот дизайн появился с коммитом 079096f103fa, "tcp/dccp: install syn_recv requests into ehash table", Linux 4.4, 2015). Если клиент повторно отправит свой SYN в нужный момент, другой CPU будет повторно отправлять SYN-ACK и прочитает опции в ip_options_build(), пока блок освобождается: use-after-free.
Представьте гардероб, который выдаёт один и тот же номерок двум людям. Когда один уходит, служитель выбрасывает номерок, пока другой ещё идёт с ним к стойке.
Исправление (upstream-коммит e3f33b0a1d89, "ipv4: free inet_opt and ireq_opt after an RCU grace period", 7.3-rc7) освобождает блок с помощью kfree_rcu(), который ждёт, пока каждый CPU закончит чтение. IPv6 не затронут основной проблемой, поскольку tcp_v6_syn_recv_sock() копирует опции. Существует второй путь к той же памяти через миграцию запросов (net.ipv4.tcp_migrate_req=1 или программа BPF_SK_REUSEPORT_SELECT_OR_MIGRATE).
| Оценщик | Оценка | Примечание |
|---|---|---|
| Команда CVE ядра Linux (CNA) | 9.8 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Red Hat | 8.1 | AC:H: гонку трудно выиграть (предварительно) |
| Ubuntu | 9.8, приоритет High |
MPTCP позволяет одному соединению использовать несколько путей одновременно. В Linux это включается опционально: программа должна запросить MPTCP-сокет, а ss -Mltn перечисляет прослушивающие. Эксплойт Anthropic нацелен на «серверы Linux с прослушивателем multipath TCP». Ни запись CVE, ни исправление не упоминают MPTCP, и Anthropic не сообщила, можно ли захватить серверы без него. Прослушиватель MPTCP — это доказанный путь к root; на каждом неисправленном сервере по-прежнему выполняется уязвимый код.
| Дистрибутив | Статус |
|---|---|
| Debian 12 bookworm | Исправлено: linux 6.1.190-1 (DLA-4841-1), linux-6.12 6.12.113-1~deb12u1 |
| Debian 13 trixie | Исправлено: linux 6.12.113-1 (DSA-6568-1) |
| Ubuntu 22.04, 24.04, 26.04, 26.10 | Уязвим, исправление в работе |
| Ubuntu 16.04, 18.04, 20.04 | Уязвим |
| Ubuntu 14.04 | Не затронут |
| Red Hat Enterprise Linux | Затронут; Red Hat заявляет, что ни одна мера смягчения не соответствует её критериям |
| Upstream stable | Исправлено в 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 и 7.3 |
curl -fsSLO https://raw.githubusercontent.com/fbuff-tools/cve-2026-98432-checker/main/check.sh
sh check.sh
Скрипт читает uname -r, /etc/os-release, журнал изменений пакета ядра (rpm -q --changelog или apt changelog, для которого нужна сеть), sysctl net.mptcp.enabled net.ipv4.tcp_migrate_req и ss -Mltn. Он выводит вердикт и завершается с кодом 0 (исправлено или не затронуто), 1 (уязвимо) или 2 (не удалось определить). Он только читает; ничего не отправляется и не изменяется. Запускайте его на хосте: контейнеры используют ядро хоста.
Ядра дистрибутивов, такие как 6.8.0-85 в Ubuntu или 5.14.0-570 в RHEL, переносят исправления без изменения номера версии, поэтому определить это может только их журнал изменений. Версии в стиле upstream (6.12.113+deb13) сравниваются с исправленными выпусками, указанными выше.
sudo apt update && sudo apt full-upgrade # Debian, Ubuntu
sudo dnf upgrade kernel # RHEL family, Amazon Linux 2023
sudo zypper patch # SUSE
sudo reboot
sudo sysctl -w net.mptcp.enabled=0
sudo sysctl -w net.ipv4.tcp_migrate_req=0
printf 'net.mptcp.enabled = 0\nnet.ipv4.tcp_migrate_req = 0\n' | sudo tee /etc/sysctl.d/90-cve-2026-98432.conf
ip_options_build или ip_build_and_send_pkt (journalctl -k), либо всплески SYN с опциями IPv4 из одного источника.Ни один из шагов 2–4 не заменяет патч, и ни один производитель не подтвердил их как полноценный обходной путь.
Связанное: KSMBD checker, HTTP2Shell checker, PHP2Shell checker.
Информация по состоянию на 30 октября 2026 года; статус исправлений меняется быстро, поэтому проверяйте трекер вашего производителя. Лицензия MIT. Сделано fbuff.