UDP
UDP es un protocolo de transporte sin conexión: envía datagramas sin establecer una sesión y sin garantizar la entrega ni el orden. Eso es lo que lo hace rápido, y también lo que lo convierte en el protocolo preferido para los ataques de amplificación.
UDP, el User Datagram Protocol, es un protocolo de la capa de transporte especificado en el RFC 768.
A diferencia de TCP, no tiene conexión: no establece una sesión antes de enviar datos y no garantiza que los datagramas lleguen, ni que lleguen íntegros, ni que lleguen en el orden en que se enviaron.
Ese diseño de disparar y olvidar es lo que lo hace rápido y barato, y es la elección correcta allí donde perder un paquete importa menos que esperarlo: consultas DNS, voz y vídeo en tiempo real, telemetría y buena parte del tráfico web moderno a través de QUIC.
Por qué el diseño tiene consecuencias de seguridad
Como no hay handshake, ni control de flujo, ni retransmisión, se siguen directamente tres cosas, y las tres se explotan de forma rutinaria.
Inundación. Los ataques de inundación UDP envían grandes volúmenes de datagramas contra un objetivo, agotando sus recursos y provocando una denegación de servicio. No hay ninguna conexión que rechazar, así que el sistema que recibe paga un coste por el simple hecho de que le manden tráfico.
Spoofing de la dirección de origen. Nada en UDP demuestra de dónde vino un datagrama. Un atacante puede falsificar la dirección de origen para esconderse, para saltarse controles escritos en términos de direcciones o para montar un ataque de reflexión: enviar una petición pequeña a un tercero poniendo como origen la dirección de la víctima, y dejar que ese tercero le mande a la víctima una respuesta mucho más grande. Por eso los servicios abiertos de DNS, NTP y memcached siguen apareciendo en los incidentes de amplificación, y por eso el egress filtering en el borde de la red le importa a gente distinta de la propia red que lo despliega.
El escaneo de puertos se comporta de otra manera. Escanear UDP es más lento y menos concluyente que escanear TCP, porque un puerto cerrado responde con un mensaje ICMP que a menudo está limitado por tasa o directamente descartado, mientras que uno abierto puede no responder nada. La consecuencia práctica es que los servicios UDP se escanean con menos minuciosidad, tanto por parte de los defensores como de los atacantes, y por eso acaban olvidados. Un servicio olvidado en un puerto permitido es exactamente el tipo de cosa para la que sirve una auditoría.
UDP y el cortafuegos
El filtrado de paquetes con estado se diseñó alrededor de la conexión TCP: el cortafuegos observa el handshake y sabe qué aspecto tiene una respuesta legítima. UDP no tiene handshake, así que un cortafuegos aproxima lo mismo con un pseudoestado de vida corta, que es una garantía más débil y que conviene entender antes de escribir reglas que den por hecho lo contrario.
También explica por qué el DNS tunnelling funciona tan a menudo como funciona. El DNS de salida está permitido casi en todas partes, y es UDP, así que un canal montado dentro de él parece resolución de nombres corriente para cualquier cosa que solo inspeccione direcciones y puertos.
Dónde leer más
RFC 768, User Datagram Protocol: la especificación original, de tres páginas, que merece la pena leer precisamente por lo poco que promete.
Cisco, User Datagram Protocol: una descripción de cómo funciona UDP, para qué se usa y las consideraciones de seguridad que trae consigo.