Una investigación reciente ha revelado que la función de continuación en el protocolo HTTP/2 puede ser explotada para llevar a cabo ataques de denegación de servicio (DoS).
Este método ha sido apodado “HTTP/2 CONTINUATION Flood” por el investigador de seguridad Bartek Nowotarski, quien informó del problema al Centro de Coordinación de CERT (CERT/CC) el 25 de enero de 2024.
El 3 de abril de 2024, CERT/CC emitió un aviso, afirmando que “muchas implementaciones de HTTP/2 no limitan ni desinfectan adecuadamente la cantidad de tramas de continuación enviadas dentro de un solo flujo”.
Según explicaron, un atacante que pueda enviar paquetes a un servidor de destino puede generar un flujo de tramas de continuación que no se agregará a la lista de encabezados en la memoria, pero aún así será procesado y decodificado por el servidor, lo que podría provocar un bloqueo por falta de memoria (OOM).
Al igual que en HTTP/1, HTTP/2 utiliza campos de encabezado dentro de las solicitudes y respuestas. Estos campos pueden incluir listas de encabezados, que se dividen en bloques de encabezado y se transmiten como fragmentos dentro de tramas de continuación o de encabezado.
Según la documentación de RFC 7540, “la trama de continuación (type=0x9) se utiliza para continuar una secuencia de fragmentos de bloque de encabezado”. Se pueden enviar cualquier número de tramas de continuación siempre que la trama anterior esté en la misma secuencia y sea una trama de encabezado, push promise o continuación sin el indicador de finalización de encabezados (END_HEADERS) establecido.
Nowotarski advirtió que este ataque es más grave que el ataque Rapid Reset descubierto en octubre de 2023, ya que una sola máquina o incluso una simple conexión TCP puede interrumpir la disponibilidad del servidor.
Los efectos del ataque pueden ir desde el bloqueo del servidor hasta una degradación significativa del rendimiento, sin que las solicitudes del ataque sean visibles en los registros de acceso HTTP.
La vulnerabilidad se debe al manejo incorrecto de encabezados y múltiples tramas de continuación, lo que puede llevar a una condición DoS.
En resumen, un atacante puede iniciar una secuencia HTTP/2 contra un servidor vulnerable y enviar tramas de encabezado y continuación sin establecer la marca de finalización de encabezados (END_HEADERS), creando una secuencia infinita de encabezados que el servidor necesitaría analizar y almacenar en la memoria.
Los impactos pueden ir desde el bloqueo instantáneo después de enviar un par de tramas HTTP/2 hasta el agotamiento de la CPU, lo que afecta la disponibilidad del servidor.
Se han identificado vulnerabilidades en varios proyectos, incluidos como amphp/http (CVE-2024-2653), Apache HTTP Server (CVE-2024-27316), Apache Tomcat (CVE-2024-24549), Apache Traffic Server (CVE-2024-31309), Envoy proxy (CVE-2024-27919 y CVE-2024-30255), Golang (CVE-2023-45288), h2 Rust crate, nghttp2 (CVE-2024-28182), Node.js (CVE-2024-27983) y Tempesta FW (CVE-2024-2758).
Se recomienda a los usuarios actualizar el software afectado a la última versión para mitigar posibles amenazas. En caso de no haber solución disponible, se aconseja considerar la desactivación temporal de HTTP/2 en el servidor.
fuente:thehackernews