Skip to main content
HighProtected by PowerWAF

Ataque de Inundación UDP

CategoríaDDoSPrimera aparición2000Tiempo de lectura9 minVerificado2026-03-11
DEFINICIÓN

Una inundación UDP es un ataque volumétrico de denegación de servicio que explota la naturaleza sin conexión y sin estado del Protocolo de Datagramas de Usuario para abrumar a un objetivo con volúmenes masivos de paquetes UDP. Dado que UDP no requiere handshake ni establecimiento de sesión, los atacantes pueden enviar paquetes desde direcciones IP falsificadas a velocidad de línea, saturando el ancho de banda de red del objetivo y forzando al servidor a consumir ciclos de CPU generando respuestas ICMP 'Destino Inalcanzable' por cada paquete que llega a un puerto cerrado.

Cómo Funciona Ataque de Inundación UDP

UDP es inherentemente vulnerable a las inundaciones porque no proporciona estado de conexión, autenticación ni control de flujo. Un emisor puede transmitir datagramas UDP a cualquier combinación IP:puerto sin negociación previa, y el host receptor debe procesar cada paquete para determinar si un servicio está escuchando. Cuando un paquete UDP llega a un puerto cerrado, el kernel del sistema operativo genera un mensaje ICMP Port Unreachable — consumiendo CPU y ancho de banda de salida. Cuando llega a un puerto abierto (DNS en 53, NTP en 123, SNMP en 161), la aplicación en escucha debe analizar y rechazar los datos malformados, consumiendo recursos a nivel de aplicación. A altas tasas de paquetes (millones de paquetes por segundo), la tarjeta de interfaz de red del objetivo, la pila de red del kernel y las tablas de seguimiento de conexiones del firewall se convierten en cuellos de botella. A diferencia de las inundaciones TCP que explotan el estado del protocolo, las inundaciones UDP son ataques puros de agotamiento de ancho de banda — la única defensa es tener más capacidad que el atacante o filtrar upstream.

1

Generar tráfico UDP de alto volumen desde fuentes falsificadas

El atacante usa una botnet o servidores comprometidos con conexiones de alto ancho de banda para generar paquetes UDP a velocidad máxima. Cada paquete lleva una dirección IP de origen aleatoria o falsificada, ya que UDP no tiene handshake que requiera una ruta de retorno válida. Las botnets modernas con 10,000-100,000 nodos, cada uno capaz de enviar 1-10 Mbps de tráfico UDP, pueden generar colectivamente más de 10-100+ Gbps de tráfico de ataque. Los paquetes son típicamente de 512-1400 bytes (justo por debajo del MTU para evitar la sobrecarga de fragmentación) con datos de carga útil aleatorios.

2

Apuntar a puertos aleatorios para maximizar la generación de ICMP

El atacante envía paquetes a puertos de destino aleatorios en la dirección IP de la víctima. Por cada paquete que llega a un puerto donde ninguna aplicación está escuchando, el kernel de la víctima genera una respuesta ICMP Port Unreachable — un paquete de 70 bytes enviado de vuelta a la fuente (falsificada). Esto duplica el impacto de tráfico de la víctima: inundación entrante más respuestas ICMP salientes. A 500,000 paquetes UDP entrantes por segundo a puertos cerrados, la víctima genera 500,000 respuestas ICMP, consumiendo aproximadamente 280 Mbps de ancho de banda de salida además de la inundación entrante. Algunos atacantes alternan deliberadamente entre puertos abiertos y cerrados para estresar tanto los recursos de red como los de aplicación.

3

Saturar el enlace de red antes de que los paquetes lleguen al servidor

Una vez que el volumen de la inundación UDP excede la capacidad del enlace de red del objetivo, todo el tráfico — legítimo y malicioso — se descarta indiscriminadamente en el borde de la red. Un servidor con un enlace de 1 Gbps que recibe una inundación UDP de 10 Gbps pierde el 90% de todos los paquetes antes de que siquiera lleguen al firewall o al sistema operativo. Este es el desafío fundamental del DDoS volumétrico: el cuello de botella es el tubo, no el servidor. Incluso un servidor perfectamente endurecido con CPU ilimitada es inútil si su enlace de red está saturado. El daño colateral se extiende a todos los servicios que comparten el mismo segmento de red o enlace de ISP upstream.

