¿Qué es un ataque de fragmentación TCP?
Un ataque de fragmentación TCP —más precisamente llamado ataque de segmentación TCP— es una técnica de evasión de red o agotamiento de recursos que manipula cómo se divide en segmentos un flujo de bytes TCP, creando deliberadamente segmentos anormalmente pequeños o colocando límites inusuales para deslizar payloads maliciosos más allá de dispositivos de inspección o para agotar los recursos que un objetivo gasta reensamblando y rastreando el flujo TCP.
Resumen rápido — TCP normalmente divide los datos de una aplicación en segmentos dimensionados según el Maximum Segment Size (MSS) negociado, independiente de anything happening at the IP layer. Los atacantes abusan de esto enviando deliberadamente segmentos tiny that split a single meaningful unit — an HTTP header, a WAF-inspected pattern, an exploit signature — across multiple segments, so that a firewall, IDS, or WAF inspecting segments individually never sees the complete pattern in one place. A related resource-exhaustion variant sends large volumes of out-of-order or incomplete segments to pressure the target’s TCP reassembly buffers. Mitigation requires MSS clamping, full-stream reassembly at inspection points before pattern matching, and connection-level anomaly detection rather than per-packet inspection.
Última actualización: 2026-08-08
La evasión por segmentación TCP es una categoría bien documentada de técnica de bypass de IDS/IPS, analizada formalmente en el artículo de 1998 de Ptacek y Newsham “Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection”, que sigue siendo una referencia fundamental para entender por qué la inspección con estado y consciente del stream es necesaria en los puntos de control de seguridad. A diferencia de los bugs de fragmentación IP orientados al colapso de la misma era, los ataques de segmentación TCP nunca han dependido de bugs del kernel; explotan un hueco estructural entre cómo se ven los paquetes individuales y cómo se lee realmente el flujo de datos completo que portan, lo cual es una propiedad permanente del protocolo en lugar de un defecto parcheable.
Segmentación TCP vs. Fragmentación IP — Por qué son ataques diferentes
Antes de continuar, es esencial separar este tema de los ataques de fragmentación IP, ya que ambos involucran “dividir datos en piezas” y se confunden frecuentemente.
| Aspecto | Fragmentación TCP (Segmentación) | Fragmentación IP |
|---|---|---|
| Capa OSI | Transporte (Capa 4) | Red (Capa 3) |
| Qué se divide | El flujo de bytes TCP de la aplicación, en segmentos | Un solo datagrama IP, en fragmentos |
| Quién decide la división | El stack TCP emisor, con base en el MSS negociado | Cualquier router u host en la ruta, con base en el MTU del enlace |
| Campos de header que rigen | Número de secuencia TCP, opción MSS (negociada en el handshake) | Offset de fragmento IP, flag de más fragmentos, campo de identificación |
| El reensamblado ocurre en | El stack TCP receptor, usando números de secuencia | El stack IP receptor, usando offset de fragmento e identificación |
| Relación entre ambos | Un solo segmento TCP puede fragmentarse después a nivel IP si excede el MTU de la ruta — los dos mecanismos pueden apilarse | Independiente de TCP; también aplica a UDP e ICMP, que no tienen concepto de segmentación en absoluto |
| Objetivo típico de exploit | Evadir inspección de pattern matching dividiendo firmas entre límites de segmento; agotar buffers de reensamblado de stream | Evadir filtros de paquetes sin estado vía trucos de offset; colapsar código de reensamblado; agotar memoria de reensamblado a nivel IP |
La forma más clara de mantener esto separado: la fragmentación IP es algo que le pasa a un solo paquete cuando es demasiado grande para un enlace. La segmentación TCP es algo que le pasa a un flujo de datos completo antes de que se construya siquiera un paquete individual, regido enteramente por la propia lógica de la capa de transporte. Una conexión TCP puede experimentar intentos de evasión basados en segmentación con cero fragmentación IP ocurriendo jamás, y viceversa.
Cómo funciona normalmente la segmentación TCP
TCP no envía los datos de una aplicación como una sola transmisión ininterrumpida. Divide el flujo de bytes en segmentos no más grandes que el Maximum Segment Size (MSS), un valor negociado durante el handshake de tres vías vía la opción MSS, y típicamente derivado del MTU de la ruta menos el overhead de header IP y TCP (comúnmente MSS = 1460 bytes para un MTU Ethernet estándar de 1500 bytes).
Estructura de segmento TCP (campos relevantes):
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Puerto de origen | Puerto de destino |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Número de secuencia |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Número de confirmación |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Offset | |U|A|P|R|S|F| ||de datos|Reservado|R|C|S|S|Y|I| Ventana |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...Opciones: ... MSS=1460 (negociado solo en SYN/SYN-ACK) ...
Interacción MSS/MTU: MTU de Ethernet: 1500 bytes Header IP: -20 bytes Header TCP: -20 bytes ───────────────────────────── MSS resultante: 1460 bytes (payload TCP máximo por segmento)La aplicación escribe 4,380 bytes en un socket TCP:
Segmento 1: sec=0, long=1460 (bytes 0-1459)Segmento 2: sec=1460, long=1460 (bytes 1460-2919)Segmento 3: sec=2920, long=1460 (bytes 2920-4379)
El stack TCP receptor reensambla usando números de secuencia, no offsets defragmento IP — hace buffer de segmentos fuera de orden y entrega un flujode bytes contiguo a la aplicación una vez que se llenan los huecos.El stack TCP del emisor es libre de elegir tamaños de segmento más pequeños que el MSS negociado en cualquier momento; no hay nada en RFC 793 que exija que cada segmento tenga el tamaño del MSS. Esta flexibilidad, esencial para casos de uso legítimos como protocolos interactivos que envían segmentos del tamaño de pulsaciones de teclado, es exactamente lo que explotan los ataques basados en segmentación.
Cómo funcionan los ataques de fragmentación (segmentación) TCP
1. Evasión con segmentos diminutos. El atacante envía deliberadamente segmentos TCP mucho más pequeños que el MSS negociado, a veces tan pequeños como un solo byte, dividiendo un request HTTP, un payload de exploit, o cualquier patrón que un dispositivo de seguridad esté buscando a través de múltiples segmentos.
Línea de request HTTP normal en un solo segmento:Segmento: "GET /admin/config.php HTTP/1.1\r\n"
Evasión con segmentos diminutos del mismo request:Segmento 1: "GE"Segmento 2: "T /adm"Segmento 3: "in/config"Segmento 4: ".php HTTP/1.1\r\n"
Un pattern match paquete-por-paquete para "/admin/config.php" fallacontra cada segmento individual. Solo un dispositivo que reensambla elflujo TCP completo antes de hacer match detectará el patrón.Esta es la técnica central detrás de muchos métodos históricos de evasión de IDS/WAF: cualquier dispositivo de inspección que aplique pattern matching de firmas por paquete en lugar de por stream reensamblado puede evadirse eligiendo límites de segmento que dividan la firma entre dos o más paquetes.
2. Manipulación de límite de segmento con retransmisiones superpuestas. Más allá de simplemente usar segmentos diminutos, un atacante puede enviar un segmento inicial, luego retransmitir un segmento superpuesto en el mismo número de secuencia o uno cercano con datos distintos. Si el dispositivo de inspección y el destino final reensamblan segmentos superpuestos de forma diferente (algunos prefieren los datos vistos primero, otros prefieren los más recientes), el atacante puede hacer que el dispositivo de inspección “vea” contenido distinto del que finalmente procesa la aplicación de destino: un análogo a nivel de stream de la ambigüedad de fragmentos superpuestos descrita en los ataques de fragmentación IP, pero explotando números de secuencia TCP en lugar de offsets de fragmento IP.
Segmento A: sec=100, long=20, datos="CONTENIDO_QUE_SE_VE_SEGURO"Segmento B: sec=105, long=20, datos="CARGA_MALICIOSA_A_" (se superpone con A en sec 105-119)
Política del dispositivo de inspección: "gana el primero en llegar" → ve el contenido del Segmento APolítica del sistema destino: "gana el último en llegar" → la aplicación procesa un flujo mezclado usando los bytes superpuestos del Segmento B
Resultado: el contenido inspeccionado y el contenido entregado divergen3. Agotamiento de reensamblado de stream TCP. En lugar de evasión, esta variante apunta directamente a la disponibilidad. El atacante abre muchas conexiones TCP (o usa conexiones existentes) y envía grandes volúmenes de segmentos fuera de orden o con huecos deliberados, forzando al stack TCP del objetivo —o a un dispositivo de inspección inline que realiza reensamblado completo del stream— a hacer buffer de cantidades crecientes de datos fuera de orden por conexión mientras espera los segmentos faltantes (que nunca llegan, o llegan muy lentamente). Esto consume memoria proporcional al número de conexiones y al tamaño del buffer fuera de orden de cada conexión.
Un bot abre una conexión TCP, completa el handshake normalmenteEl bot envía un segmento en sec=50000 (saltándose sec=0-49999 por completo)El objetivo/dispositivo de inspección: hace buffer de este segmento fuera de orden, esperando los bytes anteriores faltantesEl bot repite en miles de conexiones, sin enviar nunca los datos que llenarían el hueco
Resultado: la memoria del buffer de reensamblado/reorden crece a través de muchas conexiones, cada una mantenida abierta y consumiendo recursos hasta que se disparan los timeouts de conexión o reensambladoEsto se superpone conceptualmente con los ataques low-and-slow en que depende de mantener el estado abierto de forma económica, pero el recurso específico bajo presión —el buffer de reorden para datos de segmento fuera de orden— es distinto de los ataques de headers incompletos estilo Slowloris.
Comparación de variantes de ataque de fragmentación TCP
| Variante | Mecanismo | Objetivo principal | Recurso objetivo principal |
|---|---|---|---|
| Evasión con segmentos diminutos | Segmentos mucho más pequeños que el MSS dividen una firma/patrón entre límites de paquete | Evadir la inspección por paquete (WAF, IDS, DPI) | Precisión de inspección, no disponibilidad |
| Ambigüedad de segmentos superpuestos | Segmentos retransmitidos se superponen en el espacio de secuencia con datos distintos | Causar que el dispositivo de inspección y el destino vean contenido distinto | Precisión de inspección, no disponibilidad |
| Agotamiento de reensamblado de stream | Segmentos fuera de orden/incompletos mantenidos en espera de datos faltantes a través de muchas conexiones | Agotar la memoria del buffer de reorden y el estado de conexión | Memoria, tabla de conexión |
Señales de detección y telemetría
# Captura solo segmentos TCP con payload pequeño (una firma común de evasión con segmentos diminutos)tcpdump -i eth0 'tcp and (ip[2:2] - ((ip[0]&0xf)*4) - ((tcp[12]&0xf0)>>2)) < 32' -c 200# Coincide con paquetes donde la longitud del payload TCP es menor a 32 bytes
# Contadores del stack TCP por conexión (Linux)nstat -az | grep -iE "tcp.*(ofoqueue|reass|prune)"# TCPOFOQueue: segmentos actualmente en la cola fuera de orden
# Vista a nivel de socket en vivo de conexiones con acumulación anómala de cola de envío/recepciónss -tin
# Verifica el MSS negociado actual en conexiones activasss -tin | grep -i mss
# Contador de nftables que coincide con segmentos TCP de payload inusualmente pequeñonft add rule inet filter input tcp flags != syn,rst,fin tcp payload-size lt 32 counter| Indicador | Normal | Bajo ataque de segmentación TCP | Herramienta |
|---|---|---|---|
| Segmentos con payload muy por debajo del MSS negociado | Ocasional (protocolos interactivos, escrituras pequeñas de aplicación) | Patrón sostenido y de alta frecuencia de segmentos implausiblemente pequeños | tcpdump, captura de paquetes |
TCPOFOQueue (profundidad de cola fuera de orden) | Baja, transitoria | Crecimiento sostenido a través de muchas conexiones | nstat -az |
| Retransmisiones con rangos de secuencia superpuestos y payloads distintos | Raro/ausente | Presente — indica un intento de superposición manipulado | Captura de paquetes / IDS |
| Conexiones con gran acumulación de cola de envío/recepción y sin progreso | Raro | Conteo elevado vía ss -tin | ss, seguimiento de conexión |
| Fallos de firma de WAF/IDS correlacionados con patrones de request fragmentados | N/A | Payload detectado solo visible después del reensamblado completo del stream en replay forense | Captura de stream completo y reensamblado offline |
Técnicas de mitigación
| Técnica | Cómo funciona | Efectividad |
|---|---|---|
| Clamping de MSS en el edge de red | Fuerza un tamaño máximo de segmento para todas las conexiones que pasan, reduciendo el rango de comportamiento explotable de segmento diminuto en el límite de red | Media — limita algunos patrones de evasión pero no elimina el abuso de segmentos por debajo del MSS |
| Reensamblado completo del stream antes de la inspección de patrones | El WAF/IDS/IPS reconstruye el flujo de bytes TCP completo antes de aplicar el pattern matching de firmas o reglas, en lugar de inspeccionar paquete-por-paquete | Alta — cierra directamente el hueco de evasión por segmento diminuto y superposición |
| Política consistente de resolución de superposición | El dispositivo de inspección y el host protegido aplican la misma política de “gana el primero” o “gana el último” para datos de segmento superpuestos, eliminando la divergencia | Alta contra la evasión por ambigüedad de superposición específicamente |
| Límites de buffer de reorden/reensamblado por conexión | Limita la cantidad de datos fuera de orden en buffer por conexión antes de forzar un reset o descarte | Media-alta contra el agotamiento de reensamblado |
| Detección de anomalías a nivel de conexión | Marca conexiones con proporciones anormalmente altas de segmentos diminutos, retransmisiones, o estado persistente fuera de orden en relación con líneas base de tráfico legítimo | Media-alta — captura tanto patrones de evasión como de agotamiento |
| Timeouts de stream inactivo/incompleto | Reinicia conexiones que mantienen datos incompletos o con huecos más allá de un umbral razonable | Media — acota la ventana de exposición para la variante de agotamiento |
| Inspección inline upstream/edge con normalización de stream | La infraestructura del lado del proveedor normaliza y reensambla los streams antes de que lleguen a la inspección o lógica de aplicación del lado del origen | Alta para ambas variantes de evasión y agotamiento a escala |
Errores comunes
| Error | Impacto | Solución correcta |
|---|---|---|
| El WAF o IDS inspecciona cada segmento/paquete TCP de forma independiente | Las firmas divididas entre límites de segmento evaden por completo la detección | Exige reensamblado completo del stream (consciente del stream TCP) antes del pattern matching |
| Asumir que el clamping de MSS por sí solo previene la evasión con segmentos diminutos | El clamping fija un máximo, pero los emisores todavía pueden elegir enviar segmentos mucho más pequeños que el MSS limitado | Combina el clamping de MSS con reensamblado de stream y detección de anomalías, no como corrección independiente |
| Usar lógica de resolución de superposición inconsistente entre el dispositivo de inspección y el host de destino | El atacante puede hacer que los dos sistemas procesen contenido distinto de la misma secuencia de segmentos | Estandariza la política de manejo de superposición entre todos los puntos de inspección y confirma que coincida con el comportamiento del sistema operativo de destino |
| Confundir problemas de segmentación TCP con problemas de fragmentación IP durante la investigación | Se ajusta la capa de mitigación equivocada (ej. ajustar ipfrag_high_thresh cuando el problema real es evasión a nivel de segmento) | Confirma con captura de paquetes en qué capa ocurre el comportamiento anómalo antes de elegir una corrección |
| No monitorear la profundidad de la cola fuera de orden por conexión | Los ataques de agotamiento de reensamblado progresan sin notarse hasta que la presión de memoria causa un impacto de servicio más amplio | Rastrea TCPOFOQueue y el crecimiento de buffer por conexión como una métrica operativa permanente |
| Tratar los segmentos diminutos como inherentemente maliciosos y bloquearlos por completo | Rompe protocolos legítimos interactivos o sensibles a la latencia que intencionalmente envían segmentos pequeños (ej. pulsaciones de teclado SSH, algunos protocolos en tiempo real) | Usa umbrales de anomalía basados en tasa y patrón en lugar de bloqueo general de segmentos pequeños |
Cómo implementarlo con Azion
La red distribuida de Azion puede ayudar a reducir la exposición a ataques de evasión basados en segmentación TCP y agotamiento de reensamblado, dependiendo de los productos habilitados y cómo estén configurados:
- DDoS Protection brinda detección y mitigación siempre activa para anomalías a nivel de conexión y protocolo, incluyendo patrones de segmentación anómalos, en el edge de red.
- Network Shield puede aplicar reglas a nivel de conexión para identificar patrones de segmento TCP anómalos antes de que lleguen a la infraestructura de aplicación.
- Firewall permite reglas personalizadas para filtrado basado en conexión relevante a anomalías de tráfico basadas en segmentación.
- WAF inspecciona requests HTTP reensamblados en lugar de segmentos TCP individuales, lo que puede ayudar a reducir la exposición a intentos de evasión de límite de segmento contra reglas de capa de aplicación, dependiendo de la configuración.
- WAAP combina controles de capa de red y de aplicación para escenarios donde la evasión basada en segmentación se combina con intentos de ataque a nivel de aplicación.
Como Azion termina las conexiones TCP en el edge, los requests se reensamblan en flujos completos como parte del manejo normal de conexión antes de reenviarse a tu origen, lo que puede ayudar a reducir la exposición de la inspección del lado del origen a secuencias de segmento crudas y controladas por el atacante, aunque el comportamiento específico depende de tus productos configurados.
Recursos relacionados
- ¿Qué es un ataque DDoS?
- Tipos de ataques DDoS
- ¿Qué es la protección y mitigación DDoS?
- ¿Qué es un ataque de fragmentación IP?
- Ataques Low and Slow
- Azion DDoS Protection
- Azion WAF
Preguntas frecuentes
¿Qué es un ataque de fragmentación TCP? Un ataque de fragmentación TCP, más precisamente llamado ataque de segmentación TCP, manipula cómo se divide en segmentos un flujo de bytes TCP —usualmente enviando segmentos anormalmente diminutos o retransmisiones superpuestas— para evadir dispositivos de inspección que analizan paquetes individualmente en lugar de como un stream reensamblado, o para agotar recursos de reensamblado en el objetivo.
¿La fragmentación TCP es lo mismo que la fragmentación IP? No, y este es el punto de confusión más común. La fragmentación IP divide un solo datagrama IP a nivel de red cuando excede el MTU de un enlace, regida por el offset de fragmento y el flag de más fragmentos. La fragmentación TCP (segmentación) divide el flujo de datos de la aplicación a nivel de transporte en segmentos con base en el Maximum Segment Size negociado, completamente independiente de lo que pase después a nivel IP.
¿Por qué los atacantes envían segmentos TCP inusualmente pequeños? Enviar segmentos diminutos —a veces solo unos pocos bytes cada uno— divide patrones significativos como rutas de request HTTP o firmas de exploit a través de múltiples paquetes. Los dispositivos de seguridad que inspeccionan el payload de cada paquete individualmente, sin reensamblar primero el flujo TCP completo, pueden fallar en detectar el patrón completo, dejando pasar contenido malicioso sin ser detectado.
¿Qué es MSS y cómo se relaciona con este ataque? El Maximum Segment Size (MSS) se negocia durante el handshake TCP y representa la mayor cantidad de datos que debería portar un segmento, típicamente derivado del MTU de la ruta. Los atacantes no están atados al MSS como un mínimo; nada evita enviar segmentos mucho más pequeños que el MSS, y esa flexibilidad es exactamente lo que explotan las técnicas de evasión con segmentos diminutos.
¿El clamping de MSS por sí solo puede detener los ataques de segmentación TCP? No. El clamping de MSS establece un límite superior en el tamaño de segmento en el edge de red, pero no evita que un emisor elija transmitir segmentos mucho más pequeños que ese límite. El clamping de MSS debería combinarse con reensamblado completo del stream en los puntos de inspección y detección de anomalías a nivel de conexión para una cobertura efectiva.
¿Cómo causa denegación de servicio el agotamiento de reensamblado de stream TCP? Un atacante envía segmentos fuera de orden o con huecos deliberados a través de muchas conexiones, forzando al objetivo (o a un dispositivo de inspección inline) a hacer buffer de cantidades crecientes de datos fuera de orden mientras espera segmentos faltantes que nunca llegan. A través de suficientes conexiones, esto consume memoria y recursos de tabla de conexión de forma similar a como funcionan otros ataques de agotamiento de estado, pero el recurso específico es el buffer de reorden/reensamblado TCP.
¿Cuál es la diferencia entre segmentos TCP superpuestos y fragmentos IP superpuestos? Los segmentos TCP superpuestos explotan la ambigüedad en cómo un receptor resuelve datos en conflicto en el mismo número de secuencia dentro de un flujo de bytes, causando potencialmente que un dispositivo de inspección y la aplicación de destino procesen contenido distinto. Los fragmentos IP superpuestos explotan la ambigüedad en el offset y longitud de fragmento a nivel de red, causando históricamente colapsos y, hoy, primariamente usados para evasión de filtros sin estado — los dos exploits explotan campos de header distintos y lógica de reensamblado completamente diferente.
¿Cómo se defienden los WAF contra la evasión por segmentación TCP? Los WAF efectivos reconstruyen el request HTTP completo a partir del stream TCP reensamblado antes de aplicar pattern matching de firmas o reglas, en lugar de inspeccionar paquetes o segmentos individuales. Esto asegura que un patrón dividido a través de múltiples segmentos diminutos todavía se detecte una vez que el stream completo está disponible para inspección.
¿La evasión por segmentación TCP sigue siendo relevante dado el uso generalizado de cifrado TLS? Sí, aunque el objetivo cambia. Con TLS, el pattern matching a nivel de payload ocurre después del descifrado en un dispositivo que termina TLS, así que la evasión por segmentación contra ese punto de inspección todavía importa si el dispositivo no reensambla por completo el stream descifrado antes de analizarlo. Los ataques de agotamiento de reensamblado basados en segmentación también siguen siendo completamente relevantes sin importar el cifrado, ya que apuntan al estado de conexión y buffer en lugar del contenido del payload.
¿Cómo puedo detectar ataques de segmentación TCP en mi red?
Busca un patrón sostenido de segmentos TCP con tamaños de payload muy por debajo del MSS negociado de la conexión, profundidad elevada de cola fuera de orden (TCPOFOQueue vía nstat -az), y retransmisiones con rangos de secuencia superpuestos que portan datos distintos. Correlacionar estas señales con líneas base de anomalía a nivel de conexión, en lugar de depender del contenido de cualquier paquete individual, da la detección más confiable.
Fuentes
- IETF. “Transmission Control Protocol.” RFC 793. 1981.
- IETF. “TCP Extensions for High Performance.” RFC 7323. 2014.
- Ptacek, Thomas H., y Timothy N. Newsham. “Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection.” Secure Networks, Inc. 1998.
- IETF. “Security Considerations for IP Fragment Filtering.” RFC 1858. 1995.
- CISA. “Understanding and Responding to Distributed Denial-of-Service Attacks.”
- NIST. “Guide to Intrusion Detection and Prevention Systems.” SP 800-94.