servidores web

Una nueva investigación ha descubierto que el marco CONTINUACIÓN en el 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.

«Muchas implementaciones HTTP/2 no limitan ni desinfectan adecuadamente la cantidad de tramas de CONTINUACIÓN 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 de CONTINUACIÓN 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)».

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 cuadros de CONTINUACIÓN.

«El marco CONTINUACIÓN (tipo=0x9) se utiliza para continuar una secuencia de fragmentos de bloque de encabezado», dice la documentación para RFC 7540 .

«Se puede enviar cualquier número de tramas CONTINUATION, 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.

«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», dijo el investigador . «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 ENCABEZADOS y múltiples tramas de CONTINUACIÓN 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.

» RFC 9113 […] menciona múltiples problemas de seguridad que pueden surgir si las tramas de CONTINUACIÓN no se manejan correctamente», dijo Nowotarski.

«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».

El problema afecta a varios proyectos como amphp/http ( CVE-2024-2653 ), Apache HTTP Server ( CVE-2024-27316 ), Apache Tomcat ( CVE-2024-24549 ), Apache Traffic Server ( CVE-2024-31309 ), Proxy Envoy ( 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. A falta de una solución, se recomienda considerar desactivar temporalmente HTTP/2 en el servidor.

Fuente y redacción: thehackernews.com

Compartir