4

Agotar los recursos de dispositivos con estado a lo largo del camino

Los firewalls, sistemas IDS/IPS y balanceadores de carga que mantienen tablas de seguimiento de conexiones deben crear una entrada de estado para cada flujo UDP único. Una inundación UDP con IPs de origen aleatorias y puertos de destino aleatorios genera millones de flujos únicos, llenando rápidamente las tablas conntrack (típicamente dimensionadas en 128K-2M entradas). Una vez que la tabla conntrack está llena, estos dispositivos descartan todas las nuevas conexiones — incluyendo TCP — causando una falla de servicio más amplia más allá de la inundación UDP en sí. Esto convierte a los dispositivos con estado en un cuello de botella común incluso cuando el enlace de red tiene suficiente ancho de banda.

5

Apuntar a servicios basados en UDP para impacto a nivel de aplicación

Cuando el atacante sabe qué servicios UDP están ejecutándose, envía paquetes bien formados o semi-formados a esos puertos específicos: consultas DNS al puerto 53, solicitudes NTP al puerto 123, mensajes SIP INVITE al puerto 5060 o paquetes de protocolo de juego al puerto del servidor de juego. La aplicación debe analizar y procesar cada paquete antes de determinar que es malicioso, consumiendo CPU, memoria y threads de aplicación. Los servidores DNS son particularmente vulnerables porque realizan resolución recursiva para cada consulta, amplificando el costo computacional mucho más allá del simple procesamiento de paquetes.

Ejemplos Reales

2007

Ciberataques a Estonia — inundaciones UDP contra infraestructura nacional

En abril-mayo de 2007, Estonia sufrió una campaña coordinada de ciberataques de 22 días tras una disputa política con Rusia. Los ataques incluyeron inundaciones UDP masivas dirigidas a sitios web del gobierno estonio, sistemas bancarios (Hansabank, SEB), medios de comunicación e infraestructura DNS. La banca en línea fue interrumpida durante más de una semana, los sistemas de correo electrónico del gobierno fueron dejados fuera de línea, y los servidores DNS del país fueron abrumados con inundaciones que alcanzaron picos de 4 Gbps — enormes para la época. El incidente fue el primer ciberataque contra la infraestructura digital completa de un estado-nación y llevó al establecimiento del Centro de Excelencia de Ciberdefensa Cooperativa de la OTAN en Tallin.

2021

Epidemia de inundaciones UDP en la industria de juegos en línea

A lo largo de 2021, la industria de juegos en línea enfrentó una epidemia de ataques de inundación UDP, con los servidores de juegos como objetivos principales debido a su dependencia de UDP para la comunicación en tiempo real. Los ataques contra grandes editores de juegos y plataformas de gaming competitivo alcanzaron picos de 253 Gbps, causando desconexiones masivas de sesiones, picos de latencia e interrupciones en torneos. Los proveedores de hosting de servidores de juegos reportaron aumentos de 10x en incidentes de inundación UDP año tras año, con algunos ataques sosteniendo más de 100 Gbps durante más de 12 horas. El sector gaming representó casi el 40% de todos los ataques DDoS en 2021 según informes de la industria.

2024

Ataques multi-vector récord de OVHcloud incluyendo inundaciones UDP

En la segunda mitad de 2024, el proveedor de hosting europeo OVHcloud enfrentó una campaña sostenida de dos semanas de ataques DDoS multi-vector que alcanzaron un récord de 4.2 Tbps, con las inundaciones UDP constituyendo una porción significativa del tráfico junto con vectores basados en TCP. Los ataques se originaron desde aproximadamente 150,000 IPs de origen, incluyendo routers MikroTik comprometidos y dispositivos IoT. La campaña apuntó a múltiples clientes e infraestructura de OVHcloud simultáneamente, requiriendo adaptación continua de las reglas de filtrado a medida que los atacantes rotaban entre inundación UDP, inundación SYN y vectores de amplificación DNS.

Impacto y Evaluación de Riesgo

