Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2026-98432-audit — Script de auditoría bash de solo lectura que clasifica CVE-2026-98432, un use-after-free en IPv4 TCP del kernel de Linux, mediante la revisión de registros de cambios del kernel, matrices de corrección de distribuciones y la exposición de escuchas TCP. | Kitploit
Herramientas/GitHubGitHub/quaerendir/cve-2026-98432-audit
Herramientas DefensivasEscáneres de VulnerabilidadesAnálisis de VulnerabilidadesScripting y AutomatizaciónAuditoría de ConfiguraciónRecopilación de InformaciónRespuesta a Incidentes

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
GitHub
quaerendir/cve-2026-98432-audit

cve-2026-98432-audit

Script de auditoría bash de solo lectura que clasifica CVE-2026-98432, un use-after-free en IPv4 TCP del kernel de Linux, mediante la revisión de registros de cambios del kernel, matrices de corrección de distribuciones y la exposición de escuchas TCP.

Ver Repositorio
113hace 6 díasAún no revisado
Compartir

cve-2026-98432-audit

CVE Class CVSS Disclosed Shell License Version CI

Script de auditoría de solo lectura para CVE-2026-98432, un use-after-free en el handshake TCP IPv4 del kernel de Linux. Un SYN-ACK puede construirse a partir de opciones IP que otra CPU acaba de liberar. El disparador es tráfico de red contra un socket en escucha ordinario, por lo que, a diferencia de los fallos de page-cache y checksum de las auditorías hermanas, no requiere acceso local.

TL;DR

Cuando una conexión se completa, tcp_v4_syn_recv_sock() entrega las opciones IP del request socket (ireq->ireq_opt) al nuevo socket hijo sin copiarlas. Un SYN retransmitido para el mismo request socket, procesado en otra CPU, puede seguir construyendo un SYN-ACK a partir de esas opciones. Dado que 079096f103fa (4.4) los request sockets funcionan sin el lock del listener, las opciones del hijo se liberan con un kfree() simple, y ip_options_build() lee memoria liberada (CWE-416).

Existe una segunda carrera en la migración de request sockets, que solo está activa con net.ipv4.tcp_migrate_req=1 o con un programa BPF SK_REUSEPORT_SELECT_OR_MIGRATE. La corrección cambia ambas liberaciones a kfree_rcu().

CVECVE-2026-98432
ComponenteKernel de Linux net/ipv4 (tcp_v4_syn_recv_sock, inet_sock_destruct, tcp_v4_reqsk_destructor)
ClaseUse-after-free, alcanzable remotamente a través de un socket TCP en escucha
Introducido079096f103fa "tcp/dccp: install syn_recv requests into ehash table" (4.4); parte de migración c905dee62232
Corrección upstreame3f33b0a1d89 "ipv4: free inet_opt and ireq_opt after an RCU grace period" (Eric Dumazet), en 7.3-rc7
Correcciones estables5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10
ReporteroXinyang Ge
GravedadCNA: 9.8 (AC:L). Red Hat: 8.1 (AC:H, debido a la carrera), sin mitigación disponible. Ubuntu: Alta
Debianbookworm corregido en 6.1.190-1, trixie en 6.12.113-1, forky 7.2.12-1
Ubuntucorrección en curso para todas las versiones, ninguna publicada aún
Red Hatno se ha publicado tabla de productos afectados ni erratum

Las versiones estables se verificaron contra los archivos ChangeLog-* de kernel.org el 2026-10-29. En cada rama, la versión listada es la primera que incluye la corrección y la versión anterior carece de ella. La línea principal se verificó comparando etiquetas: 7.3-rc6 carece del commit y 7.3-rc7 lo tiene. Las series que no tienen fila de corrección (4.x, 5.4, 6.2–6.5, 6.7–6.11, 6.13–6.17, 6.19, 7.0, 7.1) están al final de su vida útil y se reportan como vulnerables. Los estados de las distribuciones corresponden a la misma fecha.

El fallo requiere un socket TCP en escucha y un SYN que transporte opciones IP, además de una carrera perdida entre dos CPU. El script no puede determinar hasta qué punto tu red hace alcanzables esas opciones, por lo que informa de lo que puede ver (listeners) y deja el resto a tu criterio.

