
Mitigação interina de nftables para CVE-2026-98432, reversão automática e guia do administrador em russo. Não é um patch de kernel.
Proteção temporária para servidores Linux: filtro TCP IPv4 restrito, verificação de estado, backup e reversão. A auditoria separa a correção do kernel do funcionamento do filtro.
Audit: работающее ядро → пакет → основание → UNKNOWN при нехватке данных
Protection: inet + bridge → строгая проверка → откат через 180 секунд
Validation: обычный TCP / IP options / UDP в отдельном namespace
Monitoring: проверка по таймеру → журнал ошибок, без изменения firewall
Isto não é um patch de kernel nem uma garantia de eliminação de todas as variantes de exploração. O script instala um filtro de rede restrito para o caminho conhecido de IPv4 TCP/IP-options da CVE-2026-98432. A correção definitiva é um kernel com a correção confirmada especificamente para esta CVE e a inicialização nele.
A atualidade das recomendações foi verificada em 1 de novembro de 2026. Antes de aplicar, verifique o status atual junto ao fabricante da sua distribuição.
Na demonstração da Anthropic foi utilizado um listener MPTCP. A Go Security Team adverte: o erro em si está no código IPv4 TCP comum do kernel, portanto a ausência de sockets MPTCP não prova segurança. GODEBUG=multipathtcp=0 é uma restrição adicional do caminho de ataque conhecido, e não um substituto para a correção do kernel.
Este script não altera o MPTCP, não instala atualizações, não reinicia aplicações e não reinicia o servidor. O filtro funciona também para listeners já abertos.
Duas tabelas nftables separadas:
inet cve_2026_98432_guard: pacotes IPv4 TCP com comprimento do cabeçalho IP maior que 20 bytes;bridge cve_2026_98432_guard: pacotes análogos em bridges.O restante do tráfego segue adiante para as regras existentes. Não há flush ruleset completo, as regras de Docker/Kubernetes/SSH e de outros serviços não são substituídas.
Esta é uma filtragem de IPv4 options, e não de TCP options. TCP timestamps comuns, window scaling, SACK e conexões SSH/HTTPS padrão não são bloqueados por esta condição. Tráfego TCP legítimo com IPv4 options também será descartado: verifique os requisitos da sua rede.
São necessários Linux, root, nft, Python 3.8+, Bash e systemd e suporte a nftables inet/bridge no kernel.
O script não habilita o serviço de firewall da distribuição e não instala dependências.
A verificação --check detecta a ausência dos recursos necessários antes da aplicação.
Exemplo de instalação da ferramenta ausente, se isso estiver de acordo com a política do servidor:
# Debian / Ubuntu:
sudo apt-get install nftables python3
# RHEL / Rocky / AlmaLinux:
sudo dnf install nftables python3
OpenWrt, RouterOS, BSD, Windows, NAS antigos, contêineres sem root/CAP_NET_ADMIN e sistemas sem systemd não são atendidos por este instalador. Para eles são necessárias instruções separadas do fabricante. O script não pode ser considerado um scanner universal de vulnerabilidades. Para o perfil manual Alpine/WSL, consulte instrução separada.
bash mitigate.sh --audit
sudo bash mitigate.sh --audit --json
Аудит apenas lê metadados e configurações. Ele não varre a rede, não executa
exploit, não baixa atualizações e não altera o firewall. Sem root, parte dos resultados
será UNKNOWN. O relatório pode conter nomes de interfaces e PIDs; antes de publicar,
anonimize-o.
| Campo JSON | O que significa |
|---|---|
patch.state | PATCHED, VULNERABLE ou UNKNOWN para o kernel em execução |
enforcement.enforcement | ACTIVE_VERIFIED apenas com correspondência exata de ambas as tabelas |
persistence.state | CONFIGURED — unit habilitado; o reboot real não é verificado por isso |
coverage.state | PARTIAL_OR_UNKNOWN: namespaces/CNI/NetLabel exigem análise separada |
rollback_timer, monitor_timer | Estado do rollback automático e do monitoramento opcional |
schema_version: 1. O código de saída 0 em --audit significa que a coleta do relatório foi concluída,
não a ausência de vulnerabilidade. Verifique campos independentes e reason.
A avaliação de patch compara o kernel em execução com o pacote exato. As vendor-baselines
integradas foram verificadas em 01.11.2026 apenas para Debian 12/13: linux 6.1/6.12
e bookworm linux-6.12. Elas se baseiam no
Debian tracker.
Para as demais branches, Ubuntu, WSL e distribuições não verificadas, o resultado permanece
UNKNOWN, e não é inferido a partir do número de uname ou de uma única
menção da CVE no changelog. Para vendor trackers conhecidos, o relatório contém um link.
Isso é confiança nos metadados do pacote, não atestação do binário;
kernels customizados e livepatch são verificados separadamente.
O audit é limitado a 32 netns visíveis: mostra o número de listeners MPTCP, mas não
comprova a cobertura de namespaces. O CIPSO permanece UNKNOWN se não houver dados
suficientes; a ausência de netlabelctl não comprova a ausência de labeling.
Primeiro baixe e leia o código. Não use curl | sudo bash.
git clone https://github.com/ZombiePm/cve-2026-98432-mitigation.git
cd cve-2026-98432-mitigation
less mitigate.sh
sudo bash mitigate.sh --check
sudo bash mitigate.sh --apply
Ao detectar NetLabel/CIPSO ou política MLS, a aplicação é interrompida antes das alterações de instalação. Após a análise de compatibilidade, é necessária confirmação explícita do risco:
sudo bash mitigate.sh --apply --accept-ipv4-options-risk
Este flag aceita o risco de interromper tráfego legítimo com IP options, em vez de
ampliar a proteção. Se não forem encontrados indícios de labeling, a compatibilidade ainda é
indicada como UNKNOWN.
Após --apply, entra em vigor um rollback automático após 180 segundos.
Mantenha o terminal atual. Abra uma nova conexão SSH com o servidor e verifique
os serviços críticos externamente: VPN, sites, API, e-mail, comunicação de cluster.
Se tudo estiver funcionando, a partir da nova conexão:
cd cve-2026-98432-mitigation
sudo bash mitigate.sh --status
sudo bash mitigate.sh --confirm
--confirm cancela o temporizador de reversão. Sem ele, a proteção será removida automaticamente.
Após a confirmação, o systemd carregará o filtro na próxima inicialização do servidor.
Não reinicie o servidor antes da confirmação ou da reversão manual.
Aplique em um nó por vez. Para Kubernetes e clusters, primeiro certifique-se de que a conectividade seja preservada, depois passe para o próximo nó.
sudo bash mitigate.sh --status
sudo nft list table inet cve_2026_98432_guard
sudo nft list table bridge cve_2026_98432_guard
systemctl status cve-2026-98432-guard.service
journalctl -u cve-2026-98432-guard.service --no-pager
O contador packets 0 significa ausência de pacotes correspondentes, e não ausência de proteção.
Verificação separada dos programas que utilizam MPTCP:
sudo ss -Mlnp
Não adicione -t se quiser ver apenas MPTCP: isso adicionará sockets TCP comuns
à seleção. Mesmo uma saída MPTCP vazia não confirma a eliminação da CVE.
Após a reinicialização e quaisquer alterações/recarregamentos do firewall, repita --status.
Outro administrador ou gerenciador de firewall executando um flush ruleset completo
pode remover essas tabelas. Nesse caso, primeiro resolva a configuração
de controle; para recarregar o filtro salvo: