
Audita los kernels de Debian/Ubuntu en busca de CVE-2026-98432 y aplica mitigaciones persistentes de nftables y sysctl, luego guía la actualización y la reversión del kernel.
El script comprueba si el kernel está corregido frente a CVE-2026-98432 (use-after-free en el procesamiento de IPv4 TCP, CVSS 9.8). Si el kernel no está corregido, activa de inmediato una protección temporal y ayuda a instalar la actualización del kernel.
La protección reduce el riesgo, pero no elimina la vulnerabilidad. La solución completa es una sola: instalar el kernel corregido y reiniciar. Según la evaluación de Red Hat, el filtrado de paquetes con opciones IP no excluye por completo la explotación.
tcp_v4_syn_recv_sock() pasa ireq_opt al socket hijo sin copiarlo, y inet_sock_destruct() lo libera con un kfree() normal. Un SYN repetido, que en ese momento se procesa en otro núcleo del procesador, accede a memoria ya liberada en ip_options_build().net.ipv4.tcp_migrate_req=1 o el programa BPF BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.ipv4: free inet_opt and ireq_opt after an RCU grace period (e3f33b0a1d89).| Rama stable | Corregido en |
|---|---|
| 5.10 | 5.10.272 |
| 5.15 | 5.15.223 |
| 6.1 | 6.1.190 |
| 6.6 | 6.6.159 |
| 6.12 | 6.12.113 |
| 6.18 | 6.18.56 |
| 7.2 | 7.2.10 |
| mainline | 7.3 |
Estado en las distribuciones a 2 de noviembre de 2026:
linux 6.1.190-1 (DLA-4841-1) y linux-6.12 6.12.113-1~deb12u1 (DLA-4850-1).linux 6.12.113-1 (DSA-6568-1).prerouting con prioridad raw (−300), es decir, antes de que el kernel procese las opciones. Se utiliza nftables y, si no está disponible, iptables con el módulo u32.net.mptcp.enabled = 0. Los sockets MPTCP ya abiertos siguen siendo MPTCP, por lo que el script los enumera para que reinicie esos servicios.net.ipv4.tcp_migrate_req = 0 si el valor era 1.nftables / netfilter-persistent / firewalld y verificación mediante temporizador cada 5 minutos.Si el kernel en ejecución ya está corregido, el script no modifica nada e indica cómo retirar la protección activada previamente.
nftables (recomendado) o iptables. Para la protección permanente se necesita systemd.git clone https://github.com/IgrekLg/cve-2026-98432-mitigation.git
cd cve-2026-98432-mitigation
sudo bash mitigate-cve-2026-98432.sh # аудит, защита, предложение обновить ядро
sudo bash mitigate-cve-2026-98432.sh --status # только посмотреть, ничего не меняя
| Clave | Acción |
|---|---|
--status | Solo mostrar el estado |
--uninstall | Retirar la protección y restaurar los valores originales de sysctl (si el kernel no está corregido, pedirá confirmación) |
-y, --yes | Sin preguntas: instalar la actualización del kernel, confirmar --uninstall |
--no-upgrade | No recurrir a apt: solo auditoría y protección |
--force | Activar la protección incluso si el kernel ya está corregido |
--keep-mptcp | No desactivar MPTCP |
--keep-tcp-migrate | No tocar net.ipv4.tcp_migrate_req |
Si no hay terminal (Ansible, cron, ssh sin -t) y no se especifica --yes, la protección se activa de todos modos y la instalación del kernel se omite con una sugerencia.
| Código | Significado |
|---|---|
| 0 | El kernel en ejecución está corregido o no afectado |
| 3 | El kernel no está corregido, la protección está activa: se requieren actualización y reinicio |
| 4 | El kernel no está corregido, la protección no está activa |
| 1 | Error |
| 2 | Argumentos incorrectos |
Ejemplo para Ansible:
- name: CVE-2026-98432 mitigation
ansible.builtin.script: mitigate-cve-2026-98432.sh --yes
register: cve
failed_when: cve.rc not in [0, 3]
changed_when: false
Las comprobaciones se realizan en orden:
CVE-2026-98432 o el título del commit de corrección, el kernel está corregido.6.1.190-1. La parte upstream de la versión se compara con la tabla anterior. Debian recibe las correcciones mediante actualizaciones stable, y en el changelog no siempre se indica el número de CVE.5.15.0-NNN) no refleja la rama stable, por lo que el kernel se considera corregido solo según el changelog. Sin él, el estado es «corrección no confirmada» y se activa la protección. Adicionalmente se muestra pro fix CVE-2026-98432 --dry-run.uname -r. Los kernels candidatos (-rc) se consideran desconocidos.La tabla de versiones corregidas está integrada en el script (FIXED_IN, datos al 2026-11-02). Para distribuciones derivadas con sus propios kernels (Proxmox, etc.), consulte el boletín del proveedor.
| Ruta | Propósito |
|---|---|
/usr/local/sbin/cve-2026-98432-fw | Asistente: apply / ensure / remove / check |
/etc/cve-2026-98432/mitigation.nft | Regla de nftables (tabla ip cve_2026_98432) |
/etc/systemd/system/cve-2026-98432-mitigation.service | Aplicación de la regla al arrancar, antes de network-pre.target |
/etc/systemd/system/cve-2026-98432-mitigation-check.{service,timer} | Comprobación cada 5 minutos, restaura la regla si alguien la ha eliminado (registro en syslog) |
/etc/systemd/system/{nftables,netfilter-persistent,firewalld}.service.d/50-cve-2026-98432.conf | Reaplicación tras la (re)carga de las reglas por parte de estos servicios; se crean solo para los instalados |
/etc/sysctl.d/99-zz-cve-2026-98432.conf | sysctl; el nombre está elegido para que el archivo se lea después de /etc/sysctl.conf |
/var/lib/cve-2026-98432/sysctl.orig | Valores originales de sysctl para --uninstall |
Los archivos de la versión anterior del script (mitigate-CVE-2026-98432.service, 99-CVE-2026-98432.conf y los duplicados de la regla de iptables) se eliminan automáticamente.