Las inundaciones UDP son la técnica DDoS volumétrica más simple y común, representando aproximadamente el 55-62% de todos los ataques DDoS por volumen. Su efectividad proviene de la combinación de la naturaleza sin estado de UDP (sin handshake significa falsificación ilimitada), la disponibilidad de botnets masivas y la física fundamental de la saturación de ancho de banda — ninguna cantidad de endurecimiento del servidor ayuda cuando el tubo de red está lleno. El impacto se extiende más allá del objetivo: los entornos de hosting compartido ven a todos los clientes afectados cuando uno es atacado; los enlaces de ISP upstream pueden saturarse, causando daño colateral a redes no relacionadas; y los dispositivos de seguridad con estado (firewalls, IDS) a lo largo del camino pueden fallar bajo la carga de rastrear millones de flujos UDP. Los servicios dependientes de UDP se ven desproporcionadamente afectados: las llamadas VoIP se cortan con tan solo un 1% de pérdida de paquetes, los juegos en línea se vuelven injugables con 50ms de latencia adicional y la resolución DNS falla cuando el puerto UDP 53 se ve abrumado. El impacto financiero escala con la duración del tiempo de inactividad — las compañías de gaming reportan pérdidas de $25,000-$40,000 por hora durante ataques DDoS, mientras que las empresas con obligaciones de SLA enfrentan penalidades contractuales además de la pérdida directa de ingresos.

Cómo Detectar Ataque de Inundación UDP

Monitorear las tasas de paquetes UDP entrantes y compararlas con las líneas base establecidas — un servidor web típico recibe tráfico UDP mínimo (principalmente respuestas DNS y NTP), por lo que un pico repentino de cientos a cientos de miles de paquetes por segundo es un indicador claro. Rastrear la proporción de tráfico UDP respecto a TCP; el tráfico web legítimo es abrumadoramente TCP, por lo que un cambio donde UDP excede el 30-40% del tráfico total indica una probable inundación. Analizar la entropía de IPs de origen: el tráfico UDP legítimo proviene de un conjunto relativamente estable de resolvers DNS y servidores NTP, mientras que las inundaciones UDP muestran miles de IPs de origen únicas con alta entropía en el espacio de direcciones. Monitorear la tasa de generación de ICMP Port Unreachable — un aumento pronunciado indica paquetes UDP llegando a puertos cerrados a altas tasas. Verificar la utilización de la tabla conntrack en firewalls y dispositivos con estado: el llenado rápido de la tabla de seguimiento de conexiones con entradas UDP señala una inundación. Desplegar análisis NetFlow/sFlow en el perímetro de red para detectar anomalías de volumen antes de que impacten los servicios — los datos de flujo capturan patrones de tráfico con mínima sobrecarga incluso durante eventos de alto volumen.

Cómo Prevenir Ataque de Inundación UDP

Desplegar mitigación DDoS upstream (scrubbing basado en la nube o filtrado a nivel de ISP) como defensa principal — el hardware en las instalaciones no puede mitigar una inundación que excede la capacidad del enlace de red. Configurar firewalls para descartar paquetes UDP a puertos donde no hay servicio escuchando, eliminando la generación de ICMP Port Unreachable y reduciendo la carga de CPU. Deshabilitar las respuestas ICMP Port Unreachable en el kernel (net.ipv4.icmp_ratemask en Linux) para prevenir que el tráfico ICMP saliente amplifique el impacto de ancho de banda de la inundación. Implementar ajustes de la tabla conntrack: aumentar nf_conntrack_max, reducir los valores de timeout UDP (net.netfilter.nf_conntrack_udp_timeout=10 en lugar del valor predeterminado de 30) y considerar usar reglas NOTRACK para servicios UDP de alto volumen para evadir completamente el seguimiento de conexiones. Para servicios UDP que deben permanecer accesibles (DNS, servidores de juegos), implementar limitación de tasa a nivel de aplicación, validación de paquetes (verificar la estructura del paquete antes de procesarlo) y filtrado geográfico (descartar tráfico de regiones sin usuarios legítimos). Implementar BCP 38 validación de dirección de origen en el borde de su red y promover su adopción por los proveedores upstream — la adopción generalizada de BCP 38 eliminaría completamente las inundaciones UDP falsificadas. Considerar aparatos dedicados de mitigación DDoS posicionados en línea para organizaciones con conexiones de alto ancho de banda.

