¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!
CVE-2026-52924 — Análisis técnico de CVE-2026-52924, un use-after-free crítico en el manejo de cookies obsoletas de SCTP en el kernel de Linux, que incluye la causa raíz, el flujo de ataque, la corrección y los métodos de detección. | Kitploit
Análisis técnico de CVE-2026-52924, un use-after-free crítico en el manejo de cookies obsoletas de SCTP en el kernel de Linux, que incluye la causa raíz, el flujo de ataque, la corrección y los métodos de detección.
CVE-2026-52924: Use-After-Free en SCTP en el Manejo de Cookies Obsoletas
Resumen de la Vulnerabilidad
ID CVE: CVE-2026-52924 Gravedad: CRÍTICA (CVSS 9.8) Componente: Kernel de Linux - SCTP (Protocolo de Transmisión de Control de Flujo) Tipo: Use-After-Free (CWE-416, CWE-825) Publicado: 2026-06-24 Estado: Corregido
Versiones Afectadas
Kernel de Linux < 5.10.259
Kernel de Linux < 5.15.210
Kernel de Linux < 6.1.176
Kernel de Linux < 6.6.143
Kernel de Linux < 6.12.94
Kernel de Linux < 6.18.36
Kernel de Linux < 7.0.13
Kernel de Linux < 7.1
Detalles Técnicos
Causa Raíz
La vulnerabilidad ocurre en el manejo de paquetes COOKIE-ECHO obsoletos por parte de la máquina de estados de SCTP. El problema implica una limpieza inadecuada de la cola de flujo saliente cuando se revierte una asociación.
Flujo del Ataque
Operación Normal: La asociación pasa al estado COOKIE_ECHOED
Datos de Usuario en Cola: La aplicación envía datos, que se ponen en cola para su transmisión
Error de Cookie Obsoleta: El par remoto envía un error de Cookie Obsoleta
Reversión Activada: La asociación revierte de COOKIE_ECHOED → COOKIE_WAIT
Estado del Flujo Actualizado:sctp_stream_update() libera la tabla de flujos antigua e instala una nueva
Puntero Inválido:stream->out_curr sigue apuntando a la entrada sctp_stream_out liberada
Acceso de Desencolado: Cuando el planificador intenta desencolar (FCFS, RR, PRIO), accede a out_curr->ext
Use-After-Free: Acceder a memoria liberada → fallo del kernel mediante detección KASAN
Flujo de Código Problemático
root@kitploit:~
sctp_sf_do_5_2_6_stale():
├─ Recibe error de Cookie Obsoleta
├─ Revierte el estado de la asociación
└─ Llama a sctp_stream_update()
├─ Libera la tabla de flujos antigua
├─ Instala la nueva tabla de flujos
└─ ERROR: stream->out_curr NO se invalida ❌
Más tarde, al desencolar:
sctp_sched_fcfs_dequeue():
└─ Accede a stream->out_curr->ext (MEMORIA LIBERADA) 💥
Ejemplo de Fallo
root@kitploit:~
BUG: KASAN: slab-use-after-free in sctp_sched_fcfs_dequeue+0x13a/0x140
Read of size 8 at addr ff1100004d4d3208 by task mini_poc/9312
CPU: 1 UID: 1001 PID: 9312 Comm: mini_poc Not tainted 7.1.0-rc1-00305-gbd3a4795d574 #5 PREEMPT(full)
Call trace:
sctp_sched_fcfs_dequeue+0x13a/0x140
sctp_outq_flush+0x1603/0x33e0
sctp_do_sm+0x31c9/0x5d30
sctp_assoc_bh_rcv+0x392/0x6f0
sctp_inq_push+0x1db/0x270
sctp_rcv+0x138d/0x3c10
Por Qué Simplemente Actualizar out_curr Es Insuficiente
Una corrección ingenua podría ser simplemente limpiar stream->out_curr:
Todos los datos de transmisión pendientes se descartan
Todas las entradas de la cola de retransmisión se liberan
Los punteros en caché del planificador (out_curr, etc.) se invalidan
El estado del flujo se puede reconstruir de forma segura durante el reinicio de COOKIE_WAIT
No quedan referencias colgantes a entradas de flujo liberadas
Ubicación de la Implementación
Archivo:net/sctp/sm_statefuns.c Función:sctp_sf_do_5_2_6_stale() Adición: Llamar a sctp_outq_free(&asoc->outqueue) antes de sctp_stream_update()
root@kitploit:~
enum sctp_disposition sctp_sf_do_5_2_6_stale(...)
{
// ... código existente ...
// Purgar la cola de salida antes de reconstruir el estado del flujo
sctp_outq_free(&asoc->outqueue);
// Ahora es seguro actualizar el flujo
sctp_stream_update(&asoc->stream, &asoc->c.h_init_tag);
// ... resto de la función ...
}
Análisis de Impacto
Factores de Gravedad (CVSS 9.8)
Vector de Ataque: Red (CVSS:3.1/AV:N)
Complejidad del Ataque: Baja (CVSS:3.1/AC:L)
Privilegios Requeridos: Ninguno (CVSS:3.1/PR:N)
Interacción del Usuario: Ninguna (CVSS:3.1/UI:N)
Alcance: Sin cambios (CVSS:3.1/S:U)
Impacto de Confidencialidad: Alto (CVSS:3.1/C:H)
Impacto de Integridad: Alto (CVSS:3.1/I:H)
Impacto de Disponibilidad: Alto (CVSS:3.1/A:H)
Requisitos de Explotación
Acceso de red al sistema objetivo (puerto SCTP abierto)
Capacidad de enviar paquetes SCTP para establecer conexión
Enviar un error de Cookie Obsoleta en un momento específico (estado COOKIE_ECHOED)
Activar la operación de desencolado del planificador
Escenarios de Ataque
Denegación de Servicio: Provocar fallos del kernel repetidamente → DoS
Divulgación de Información: Leer memoria del kernel mediante UAF
Escalada de Privilegios: Potencial mediante manipulación de memoria
Ejecución Remota de Código: Posible con una explotación de corrupción de memoria
Métodos de Detección
Detección KASAN (En Tiempo de Ejecución)
root@kitploit:~
# Habilitar KASAN en la configuración del kernel
CONFIG_KASAN=y
CONFIG_KASAN_GENERIC=y
# La salida en tiempo de ejecución muestra:
BUG: KASAN: slab-use-after-free
Análisis Estático
root@kitploit:~
# Buscar accesos inseguros a stream->out_curr sin validación
grep -r "out_curr->ext" net/sctp/
grep -r "out_curr->" net/sctp/sched*.c
Detección de Red
Monitorear paquetes de error SCTP de Cookie Obsoleta (Tipo 3, Código 1)
Rastrear patrones de reversión de conexiones
Alertar sobre transiciones rápidas COOKIE_ECHOED → COOKIE_WAIT
Estrategias de Mitigación
Mitigaciones Temporales (Hasta Aplicar el Parche)
Deshabilitar SCTP: Eliminar el módulo SCTP o bloquear los puertos SCTP (132, 132 UDP)