Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cve-2026-98432 — Идемпотентный shell-скрипт, который устанавливает постоянное правило iptables, отбрасывающее IPv4 TCP-пакеты с IP-опциями, для смягчения CVE-2026-98432 на Ubuntu и Debian до выхода исправленного ядра. | Kitploit
Инструменты/GitHubGitHub/mervent/cve-2026-98432
Оборонительные ИнструментыАнализ уязвимостейСкриптинг и автоматизацияАудит конфигурацииСетевая безопасностьНеправильная КонфигурацияРеагирование на Инциденты
GitHubmervent/cve-2026-98432

cve-2026-98432

Идемпотентный shell-скрипт, который устанавливает постоянное правило iptables, отбрасывающее IPv4 TCP-пакеты с IP-опциями, для смягчения CVE-2026-98432 на Ubuntu и Debian до выхода исправленного ядра.

Репозиторий
3 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Временное смягчение CVE-2026-98432 для Ubuntu и Debian

Единый идемпотентный скрипт, который отбрасывает входящие TCP-пакеты IPv4 с IP-опциями, сохраняет правило между перезагрузками и проверяет его работоспособность. Он предназначен для серверов Ubuntu (18.04 – 24.04) и Debian (11 – 13), которые пока не могут получить исправленное ядро.

Это временная мера, а не исправление. Единственное настоящее исправление — пропатченное ядро плюс перезагрузка. Удалите это смягчение, как только сервер будет работать на исправленном ядре.

Использование

curl -fsSL https://raw.githubusercontent.com/Mervent/cve-2026-98432/master/install.sh | sudo sh

Вы можете запускать его любое количество раз: файлы перезаписываются, а правило никогда не дублируется. В конце скрипт проверяет результат и завершается с ненулевым кодом при любой ошибке:

--- validation ---
OK    helper installed: /usr/local/sbin/cve-2026-98432-mitigation
OK    cron entry: /etc/cron.d/cve-2026-98432
OK    cron service enabled
OK    iptables rule active (raw/PREROUTING)
OK    exactly one rule (no duplicates)
      plain SYN: connected, SYN with IP options: timeout
OK    drop test: packets with IP options are dropped
--- rule counters ---
 pkts bytes target     prot opt in     out     source               destination
    3   204 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            u32 "0x0>>0x18&0xf=0x6:0xf" /* cve-2026-98432 */

Что устанавливается

ПутьНазначение
/usr/local/sbin/cve-2026-98432-mitigationВспомогательный скрипт, который содержит правило. Без аргументов добавляет правило, если оно отсутствует. --check завершается с кодом 0, если правило активно. --remove удаляет его.
/etc/cron.d/cve-2026-98432Запись @reboot, которая повторно применяет правило после каждой загрузки

Само правило:

iptables -t raw -I PREROUTING -p tcp -m u32 --u32 "0>>24&0xF=6:15" \
    -m comment --comment cve-2026-98432 -j DROP

Проверка после перезагрузки

sudo /usr/local/sbin/cve-2026-98432-mitigation --check && echo active
sudo iptables -t raw -L PREROUTING -v -n | grep cve-2026-98432

Удаление после загрузки в фиксированное ядро

sudo /usr/local/sbin/cve-2026-98432-mitigation --remove
sudo rm /usr/local/sbin/cve-2026-98432-mitigation /etc/cron.d/cve-2026-98432

Чтобы узнать, выпустил ли ваш дистрибутив исправление, проверьте Ubuntu или Debian (для Debian 9 – 11 — трекер Freexian ELTS). Как только для вашего релиза появится статус "Fixed", выполните apt update && apt full-upgrade, перезагрузитесь, а затем удалите временную меру защиты.

По состоянию на 1 ноября 2026 года Debian 12 (linux 6.1.190-1, DLA-4841-1) и Debian 13 (linux 6.12.113-1, DSA-6568-1) уже имеют исправленные ядра, поэтому на этих релизах выполняйте обновление вместо использования этого скрипта. Исправление для Debian 11 (linux 5.10.272-1, ELA-1846-1) доступно только в репозитории ELTS от Freexian: коммерческом, но бесплатном по запросу для частных лиц и небольших некоммерческих организаций.

Обоснование

Уязвимость

CVE-2026-98432 ("ipv4: free inet_opt and ireq_opt after an RCU grace period") — это use-after-free в рукопожатии IPv4 TCP. Она затрагивает Linux 4.4 и более поздние версии и имеет оценку CVSS 9.8.

