Recientemente se ha descubierto un nuevo tipo de ataque DoS (Denial of Service) dirigido al protocolo HTTP/2, conocido como «CONTINUATION Flood». Este tipo de ataque representa una amenaza significativa para la estabilidad y disponibilidad de los servidores web que utilizan HTTP/2.
HTTP/2 es una actualización del protocolo HTTP estandarizado en 2015, diseñado para mejorar el rendimiento web al introducir encuadre binario para la transmisión eficiente de datos, multiplexación para permitir múltiples solicitudes y respuestas sobre una sola conexión, y compresión de encabezado para reducir la sobrecarga.
Nuevo ataque DoS HTTP/2 son nuevas vulnerabilidades de CONTINUATION Flood
Fueron descubiertas por el investigador Barket Nowotarski, quien dice que se relaciona con el uso de marcos de CONTINUATION HTTP/2, que no están debidamente limitados o verificados en muchas implementaciones del protocolo. Los mensajes HTTP/2 incluyen secciones de encabezado y trailer serializadas en bloques. Estos bloques pueden fragmentarse en múltiples marcos para su transmisión, y los marcos de CONTINUATION se utilizan para unir la transmisión.
La omisión de controles de marco adecuados en muchas implementaciones permite a los actores de amenazas enviar potencialmente una cadena extremadamente larga de marcos simplemente no estableciendo la bandera ‘END_HEADERS’, lo que lleva a interrupciones del servidor debido a bloqueos por falta de memoria o agotamiento de recursos de CPU a medida que se procesan estos marcos.
El investigador advirtió que las condiciones de falta de memoria podrían llevar a bloqueos del servidor utilizando una sola conexión TCP HTTP/2 en algunas implementaciones.
“Las condiciones de falta de memoria son probablemente los casos más aburridos pero graves. No hay nada especial al respecto: no hay lógica extraña, no hay condiciones de carrera interesantes y así sucesivamente”, explica Nowotarski.
“Las implementaciones que permiten la falta de memoria simplemente no limitaron el tamaño de la lista de encabezados construida usando marcos de CONTINUATION”.
“Las implementaciones sin tiempo de espera de encabezado requerían solo una conexión HTTP/2 para bloquear el servidor”.
Una alerta del Centro de Coordinación CERT (CERT-CC)
Publicada hoy enumera varios ID de CVE correspondientes a diferentes implementaciones de HTTP/2 vulnerables a estos ataques.
Estas implementaciones permiten diversos niveles de ataques de denegación de servicio, incluyendo fugas de memoria, consumo de memoria y agotamiento de CPU, como se describe a continuación:
- CVE-2024-27983: Afecta al servidor HTTP/2 de Node.js. Enviar unos pocos marcos HTTP/2 puede causar una fuga de memoria debido a una condición de carrera, lo que lleva a un posible DoS.
- CVE-2024-27919: Afecta al códec oghttp de Envoy. Consumo ilimitado de memoria debido a no restablecer una solicitud cuando se exceden los límites del mapa de encabezado.
- CVE-2024-2758: Se relaciona con Tempesta FW. Sus límites de velocidad no están previniendo eficazmente los ataques de marcos de CONTINUATION vacíos, lo que potencialmente permite DoS.
- CVE-2024-2653: Afecta a amphp/http. Recoge marcos de CONTINUATION en un búfer sin límites, arriesgando un bloqueo por falta de memoria si se excede el límite de tamaño del encabezado.
- CVE-2023-45288: Afecta a los paquetes net/http y net/http2 de Go. Permite a un atacante enviar un conjunto arbitrariamente grande de encabezados, causando un consumo excesivo de CPU.
- CVE-2024-28182: Involucra una implementación que utiliza la biblioteca nghttp2, que continúa recibiendo marcos de CONTINUATION, lo que lleva a un DoS sin un restablecimiento adecuado de la transmisión.
- CVE-2024-27316: Afecta a Apache Httpd. Se puede enviar una transmisión continua de marcos de CONTINUATION sin que la bandera END_HEADERS esté establecida, terminando incorrectamente las solicitudes.
- CVE-2024-31309: Afecta a Apache Traffic Server. El ataque DoS de CONTINUATION HTTP/2 puede causar un consumo excesivo de recursos en el servidor.
- CVE-2024-30255: Afecta a las versiones de Envoy 1.29.2 o anteriores. Vulnerable al agotamiento de CPU debido a una inundación de marcos de CONTINUATION, consumiendo recursos significativos del servidor.
Hasta ahora, según CERT-CC, los proveedores y las bibliotecas HTTP/2 que han confirmado que están afectados por al menos uno de los CVE anteriores son Red Hat, SUSE Linux, Arista Networks, el Proyecto de Servidor HTTP Apache, nghttp2, Node.js, AMPHP y el Lenguaje de Programación Go.
Nowotarski dice que el problema es más grave
Que el ataque ‘HTTP/2 Rapid Reset’ revelado en octubre pasado por los principales proveedores de servicios en la nube, que ha estado bajo explotación activa desde agosto de 2023.
“Dado que Cloudflare Radar estima que los datos de tráfico HTTP representan más del 70% de toda la transferencia de Internet y la importancia de los proyectos afectados, creo que podemos suponer que una gran parte de Internet se vio afectada por una vulnerabilidad fácil de explotar: en muchos casos, solo una conexión TCP era suficiente para bloquear el servidor”, advirtió Nowotarski.
Además, el investigador advierte que el problema sería complejo para los administradores de servidores para depurar y mitigar sin un conocimiento adecuado de HTTP/2.
Eso es porque las solicitudes maliciosas no serían visibles en los registros de acceso si no está habilitada la analítica avanzada de marcos en el servidor, que en la mayoría de los casos no lo está.
Dado que los actores de amenazas suelen monitorear las técnicas de DDoS recién descubiertas para usar en sus servicios de estresamiento y ataques, es fundamental actualizar los servidores y bibliotecas impactados antes de que las vulnerabilidades sean explotadas activamente.
Fuente:
New HTTP/2 DoS attack can crash web servers with a single connection (bleepingcomputer.com)