
Descarta los paquetes TCP IPv4 entrantes cuyo encabezado IP contenga opciones.
Descarta los paquetes TCP IPv4 entrantes cuyo encabezado IP contiene opciones.
Una solución provisional pequeña y reversible con iptables para CVE-2026-98432.
Descarta los paquetes TCP IPv4 que contienen opciones IP en el espacio de nombres de red actual. Incluye una salida de estado clara, comandos de aplicación/eliminación repetibles, un inventario de solo lectura, un servicio systemd opcional y una comprobación de conexión independiente.
Versión: 1.0.0 · Fecha de revisión: 30 de octubre de 2026 · Requiere: Linux + Bash + iptables
Esto es un filtrado comunitario, no una corrección del kernel ni una solución alternativa completa certificada por el proveedor. La presencia de una regla no demuestra resistencia a la explotación. Instale un kernel corregido por el proveedor y arranque con él, o utilice un livepatch compatible que cubra explícitamente esta CVE.
Extraiga el ZIP, abra una terminal en este directorio y luego:
# 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
Mantén tu sesión SSH abierta y confirma que una segunda conexión SSH y tus servicios habituales siguen funcionando. Los clientes que requieren opciones de IP IPv4 pueden verse afectados.
Deshacer:
sudo bash paranoid-cve98432.sh remove
Solo se eliminan las reglas etiquetadas exactas de esta herramienta. Las demás reglas del firewall y todos los ajustes de sysctl se conservan. Las reglas que instaló antes a mano, incluida la regla sin etiquetar de nuestra conversación, no se eliminan ni se adoptan.
| Dependencia | Propósito |
|---|---|
| Bash | Entorno de ejecución del script |
iptables con la tabla IPv4 raw, coincidencias u32 y comment | Filtrado de paquetes |
Root y CAP_NET_ADMIN | Aplicar, consultar estado y eliminar |
flock, stat, mkdir | Serializar cambios usando un directorio privado bajo /run |
iproute2 (ss) | Inventario opcional de listeners |
| Python 3.8+ | Ayudante de verificación opcional |
| Python 3.9+ | Suite de pruebas sin conexión |
| systemd | Solo para persistencia opcional en el arranque |
Paquetes típicos en Ubuntu/Debian:
sudo apt install iptables util-linux iproute2 python3
En sistemas de la familia RHEL, el paquete que proporciona el comando iptables varía según
la versión. Compruebe dnf provides '*/iptables'. Esta herramienta no instala paquetes
ni cambia el backend de iptables seleccionado.
Algunas instalaciones de iptables-nft no admiten u32 en su configuración actual.
Si la inserción falla, la herramienta informa de un error y revierte sus nuevas reglas.
No cambie a ciegas los backends de firewall en un servidor en producción; utilice un equivalente
nativo de nftables integrado con su firewall existente.
Estas reglas exactas, con un comentario usado para identificarlas:
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
El primer byte de una cabecera IPv4 contiene la versión y la Longitud de Cabecera de Internet (IHL). Cinco palabras de 32 bits es una cabecera normal de 20 bytes. IHL 6–15 significa que hay opciones IP. u32 lee ese campo directamente.
PREROUTING filtra el tráfico TCP IPv4 entrante antes de la entrega a los listeners.OUTPUT también filtra el tráfico generado localmente, incluidos los intentos de alcanzar listeners locales. También puede descartar respuestas salientes que transportan opciones IP.Estas son opciones IP de IPv4, un campo de cabecera distinto de las opciones TCP. El tráfico normal SSH, HTTPS y otro tráfico sin opciones IP queda fuera de la coincidencia.
Aplicar dos veces no añade más copias. Si la segunda inserción falla, solo se revierten las reglas intentadas por esa invocación; las reglas exactas preexistentes se conservan. remove también limpia los duplicados de las reglas exactas de esta herramienta. Las invocaciones concurrentes de esta herramienta se serializan. Un gestor de firewall no relacionado aún puede cambiar las reglas al mismo tiempo.
El aviso upstream describe un use-after-free de las opciones de solicitud/socket IPv4 mientras se construye un SYN-ACK o se migra una solicitud. La corrección cambia dos destructores para diferir la liberación a través de RCU.
Filtrar los paquetes entrantes con opciones IP evita que las opciones habituales suministradas por el paquete lleguen a TCP en las rutas cubiertas por estos hooks. Esa es la base de esta solución provisional. Es una mitigación basada en análisis, no una reproducción de un exploit completo ni una garantía contra todas las rutas hacia el código vulnerable.
Compruebe estos límites:
| Situación | Límite / acción |
|---|---|
| Contenedores, network namespaces, VPN namespaces | Las reglas son por namespace. Las reglas del host no cubren el tráfico confinado a otro namespace. Inspeccione y aplique dentro de cada namespace relevante. Los contenedores comparten el kernel del host. |
| Linux bridges / reenvío de capa 2 | Estas reglas IPv4 no son una política de bridge completa. Asegúrese de que los namespaces de destino estén cubiertos; use reglas de la familia bridge si esa ruta de reenvío necesita filtrado. |
| Túneles | Confirme el filtrado en la ruta IPv4 interna decodificada. Un paquete externo cifrado no expone las opciones IP internas al filtro externo. |
| NetLabel / CIPSO con SELinux o Smack | CIPSO puede poblar las opciones de solicitud a través de una ruta de etiquetado del kernel. No trate el filtrado de cabeceras de entrada como cobertura para esa ruta. Que SELinux esté habilitado por sí solo no demuestra que CIPSO esté configurado. |
| Sockets existentes o solicitudes pendientes | Añadir un filtro no es una limpieza ni un parche de objetos del kernel ya creados. |
| Recargas del firewall | Una recarga, restauración, orquestador de contenedores o administrador puede eliminar/reordenar las reglas. Vuelva a comprobar el estado y reaplique. |
| Reglas de terminación previas en la tabla raw | Las nuevas reglas se colocan en la posición 1, pero cambios posteriores de reglas pueden colocar una regla de terminación delante de ellas. Inspeccione el orden. |
| Un cliente que requiere opciones IP | Sus conexiones pueden dejar de funcionar. Esto incluye despliegues especializados de etiquetado de seguridad. |
| IPv6 | Estas reglas no filtran IPv6 ni abordan los problemas de migración IPv6/CALIPSO rastreados por separado. |
No hay ninguna afirmación automática de que el kernel esté parcheado basada en una cadena de versión, una mención en el changelog, una salida vacía de listeners o un contador de paquetes a cero. Los kernels de proveedores aplican backports de correcciones y tienen variantes separadas generic, cloud, HWE y otras. Un kernel nuevo instalado no es necesariamente el kernel en ejecución.