Qué hace este script

Solo hace triaje y no cambia nada. Nunca carga un módulo, nunca abre un socket, nunca toca sysctl ni reglas de firewall, y nunca ejecuta un PoC, por lo que es seguro ejecutarlo en producción.

  • Inventaría el kernel en ejecución, la distro y el paquete del kernel en ejecución.
  • Detección de correcciones que no queda desactualizada: busca en el changelog del paquete del kernel en ejecución (changelog.Debian.gz o rpm -q --changelog) el ID de CVE o el asunto del commit upstream. Una corrección encontrada allí siempre prevalece.
  • Utiliza una matriz de correcciones por distro (Debian, Ubuntu, familia RHEL, Proxmox, Oracle UEK) y los umbrales upstream verificados para los kernels que siguen upstream (familia Arch, Fedora, WSL2, vanilla).
  • Enumera los listeners TCP de este espacio de nombres de red a partir de /proc/net/tcp y /proc/net/tcp6:
    • external: un listener IPv4 en cualquier dirección que no sea loopback, o un listener comodín IPv6, que acepta SYN de IPv4 a menos que net.ipv6.bindv6only=1;
    • solo loopback: accesible por todos los usuarios locales, que pueden establecer opciones IP en su propia conexión;
    • el mismo puerto en varias direcciones se cuenta una sola vez.
  • Lee net.ipv4.tcp_migrate_req y anota los runtimes de contenedores, cuyos puertos publicados y espacios de nombres de red privados no puede ver. Cuentan como exposición.
  • Busca con grep en el journal del kernel las líneas de oops que nombran las funciones de la cadena de llamadas del bug. Una coincidencia es una pista para leer, no una prueba, y un exploit limpio no deja nada.
  • Calcula una puntuación de riesgo e imprime un veredicto, además de JSON con --json.

Frescura de la matriz

Las filas de distros son una instantánea (2026-10-29). Los proveedores publicarán correcciones después de esa fecha, por lo que una copia antigua puede informar "corrección en curso" para un kernel que lleva mucho tiempo parcheado. El informe imprime la antigüedad de la instantánea y advierte una vez que supera los 14 días. La advertencia nunca cambia el veredicto, y la comprobación del changelog y los umbrales upstream no envejecen. Con --quiet, aparece una segunda línea NOTE: solo cuando está desactualizada, por lo que un analizador de la línea 1 no se ve afectado. El JSON incluye matrix_date, matrix_age_days y matrix_stale.

Cuando advierta, descargue la última versión de este script.

Veredictos

VeredictoSignificadoSalida
PATCHEDCorrección encontrada en el changelog o en las tablas upstream/del proveedor0
NOT_APPLICABLEEl kernel es anterior a 4.40
MITIGATEDSin corregir, pero ningún listener TCP es accesible por IPv4 en este momento. Aun así parchee: iniciar cualquier servicio lo vuelve a abrir1
VULNERABLESin corregir y al menos un listener (o un /proc/net/tcp ilegible, o un runtime de contenedores)2
UNKNOWNNo se puede determinar, por ejemplo, sin changelog y sin fila en la matriz3
ERROROpción incorrecta o herramienta faltante4

MITIGATED es poco frecuente a propósito: casi todos los servidores escuchan en algo. Un usuario local también puede ejecutar un listener en un espacio de nombres privado de usuario+red; esa vía se anota en el informe pero no se cuenta, porque su explotabilidad no está verificada.

Se manejan dos casos en los que una simple comparación de versiones sería incorrecta:

  • Proxmox VE informa ID=debian pero ejecuta su propia serie proxmox-kernel-*. Los mínimos de Debian no aplican, por lo que solo se resuelve mediante una coincidencia en el changelog.
  • WSL2 ejecuta el kernel de Microsoft bajo un userland de distro (...-microsoft-standard-WSL2). La regla de la distro no aplica; sí la tabla upstream. Actualícelo desde Windows con wsl --update.

Uso

sudo ./cve-2026-98432-audit.sh            # text report
./cve-2026-98432-audit.sh --json          # JSON on stdout
./cve-2026-98432-audit.sh --quiet         # one line, exit code carries the verdict
./cve-2026-98432-audit.sh --since 2026-09-01 --no-hunt
Descargar herramienta