Если SYN содержит опции IPv4, ядро сохраняет их в request-сокете, чтобы отразить их в SYN-ACK. Затем tcp_v4_syn_recv_sock() передаёт этот буфер дочернему сокету без копирования. Когда дочерний сокет уничтожается, буфер освобождается обычным kfree(), в то время как другой CPU может всё ещё читать его для формирования SYN-ACK в ответ на повторно переданный SYN.

Всё это происходит в ядре до того, как какое-либо приложение увидит соединение. Любой прослушиваемый порт IPv4 TCP достижим таким образом (SSH, HTTP, PostgreSQL и так далее), и учётные данные не требуются. Anthropic сообщила о работающем эксплойте для удалённого получения root на хостах, имеющих слушатель multipath TCP (MPTCP). Команда безопасности Go отмечает, что ошибка не специфична для MPTCP.

Почему следует отбрасывать TCP-пакеты с опциями IP

Память, которая освобождается слишком рано, существует только тогда, когда входящий SYN содержит опции IPv4. Без опций сохранённого буфера нет, поэтому use-after-free не на что воздействовать. Легитимный трафик TCP практически никогда не содержит опций IPv4, поэтому отбрасывание таких пакетов ничего не стоит на практике. Red Hat (RHSB-2026-016) и AlmaLinux публикуют эквивалентное правило nftables.

u32 "0>>24&0xF=6:15" читает поле IHL — длину заголовка IPv4 в 32-битных словах. Значение 5 — это голый 20-байтовый заголовок. Значения от 6 до 15 означают наличие опций.

Red Hat заявляет, что такое правило "снижает подверженность этой уязвимости, но не может полностью её предотвратить". Рассматривайте его как снижение риска до тех пор, пока ядро не будет исправлено.

Почему raw / PREROUTING

  • PREROUTING видит каждый входящий пакет — как трафик к хосту, так и трафик, перенаправляемый в контейнеры Docker на опубликованных портах. Правило в INPUT, куда ufw помещает свои правила, пропустило бы перенаправляемый трафик.
  • Таблица raw обрабатывается до отслеживания соединений, поэтому отброшенные пакеты никогда не создают записи conntrack.
  • ufw и Docker не очищают raw/PREROUTING, поэтому правило переживает их перезапуски.

Почему iptables, а не nftables

  • iptables присутствует на каждом целевом релизе Ubuntu. На Ubuntu 18.04 и 20.04 он использует legacy backend; начиная с Ubuntu 22.04 и на Debian 11+ это iptables-nft. Бинарный файл nft не установлен по умолчанию везде. В Debian сам iptables может отсутствовать; тогда скрипт попросит вас выполнить apt install iptables.
  • С iptables-nft ufw/Docker и это правило используют общий backend nf_tables, поэтому одно правило покрывает оба.
  • Для сопоставления u32 нужен модуль ядра xt_u32. Если он отсутствует, скрипт завершится с ошибкой и сообщит вам проверить modinfo xt_u32.

Почему запись cron @reboot

  • Не nftables.service. В Ubuntu /etc/nftables.conf начинается с flush ruleset, а служба при остановке выполняет nft flush ruleset. Любое из этих действий стирает правила ufw и Docker.
  • Не iptables-persistent. netfilter-persistent save сохраняет все текущие правила, включая правила Docker, а восстановление этого снимка при загрузке конфликтует с правилами, которые Docker создаёт сам.
  • Не ufw before.rules. Это работает только при включённом ufw, а его цепочки не видят перенаправляемый трафик к контейнерам.
  • cron.d. Он установлен на стандартных серверах Ubuntu и Debian (скрипт проверяет его наличие), файл в /etc/cron.d идемпотентен за счёт перезаписи, а его удаление — это один rm. Компромисс — окно в несколько секунд после загрузки, когда сеть уже работает, но cron ещё не применил правило. Это приемлемо для меры смягчения, которая должна действовать лишь до следующего обновления ядра.

Почему не просто net.mptcp.enabled=0

Отключение MPTCP устраняет предусловие единственного опубликованного эксплойта, но не саму уязвимость. Обычные TCP-слушатели всё равно проходят через тот же уязвимый код. На сервере без слушателей MPTCP (ss -Mlnp ничего не выводит) sysctl вообще ничего не меняет. Это безвредное дополнение, а не замена этому правилу.

Проверка

Скрипт проверяет, что вспомогательный скрипт и запись в cron установлены, что cron включён и что активно ровно одно правило. Затем он запускает сквозной тест отбрасывания с помощью python3, пропускаемый, если python3 отсутствует:

Скачать инструмент