Ejemplos de Código

Mitigation: Linux kernel and iptables hardening against UDP floods
# === Kernel tuning for UDP flood resilience ===

# Disable ICMP Port Unreachable responses to prevent outbound amplification
# Bit 3 in icmp_ratemask controls Port Unreachable (Type 3)
iptables -A OUTPUT -p icmp --icmp-type port-unreachable -j DROP

# Increase conntrack table size (default 65536 is too small under flood)
sysctl -w net.netfilter.nf_conntrack_max=2000000
sysctl -w net.netfilter.nf_conntrack_buckets=500000

# Reduce UDP conntrack timeout (default 30s → 10s)
# Entries expire faster, freeing conntrack slots during floods
sysctl -w net.netfilter.nf_conntrack_udp_timeout=10
sysctl -w net.netfilter.nf_conntrack_udp_timeout_stream=30

# Increase network receive buffer sizes
sysctl -w net.core.rmem_max=67108864
sysctl -w net.core.rmem_default=8388608
sysctl -w net.core.netdev_max_backlog=50000

# === iptables rules to filter UDP flood traffic ===

# Drop UDP packets to ports where no service listens
# List your legitimate UDP services explicitly
iptables -A INPUT -p udp --dport 53 -j ACCEPT # DNS (if you run a DNS server)
iptables -A INPUT -p udp --dport 123 -j ACCEPT # NTP (if you run NTP)
iptables -A INPUT -p udp --dport 1194 -j ACCEPT # OpenVPN (if applicable)
# Drop all other inbound UDP
iptables -A INPUT -p udp -j DROP

# If you must accept UDP on certain ports, rate-limit per source IP
iptables -A INPUT -p udp --dport 53 -m hashlimit \
--hashlimit-above 50/sec \
--hashlimit-burst 100 \
--hashlimit-mode srcip \
--hashlimit-name udp_dns_limit \
-j DROP

# Bypass conntrack for high-volume UDP services (reduces state table pressure)
iptables -t raw -A PREROUTING -p udp --dport 53 -j NOTRACK
iptables -t raw -A OUTPUT -p udp --sport 53 -j NOTRACK

# Anti-spoofing: enable reverse path filtering
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1

# Persist all sysctl settings
sysctl -p
Detection: Real-time UDP flood monitoring with alerting
import subprocess
import time
import logging
from collections import defaultdict

logger = logging.getLogger('udp_flood_monitor')

def get_udp_stats():
"""Read UDP statistics from /proc/net/snmp and conntrack"""
stats = {}

# Parse /proc/net/snmp for UDP counters
with open('/proc/net/snmp', 'r') as f:
lines = f.readlines()
for i, line in enumerate(lines):
if line.startswith('Udp:') and i + 1 < len(lines):
headers = line.split()
values = lines[i + 1].split()
if headers[0] == 'Udp:' and values[0] == 'Udp:':
for h, v in zip(headers[1:], values[1:]):
stats[f'udp_{h}'] = int(v)
break

# Get conntrack stats
try:
result = subprocess.run(
['cat', '/proc/sys/net/netfilter/nf_conntrack_count'],
capture_output=True, text=True
)
stats['conntrack_count'] = int(result.stdout.strip())

result = subprocess.run(
['cat', '/proc/sys/net/netfilter/nf_conntrack_max'],
capture_output=True, text=True
)
stats['conntrack_max'] = int(result.stdout.strip())
except (ValueError, FileNotFoundError):
pass

return stats

def get_interface_counters(interface='eth0'):
"""Read packet and byte counters from /sys/class/net"""
base = f'/sys/class/net/{interface}/statistics'
counters = {}
for stat in ['rx_packets', 'rx_bytes', 'tx_packets', 'tx_bytes']:
try:
with open(f'{base}/{stat}', 'r') as f:
counters[stat] = int(f.read().strip())
except FileNotFoundError:
counters[stat] = 0
return counters

