Una nueva investigación ha descubierto que el frame CONTINUATION del protocolo HTTP/2 puede explotarse para realizar ataques de denegación de servicio (DoS).
La técnica recibió el nombre en código HTTP/2 CONTINUATION Flood por el investigador de seguridad Bartek Nowotarski, quien informó el problema al Centro de Coordinación CERT (CERT/CC) el 25 de enero de 2024 debido al potencial problema relacionado a ataques de DoS generalizados a toda Internet.
Según Cloudflare Radar, el tráfico HTTP/2 representa alrededor del 60% de todo el tráfico HTTP humano (excluye bots). En muchos casos, solo una conexión TCP sería suficiente para colapsar el servidor. No se debe olvidar que HTTP no solo ejecuta sitios web, sino también una parte importante de las API (API RESTful).
Los problemas de disponibilidad con importantes API y sitios web empresariales y gubernamentales podrían generar pérdidas de millones de dólares. O provocar el caos, por ejemplo: Polonia, el principal proveedor de armas pesadas de Ucrania y que también opera el centro militar más importante cerca de la frontera con Ucrania, experimenta un aumento de los ataques DDoS procedentes de Rusia.
"Muchas implementaciones HTTP/2 no limitan ni desinfectan adecuadamente la cantidad de tramas de CONTINUATION enviadas dentro de una sola secuencia", dijo CERT/CC en un aviso del 3 de abril de 2024. "Un atacante que puede enviar paquetes a un servidor de destino puede enviar una secuencia de tramas que no se agregarán a la lista de encabezados en la memoria, pero que aún así serán procesadas y decodificadas por el servidor o se agregarán a la lista de encabezados, lo que provocará un Fallo de falta de memoria (OOM)".
Como se lee en el detalle técnico, Al igual que en HTTP/1, HTTP/2 utiliza campos de encabezado dentro de solicitudes y respuestas. Estos campos de encabezado pueden comprender listas de encabezados que, a su vez, se serializan y dividen en bloques de encabezado. Los bloques de encabezado luego se dividen en fragmentos de bloque y se transmiten dentro de HEADER o lo que se llama frames de CONTINUATIONN.
"El marco CONTINUATION (tipo=0x9) se utiliza para continuar una secuencia de fragmentos de bloque de encabezado", se lee en la documentación del RFC 7540. "Se puede enviar cualquier número de tramas CONTINUATIONN, siempre y cuando la trama anterior esté en la misma secuencia y sea una trama HEADERS, PUSH_PROMISE o CONTINUATION sin el indicador END_HEADERS establecido".
El último fotograma que contiene encabezados tendrá configurado el indicador END_HEADERS, que indica al punto final remoto que es el final del bloque de encabezado.
Según Nowotarski, CONTINUATION Flood es una clase de vulnerabilidades dentro de varias implementaciones del protocolo HTTP/2 que representan una amenaza más grave en comparación con el ataque Rapid Reset que salió a la luz en octubre de 2023. Rapid Reset sobre HTTP/2 fue denominado "el mayor ataque DDoS hasta la fecha".
"Una sola máquina (y en ciertos casos, una simple conexión TCP o un puñado de tramas) tiene el potencial de interrumpir la disponibilidad del servidor, con consecuencias que van desde fallas del servidor hasta una degradación sustancial del rendimiento. Sorprendentemente, las solicitudes que constituyen un ataque no son visibles en los registros de acceso HTTP".
La vulnerabilidad, en esencia, tiene que ver con el manejo incorrecto de HEADERS y múltiples tramas de CONTINUATIONN que allanan el camino para una condición DoS. En otras palabras, un atacante puede iniciar una nueva secuencia HTTP/2 contra un servidor de destino utilizando una implementación vulnerable y enviar tramas HEADERS y CONTINUATION sin el indicador END_HEADERS establecido, creando una secuencia interminable de encabezados que el servidor HTTP/2 necesitaría. para analizar y almacenar en la memoria.
Si bien el resultado exacto varía según la implementación, los impactos van desde una falla instantánea después de enviar un par de tramas HTTP/2 y una falla por falta de memoria hasta el agotamiento de la CPU, lo que afecta la disponibilidad del servidor.
De hecho, la RFC 9113 menciona múltiples problemas de seguridad que pueden surgir si las tramas de CONTINUATION no se manejan correctamente. "Al mismo tiempo, no menciona un caso específico en el que las tramas CONTINUATION se envían sin el indicador final END_HEADERS, lo que puede tener repercusiones en los servidores afectados".
Proyectos afectados
Proyecto | Confirmado | Versión afectada | CVE ID | Enlaces |
---|---|---|---|---|
amphp/http | 2024-03-11 | >= 2.0.0 && <= 2.1.0, <= 1.7.2 | CVE-2024-2653 | Advisory |
Apache HTTP Server (httpd) | 2024-02-23 | 2.4.17-2.4.58 | CVE-2024-27316 | Advisory |
Apache Tomcat | 2024-01-25 | <=11.0.0-M16, <=10.1.18, <=9.0.85, 8.5.0-8.5.98 | CVE-2024-24549 | Advisory* |
Apache Traffic Server | 2024-03-29 | 8.0.0-8.1.9, 9.0.0-9.2.3 | CVE-2024-31309 | |
Envoy proxy (oghttp) | 2024-02-27 | 1.29.0, 1.29.1 | CVE-2024-27919 | Advisory |
Envoy proxy (nghttp2) | 2024-02-27 | <=1.29.2 | CVE-2024-30255 | Advisory |
Golang | 2024-01-10 | <=1.20, <=1.21.8, <=1.22.1 | CVE-2023-45288** | Advisory |
h2 Rust crate
|
2024-03-04 | N/A | Advisory | |
nghttp2 | 2024-03-08 | <=1.60.0 | CVE-2024-28182 | |
Node.js | 2024-01-15 | <=18.20.0, <=20.12.0, <=21.7.1 | CVE-2024-27983 | Advisory |
Tempesta FW | 2024-03-16 | 0.7.0 | CVE-2024-2758 |
NO afectados: Nginx, Jetty, HAProxy, NetScaler, Varnish.
Esta clase de vulnerabilidad plantea un riesgo importante para la seguridad de Internet. Se recomienda a los usuarios actualizar el software afectado a la última versión para mitigar posibles amenazas. A falta de una solución, se recomienda considerar desactivar temporalmente HTTP/2 en el servidor.
Fuente: Bartek Nowotarski