
Mitigación provisional de nftables para CVE-2026-98432, reversión automática y guía para administradores en ruso. No es un parche del kernel.
Protección temporal para servidores Linux: filtro TCP IPv4 restrictivo, verificación de estado, copia de seguridad y reversión. La auditoría separa la corrección del kernel del funcionamiento del filtro.
Audit: работающее ядро → пакет → основание → UNKNOWN при нехватке данных
Protection: inet + bridge → строгая проверка → откат через 180 секунд
Validation: обычный TCP / IP options / UDP в отдельном namespace
Monitoring: проверка по таймеру → журнал ошибок, без изменения firewall
Esto no es un parche del kernel ni una garantía de eliminar todas las variantes de explotación. El script instala un filtro de red estrecho para la ruta conocida de IPv4 TCP/IP-options de CVE-2026-98432. La solución definitiva es un kernel con el parche confirmado para esta CVE específica y arrancar con él.
La vigencia de las recomendaciones fue verificada el 1 de noviembre de 2026. Antes de aplicarlas, compruebe el estado actual en el fabricante de su distribución.
En la demostración de Anthropic se utilizó un listener MPTCP. El Go Security Team advierte: el error en sí se encuentra en el código IPv4 TCP común del kernel, por lo que la ausencia de sockets MPTCP no demuestra seguridad. GODEBUG=multipathtcp=0 es una restricción adicional de la ruta de ataque conocida, no un sustituto del parche del kernel.
Este script no modifica MPTCP, no instala actualizaciones, no reinicia aplicaciones ni reinicia el servidor. El filtro funciona también para listeners ya abiertos.
Dos tablas nftables independientes:
inet cve_2026_98432_guard: paquetes IPv4 TCP con longitud de cabecera IP mayor de 20 bytes;bridge cve_2026_98432_guard: paquetes análogos en bridges.El resto del tráfico pasa a las reglas existentes. No hay un flush ruleset completo, las reglas de Docker/Kubernetes/SSH y otros servicios no se reemplazan.
Esto es filtrado de IPv4 options, no de TCP options. Los TCP timestamps habituales, window scaling, SACK y las conexiones SSH/HTTPS estándar no se bloquean por esta condición. El tráfico TCP legítimo con IPv4 options también será descartado: compruebe los requisitos de su red.
Se requieren Linux, root, nft, Python 3.8+, Bash y systemd, y soporte de nftables inet/bridge en el kernel.
El script no habilita el servicio de firewall de la distribución ni instala dependencias.
La comprobación --check detecta la ausencia de las capacidades necesarias antes de la aplicación.
Ejemplo de instalación de la herramienta faltante, si esto corresponde a la política del servidor:
# Debian / Ubuntu:
sudo apt-get install nftables python3
# RHEL / Rocky / AlmaLinux:
sudo dnf install nftables python3
OpenWrt, RouterOS, BSD, Windows, NAS antiguos, contenedores sin root/CAP_NET_ADMIN y sistemas sin systemd no están cubiertos por este instalador. Para ellos se necesitan instrucciones separadas del fabricante. El script no debe considerarse un escáner de vulnerabilidades universal. Para el perfil manual Alpine/WSL, véase la instrucción aparte.
bash mitigate.sh --audit
sudo bash mitigate.sh --audit --json
La auditoría solo lee metadatos y configuraciones. No escanea la red, no ejecuta
exploits, no descarga actualizaciones y no modifica el firewall. Sin root, parte de los resultados
será UNKNOWN. El informe puede contener nombres de interfaces y PID; antes de publicarlo,
anonimícelo.
| Campo JSON | Qué significa |
|---|---|
patch.state | PATCHED, VULNERABLE o UNKNOWN para el kernel en ejecución |
enforcement.enforcement | ACTIVE_VERIFIED solo con coincidencia exacta de ambas tablas |
persistence.state | CONFIGURED — unit habilitado; esto no verifica un reboot real |
coverage.state | PARTIAL_OR_UNKNOWN: namespaces/CNI/NetLabel requieren un análisis aparte |
rollback_timer, monitor_timer | Estado del rollback automático y del control opcional |
schema_version: 1. El código de salida 0 de --audit significa que la recopilación del informe ha finalizado,
no la ausencia de vulnerabilidad. Verifique los campos independientes y reason.
La evaluación de parches compara el kernel en ejecución con el paquete exacto. Los
vendor-baselines integrados fueron verificados el 01.11.2026 solo para Debian 12/13: linux 6.1/6.12
y bookworm linux-6.12. Se basan en el
Debian tracker.
Para las demás ramas, Ubuntu, WSL y distribuciones no verificadas, el resultado sigue siendo
UNKNOWN, y no se deduce del número de uname ni de una sola
mención del CVE en el changelog. Para los vendor trackers conocidos, el informe contiene un enlace.
Esto es confianza en los metadatos del paquete, no una certificación del binario;
los kernels personalizados y livepatch se verifican por separado.
La auditoría está limitada a 32 netns visibles: muestra el número de listeners MPTCP, pero no
demuestra la cobertura de namespaces. CIPSO permanece UNKNOWN si no hay datos
suficientes; la ausencia de netlabelctl no demuestra la ausencia de labeling.
Primero descargue y lea el código. No 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
Al detectar NetLabel/CIPSO o una política MLS, la aplicación se detiene antes de realizar cambios en la instalación. Tras el análisis de compatibilidad, se requiere confirmación explícita del riesgo:
sudo bash mitigate.sh --apply --accept-ipv4-options-risk
Esta flag acepta el riesgo de interrumpir tráfico legítimo con IP options, en lugar de ampliar la protección. Si no se encuentran indicios de labeling, la compatibilidad de todos modos se designa como UNKNOWN.
Tras --apply opera un rollback automático a los 180 segundos. Conserve la terminal actual. Abra una nueva conexión SSH con el servidor y verifique los servicios críticos desde fuera: VPN, sitios, API, correo, intercambio de clúster.
Si todo funciona, desde la nueva conexión:
cd cve-2026-98432-mitigation
sudo bash mitigate.sh --status
sudo bash mitigate.sh --confirm
--confirm cancela el temporizador de reversión. Sin él, la protección se eliminará automáticamente.
Tras la confirmación, systemd cargará el filtro en el próximo arranque del servidor.
No reinicie el servidor antes de la confirmación o de la reversión manual.
Aplique nodo por nodo. Para Kubernetes y clústeres, primero asegúrese de que se mantiene la conectividad y luego pase al siguiente nodo.
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
El contador packets 0 significa ausencia de paquetes coincidentes, no ausencia de protección.
Verificación por separado de los programas que utilizan MPTCP:
sudo ss -Mlnp
No añada -t si desea ver solo MPTCP: esto añadirá sockets TCP normales
a la selección. Incluso una salida vacía de MPTCP no confirma la eliminación de CVE.