def monitor_udp_flood(
interface='eth0',
pps_threshold=100000,
bps_threshold=1_000_000_000, # 1 Gbps
conntrack_pct_threshold=80,
check_interval=5
):
"""Continuous UDP flood monitoring with multi-indicator alerting"""
prev_counters = get_interface_counters(interface)
prev_stats = get_udp_stats()
prev_time = time.time()

while True:
time.sleep(check_interval)

curr_counters = get_interface_counters(interface)
curr_stats = get_udp_stats()
curr_time = time.time()
elapsed = curr_time - prev_time

# Calculate rates
rx_pps = (curr_counters['rx_packets'] - prev_counters['rx_packets']) / elapsed
rx_bps = (curr_counters['rx_bytes'] - prev_counters['rx_bytes']) * 8 / elapsed
tx_pps = (curr_counters['tx_packets'] - prev_counters['tx_packets']) / elapsed

# UDP-specific: NoPorts = ICMP Dest Unreachable generated (closed port hits)
noports_rate = 0
if 'udp_NoPorts' in curr_stats and 'udp_NoPorts' in prev_stats:
noports_rate = (curr_stats['udp_NoPorts'] - prev_stats['udp_NoPorts']) / elapsed

# Conntrack utilization
conntrack_pct = 0
if 'conntrack_count' in curr_stats and 'conntrack_max' in curr_stats:
conntrack_pct = (curr_stats['conntrack_count'] / curr_stats['conntrack_max']) * 100

# Alert conditions
if rx_pps > pps_threshold:
logger.critical(
f'HIGH PACKET RATE: {rx_pps:,.0f} pps inbound '
f'({rx_bps / 1e9:.2f} Gbps), threshold: {pps_threshold:,}'
)

if noports_rate > 1000:
logger.warning(
f'UDP closed-port hits: {noports_rate:,.0f}/sec '
f'(generating ICMP Port Unreachable responses)'
)

if conntrack_pct > conntrack_pct_threshold:
logger.critical(
f'CONNTRACK TABLE {conntrack_pct:.1f}% full '
f'({curr_stats["conntrack_count"]:,}/{curr_stats["conntrack_max"]:,}) — '
f'risk of dropping all new connections'
)

prev_counters = curr_counters
prev_stats = curr_stats
prev_time = curr_time

if __name__ == '__main__':
logging.basicConfig(level=logging.INFO)
monitor_udp_flood()
Mitigation: Nginx as TCP/HTTP absorber unaffected by UDP floods
# Nginx reverse proxy architecture for UDP flood resilience.
# Nginx only processes TCP/HTTP — UDP floods hit the OS, not the application.
# Combined with kernel hardening, this isolates web services from UDP attacks.

worker_processes auto;
worker_rlimit_nofile 65535;

events {
worker_connections 65535;
multi_accept on;
use epoll;
}

http {
# Aggressive timeouts to reclaim resources during attacks
keepalive_timeout 10s;
client_header_timeout 5s;
client_body_timeout 5s;
send_timeout 5s;
reset_timedout_connection on;

# Connection and rate limiting per IP
limit_conn_zone $binary_remote_addr zone=conn_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_per_ip:10m rate=30r/s;

# Health check endpoint for load balancer monitoring
server {
listen 80;
server_name _;

# Quick health check — responds even under heavy load
location /health {
access_log off;
return 200 'OK';
add_header Content-Type text/plain;
}
}

server {
listen 443 ssl http2 backlog=65535;

limit_conn conn_per_ip 30;
limit_req zone=req_per_ip burst=50 nodelay;

location / {
proxy_pass http://backend;
proxy_connect_timeout 3s;
proxy_read_timeout 15s;
proxy_send_timeout 5s;
}
}
}

PowerWAF bloquea automáticamente Ataque de Inundación UDP antes de que llegue a tu servidor.

Implementa en minutos. Sin cambios de código. Plan gratuito disponible.

Los cupos del plan gratuito son limitados

Preguntas Frecuentes

