
Отбрасывать входящие IPv4 TCP-пакеты, IP-заголовок которых содержит параметры.
Отбрасывать входящие IPv4 TCP-пакеты, IP-заголовок которых содержит параметры.
Небольшая обратимая временная мера на iptables для CVE-2026-98432.
Отбрасывает IPv4 TCP-пакеты, содержащие IP-параметры, в текущем сетевом пространстве имён. Включает понятный вывод состояния, повторяемые команды применения/удаления, доступный только для чтения список, опциональную службу systemd и отдельную проверку соединения.
Версия: 1.0.0 · Дата проверки: 30 октября 2026 г. · Требуется: Linux + Bash + iptables
Это общественное фильтрование, а не исправление ядра и не сертифицированный производителем полный обходной путь. Наличие правила не доказывает устойчивость к эксплойту. Установите исправленное производителем ядро и загрузитесь в него либо используйте поддерживаемый livepatch, который явно покрывает данную CVE.
Распакуйте ZIP-архив, откройте терминал в этом каталоге, затем:
# Read-only inventory; no root required, although visibility may be limited.
bash paranoid-cve98432.sh audit
# Preview the firewall commands; no changes, no root required.
bash paranoid-cve98432.sh apply --dry-run
# Apply the two runtime rules.
sudo bash paranoid-cve98432.sh apply
# Check exact rules and packet counters.
sudo bash paranoid-cve98432.sh status
Оставьте сеанс SSH открытым и убедитесь, что второе SSH-подключение и ваши обычные сервисы по-прежнему работают. Клиенты, которым требуются параметры IP-адреса IPv4, могут быть затронуты.
Отмена:
sudo bash paranoid-cve98432.sh remove
Удаляются только точные правила с меткой этого инструмента. Остальные правила брандмауэра и все настройки sysctl сохраняются. Правила, установленные вами ранее вручную, включая правило без метки из нашего разговора, не удаляются и не присваиваются.
| Зависимость | Назначение |
|---|---|
| Bash | Среда выполнения скрипта |
iptables с таблицей IPv4 raw, совпадениями u32 и comment | Фильтрация пакетов |
Root и CAP_NET_ADMIN | Применение, проверка статуса и удаление |
flock, stat, mkdir | Сериализация изменений с использованием приватного каталога в /run |
iproute2 (ss) | Необязательный перечень слушателей |
| Python 3.8+ | Необязательный помощник для проверки |
| Python 3.9+ | Автономный набор тестов |
| systemd | Только для необязательного сохранения при загрузке |
Типичные пакеты в Ubuntu/Debian:
sudo apt install iptables util-linux iproute2 python3
В системах семейства RHEL пакет, предоставляющий команду iptables, зависит от
версии. Проверьте dnf provides '*/iptables'. Этот инструмент не устанавливает пакеты
и не изменяет выбранный бэкенд iptables.
Некоторые установки iptables-nft не поддерживают u32 в текущей конфигурации.
Если вставка не удаётся, инструмент сообщает об ошибке и откатывает свои новые правила.
Не переключайте бэкенды межсетевого экрана вслепую на работающем сервере; используйте
нативный эквивалент nftables, интегрированный с вашим существующим межсетевым экраном.
Эти точные правила, с комментарием, используемым для их идентификации:
iptables -w 10 -t raw -I PREROUTING 1 -p tcp \
-m u32 --u32 '0>>24&0x0F=6:15' \
-m comment --comment 'cve98432-guard:v1' -j DROP
iptables -w 10 -t raw -I OUTPUT 1 -p tcp \
-m u32 --u32 '0>>24&0x0F=6:15' \
-m comment --comment 'cve98432-guard:v1' -j DROP
Первый байт заголовка IPv4 содержит версию и длину заголовка
Internet Header Length (IHL). Пять 32-битных слов — это обычный 20-байтовый
заголовок. IHL 6–15 означает наличие IP-опций. u32 читает это поле
напрямую.
PREROUTING фильтрует входящий IPv4 TCP-трафик до доставки слушателям.OUTPUT также фильтрует локально сгенерированный трафик, включая попытки
достичь локальных слушателей. Он также может отбрасывать исходящие ответы,
содержащие IP-опции.Это IP-опции IPv4 — поле заголовка, отличное от TCP-опций. Обычный SSH, HTTPS и другой трафик без IP-опций не попадает под совпадение.
Повторное применение не добавляет дополнительные копии. Если вторая вставка
не удалась, откатываются только правила, добавленные этим вызовом;
ранее существовавшие точные правила сохраняются. remove также удаляет
дубликаты точных правил этого инструмента. Параллельные вызовы этого
инструмента сериализуются. Несвязанный менеджер межсетевого экрана всё равно
может изменить правила одновременно.
В исходном уведомлении описывается use-after-free для опций запроса/сокета IPv4 во время построения SYN-ACK или миграции запроса. Исправление изменяет два деструктора, чтобы отложить освобождение через RCU.
Фильтрация входящих пакетов с IP-опциями предотвращает попадание обычных опций, поставляемых пакетом, в TCP на путях, охватываемых этими хуками. Это основа данной временной меры. Это митигация на основе анализа, а не воспроизведение полного эксплойта и не гарантия против любого пути в уязвимый код.
Проверьте следующие ограничения:
| Ситуация | Ограничение / действие |
|---|---|
| Контейнеры, сетевые пространства имён, пространства имён VPN | Правила действуют в пределах пространства имён. Правила хоста не покрывают трафик, ограниченный другим пространством имён. Проверяйте и применяйте внутри каждого соответствующего пространства имён. Контейнеры используют общее ядро хоста. |
| Linux-мосты / коммутация уровня 2 | Эти правила IPv4 не являются полной политикой моста. Убедитесь, что целевые пространства имён охвачены; используйте правила семейства bridge, если этот путь пересылки требует фильтрации. |
| Туннели | Подтвердите фильтрацию на декодированном внутреннем пути IPv4. Зашифрованный внешний пакет не раскрывает внутренние IP-опции внешнему фильтру. |
| NetLabel / CIPSO с SELinux или Smack | CIPSO может заполнять опции запроса через путь маркировки ядра. Не считайте фильтрацию заголовков на входе покрытием для этого пути. Включённый SELinux сам по себе не доказывает, что CIPSO настроен. |
| Существующие сокеты или ожидающие запросы | Добавление фильтра не является очисткой или исправлением уже созданных объектов ядра. |
| Перезагрузки межсетевого экрана | Перезагрузка, восстановление, оркестратор контейнеров или администратор могут удалить/переупорядочить правила. Перепроверьте статус и примените повторно. |
| Более ранние терминирующие правила в таблице raw | Новые правила добавляются на позицию 1, но последующие изменения правил могут поместить терминирующее правило перед ними. Проверьте порядок. |
| Клиент, которому требуются IP-опции | Его соединения могут перестать работать. Это включает специализированные развёртывания с маркировкой безопасности. |
| IPv6 | Эти правила не фильтруют IPv6 и не решают отдельно отслеживаемые проблемы миграции IPv6/CALIPSO. |
Нет автоматического утверждения, что ядро пропатчено, на основании строки версии, упоминания в changelog, пустого вывода слушателей или нулевого счётчика пакетов. Ядра вендоров бэкпортируют исправления и имеют отдельные варианты generic, cloud, HWE и другие. Установленное новое ядро не обязательно является работающим ядром.
Отчёт Anthropic от 27 октября описывает удалённый root-эксплойт против сервера с MPTCP-слушателем. В исходном уведомлении описывается гонка IPv4 TCP, не ограниченная MPTCP. Оба факта важны.
Если вашим приложениям не нужен MPTCP, вы можете отдельно отключить новые MPTCP-сокеты:
# Record the current value before changing it.
sysctl net.mptcp.enabled
sudo sysctl -w net.mptcp.enabled=0