Una vulnerabilidad de seguridad identificada como CVE-2026-98432 afecta al manejo por parte del kernel de Linux de las solicitudes de negociación TCP IPv4. El problema se centra en cómo el kernel gestiona la propiedad y la recuperación de los datos de opciones IP. Durante una negociación TCP estándar, el kernel crea un 'request socket' ligero para almacenar el estado inicial de la conexión. A medida que la negociación avanza hacia un 'child socket' completo, el kernel transfiere el puntero de las opciones IP del request socket (`ireq_opt`) a las opciones del child socket (`inet_opt`) en lugar de duplicar el objeto. Esta elección de diseño significa que ambos objetos de socket comparten la misma asignación de memoria para sus opciones.
La vulnerabilidad se manifiesta como una condición de carrera cuando llega un paquete SYN retransmitido para la misma conexión. Debido a que la red en Linux es altamente paralela, una segunda CPU puede procesar este SYN retransmitido mientras la primera CPU completa la negociación. La segunda CPU entra en una sección crítica de lectura RCU (Read-Copy Update) para construir una respuesta SYN-ACK, leyendo las opciones IP compartidas. Sin embargo, si el child socket se destruye durante esta ventana, el destructor original del kernel utiliza una llamada estándar a `kfree()`. A diferencia de la recuperación consciente de RCU, `kfree()` hace que la memoria esté disponible para su reutilización de inmediato. Esto crea un escenario de use-after-free donde la segunda CPU continúa leyendo de una memoria que ya puede haber sido reasignada a un objeto de kernel diferente, lo que potencialmente podría provocar un fallo, la divulgación de datos o la ejecución remota de código.

Este diagrama explica la condición de carrera específica donde una segunda CPU lee opciones IP compartidas mientras la primera CPU maneja la destrucción del socket.
La corrección upstream, integrada como el commit `e3f33b0a1d89`, reemplaza el `kfree()` inmediato por `kfree_rcu()`. Esto garantiza que la recuperación de memoria se retrase hasta que haya transcurrido un período de gracia de RCU, garantizando que todas las CPUs que actualmente mantienen una referencia al objeto de opciones hayan terminado sus operaciones. Si bien la vulnerabilidad principal afecta a la ruta del child-socket IPv4, existe un problema relacionado en la migración de request sockets (cuando se habilita `net.ipv4.tcp_migrate_req=1`). En ese caso, el kernel clona el request socket, y el request antiguo y su clon comparten las mismas opciones. El parche aborda tanto la ruta estándar del child-socket como la ruta de migración al imponer la recuperación consciente de RCU tanto en `inet_sock_destruct()` como en `tcp_v4_reqsk_destructor()`.

Esta imagen proporciona un flujo de trabajo visual para los pasos de remediación descritos en el contexto del parche del kernel.