UDP es sin conexión — el emisor transmite paquetes sin establecer una sesión, negociar parámetros o esperar confirmaciones. Esto significa: (1) ningún handshake de tres vías consume los recursos del atacante, (2) la falsificación de IP de origen es trivial porque no se necesita que el tráfico de retorno llegue al atacante, (3) el atacante puede enviar a velocidad de línea sin contrapresión del protocolo, y (4) generar tráfico de ataque requiere código mínimo — un raw socket enviando datagramas UDP en un bucle. En contraste, los ataques TCP como las inundaciones SYN requieren fabricar encabezados TCP válidos con números de secuencia apropiados, y los ataques a nivel de aplicación (inundaciones HTTP) requieren completar handshakes TCP. La simplicidad de las inundaciones UDP las convierte en la opción predeterminada para servicios de booter/stresser y atacantes amateur.
RFC 1122 requiere que cuando un paquete UDP llega a un puerto donde ninguna aplicación está escuchando, el host DEBERÍA responder con un mensaje ICMP Destination Unreachable (Tipo 3, Código 3 — Port Unreachable). Esto está diseñado para informar a los emisores legítimos que sus paquetes no están llegando a ninguna aplicación. Durante una inundación UDP, este comportamiento se vuelve dañino: la víctima genera una respuesta ICMP por cada paquete UDP que llega a un puerto cerrado, consumiendo CPU para la generación de ICMP y consumiendo ancho de banda de salida para enviar esas respuestas. Una inundación UDP entrante de 10 Gbps a puertos aleatorios podría generar 2-3 Gbps de tráfico ICMP saliente. Deshabilitar o limitar la tasa de respuestas ICMP Port Unreachable (Linux: sysctl net.ipv4.icmp_ratemask o reglas iptables) es un paso esencial de mitigación de inundaciones.
Sí, de dos maneras. Primero, la saturación de ancho de banda es agnóstica al protocolo — una inundación UDP de 10 Gbps que satura un enlace de 10 Gbps bloquea todo el tráfico incluyendo TCP (HTTP, HTTPS, SSH, correo electrónico). Los paquetes UDP desplazan a los paquetes TCP legítimos en el tubo de red. Segundo, los dispositivos con estado a lo largo del camino (firewalls, IDS/IPS) crean entradas conntrack para cada flujo UDP único. Cuando la tabla conntrack se llena, estos dispositivos descartan todas las nuevas conexiones incluyendo TCP, causando que los servidores web, APIs y otros servicios TCP se vuelvan inalcanzables aunque no sean directamente objetivo. Por eso las inundaciones UDP a menudo se llaman ataques de 'inundación de tubería' — atacan la infraestructura, no la aplicación.
Los servidores de juegos enfrentan un desafío único: deben aceptar tráfico UDP de fuentes desconocidas (nuevos jugadores conectándose) mientras filtran ataques. Las defensas comunes incluyen: autenticación de desafío-respuesta donde el servidor envía un pequeño paquete UDP de desafío y solo procesa más tráfico de IPs que responden correctamente (probando que pueden recibir tráfico, lo cual las IPs falsificadas no pueden); validación de protocolo que descarta paquetes que no coinciden con el formato esperado del protocolo de juego; filtrado geográfico que restringe conexiones a regiones donde opera el juego; limitación de tasa por IP a nivel de red; y proxies dedicados de mitigación DDoS que absorben ataques volumétricos y reenvían solo tráfico de juego validado. Algunos editores de juegos operan sus propias redes anycast para absorber inundaciones a través de puntos de presencia distribuidos geográficamente.
Los WAFs tradicionales operan en la capa HTTP/aplicación (Capa 7) e inspeccionan solicitudes web — no procesan paquetes UDP sin procesar. Sin embargo, las plataformas de protección DDoS integrales como PowerWAF incluyen mitigación a nivel de red que detecta patrones de inundación UDP (picos repentinos de volumen, alta entropía de origen, puertos de destino aleatorios) y filtra el tráfico UDP malicioso en el borde de la red antes de que alcance la infraestructura protegida. Este enfoque combinado proporciona defensa tanto a nivel de red (contra inundaciones volumétricas UDP/TCP) como a nivel de aplicación (contra inundaciones HTTP, ataques de bots e inyección).