Vulnerabilidad CVE-2026-4247 en FreeBSD: Fuga de mbuf durante el procesamiento de ACK de desafío TCP
El equipo de FreeBSD publicó los detalles de CVE-2026-4247 el 26 de marzo de 2026, una vulnerabilidad que permite ataques DoS remotos mediante fugas de mbuf en conexiones TCP. El problema afecta el manejo de segmentos TCP inesperados en conexiones establecidas.
El protocolo TCP genera ACK de desafío al recibir paquetes inesperados para verificar su legitimidad. La tasa de generación está limitada por parámetros sysctl: net.inet.tcp.ack_war_timewindow (predeterminado 1000 ms) y net.inet.tcp.ack_war_cnt (5). Dentro de este intervalo, solo se procesan los primeros 5 paquetes; el resto se ignoran.
La función tcp_respond() en tcp_subr.c forma el ACK de desafío y consume un mbuf. Si el ACK no es necesario, el mbuf se libera. Un atacante que falsifica paquetes provoca la pérdida de mbuf para paquetes más allá del límite: uno por paquete.
Todas las pilas TCP de FreeBSD son vulnerables: la pila base, RACK, BBR. La pila base envía más ACK, amplificando el efecto.
Vectores de ataque y condiciones de explotación
El ataque es posible bajo estas condiciones:
- Posicionamiento en la ruta de una conexión TCP (MITM).
- Estableciendo tu propia conexión al objetivo.
Los atacantes externos deben adivinar direcciones IP, puertos y números de secuencia para la falsificación. La tasa de éxito es baja debido a la complejidad.
Cada paquete falsificado más allá del límite (5/seg) causa una fuga de mbuf, agotando el pool y activando DoS.
Medidas de protección temporales
Desactiva el límite de tasa de ACK:
sysctl net.inet.tcp.ack_war_timewindow=0
Agrégalo a /etc/sysctl.conf para persistencia.
Esto elimina la fuga pero aumenta la carga de CPU debido al procesamiento de todos los paquetes.
Solución permanente y ramas
Actualiza a ramas con parches (commits y revisiones):
- stable/15/ 1fddb5435315 (stable/15-n282699)
- releng/15.0/ de9e5d82581e (releng/15.0-n281011)
- stable/14/ b45e7530ffb9 (stable/14-n273839)
- releng/14.4/ 44dd8b58394b (releng/14.4-n273676)
- releng/14.3/ a9cba5321021 (releng/14.3-n271476)
Calendario de lanzamientos de FreeBSD
FreeBSD 15.0 se lanzó el 2 de diciembre de 2025. El soporte de rama se acortó a 4 años, con nuevas ramas cada 2 años. Lanzamientos intermedios cada 6 meses por rama, ciclo general: 3 meses con desarrollo paralelo de dos ramas.
FreeBSD 14.4: 10 de marzo de 2026. La rama 14.x es la última para plataformas de 32 bits. FreeBSD 15+ es solo de 64 bits, con COMPAT_FREEBSD32 para aplicaciones heredadas.
Puntos clave
- Vulnerabilidad explotable remotamente mediante falsificación de paquetes TCP, lo que lleva al agotamiento de mbuf.
- Afecta todas las pilas TCP de FreeBSD; el límite predeterminado de ACK amplifica la fuga.
- Solución temporal:
sysctl net.inet.tcp.ack_war_timewindow=0(a cambio de mayor uso de CPU). - Parches en stable/15, releng/15.0, stable/14 y releng/14.x.
- FreeBSD 14.x marca el fin del soporte para 32 bits; migra a 64 bits.
— Editorial Team
Aún no hay comentarios.