Una nueva investigación realizada por el experto en seguridad Bartek Nowotarski ha descubierto una vulnerabilidad potencial en el protocolo HTTP/2.. Conocida como la Inundación de CONTINUACIÓN, Este exploit permite a los atacantes realizar negación de servicio (DoS) ataques inundando un servidor con tramas de CONTINUACIÓN.
La CONTINUACIÓN Vulnerabilidad a las inundaciones explicada
El problema radica en cómo las implementaciones HTTP/2 manejan los marcos de CONTINUACIÓN dentro de una única secuencia.. Muchas implementaciones no logran limitar o desinfectar adecuadamente la cantidad de tramas de CONTINUACIÓN enviadas, permitir a los atacantes abrumar un servidor con un flujo de fotogramas que pueden causar agotamiento de la memoria o fallas.
HTTP/2, como su predecesor HTTP/1, utiliza campos de encabezado dentro de solicitudes y respuestas. Estos encabezados se serializan en bloques de encabezado., que luego se transmiten como fragmentos de bloque dentro de tramas de CONTINUACIÓN.
¿Cómo se puede explotar la vulnerabilidad?
Los atacantes pueden aprovechar esta vulnerabilidad enviando un flujo continuo de fotogramas CONTINUACIÓN sin el indicador END_HEADERS establecido., haciendo que el servidor analice y almacene una cantidad excesiva de datos de encabezado en la memoria.
Esta vulnerabilidad representa una grave amenaza., ya que una sola máquina o una conexión TCP pueden alterar la disponibilidad del servidor, lo que lleva a fallas o degradación del rendimiento. Es posible que el ataque no sea visible en los registros de acceso HTTP, haciendo que la detección sea un desafío.
Implementaciones afectadas
Varias implementaciones HTTP/2 se ven afectadas, incluyendo proyectos como Apache HTTP Server, Node.js, y golang. Se recomienda a los usuarios que actualicen el software afectado para mitigar los riesgos.. Si no hay una solución disponible, Deshabilitar temporalmente HTTP/2 puede proporcionar protección contra este exploit.
Aquí hay varios listados de CVE que destacan la vulnerabilidad en varias implementaciones., según el Centro de Coordinación CERT consultivo.
CVE-2024-27983
Un atacante puede hacer que el servidor HTTP/2 de Node.js no esté disponible enviando una cantidad limitada de paquetes de tramas HTTP/2 que contengan algunas tramas HTTP/2.. La falla puede dejar datos en nghttp2 memoria después de un reinicio. Esto podría suceder cuando se envían encabezados con tramas de CONTINUACIÓN HTTP/2 al servidor y el cliente cierra abruptamente la conexión TCP., activar el destructor Http2Session mientras los marcos de encabezado aún se están procesando, causando una condición de carrera.
CVE-2024-27919
del enviado oghttp El códec no puede restablecer una solicitud cuando se exceden los límites del mapa de encabezado.. Esto permite a un atacante enviar una secuencia de tramas de CONTINUACIÓN sin el bit END_HEADERS establecido., lo que lleva a un consumo ilimitado de memoria.
CVE-2024-2758
Los límites de velocidad de Tempesta FW no están habilitados de forma predeterminada. O están configurados demasiado grandes para capturar ataques de marcos de CONTINUACIÓN vacíos o demasiado pequeños para manejar solicitudes HTTP normales de manera adecuada..
CVE-2024-2653
amphp/http recopila tramas de CONTINUACIÓN HTTP/2 en un búfer ilimitado y no verifica el límite de tamaño del encabezado hasta recibir el indicador END_HEADERS, resultando en una falta de memoria (OOM) choque. amphp/http-cliente y amphp/servidor http se ven afectados indirectamente si se usan con una versión sin parches de amphp/http. Versiones anteriores de amphp/http-client con soporte HTTP/2 (v4.0.0-rc10 a 4.0.0) también se ven directamente afectados.
CVE-2023-45288
Los paquetes Go red/http y red/http2 no limite el número de tramas de CONTINUACIÓN leídas para una solicitud HTTP/2, permitir a un atacante proporcionar un conjunto excesivamente grande de encabezados para una sola solicitud, lo que lleva a un consumo excesivo de CPU.
CVE-2024-28182
Una implementación que utiliza el nghttp2 La biblioteca seguirá recibiendo fotogramas de CONTINUACIÓN y no devolverá la llamada a la aplicación para permitir la visibilidad de esta información antes de restablecer la transmisión., resultando en un Negación de servicio (DoS) vulnerabilidad.
CVE-2024-27316
Un atacante puede enviar continuamente tramas HTTP/2 CONTINUATION sin el indicador END_HEADERS establecido a una implementación Apache Httpd, que no logra terminar la solicitud antes de tiempo.
CVE-2024-31309
Un ataque DoS de CONTINUACIÓN HTTP/2 puede hacer que Apache Traffic Server consuma más recursos en el servidor. Versiones de 8.0.0 mediante 8.1.9 y de 9.0.0 mediante 9.2.3 Son afectados.
CVE-2024-30255
La pila de protocolos HTTP/2 en las versiones Envoy 1.29.2 o antes es vulnerable al agotamiento de la CPU debido a una avalancha de tramas de CONTINUACIÓN. El códec HTTP/2 de Envoy permite al cliente enviar un número ilimitado de tramas de CONTINUACIÓN, incluso después de exceder los límites del mapa de encabezado de Envoy. Esto permite a un atacante enviar una secuencia de tramas de CONTINUACIÓN sin el bit END_HEADERS establecido., causando que la utilización de la CPU consuma aproximadamente 1 núcleo por 300 Mbit/s de tráfico.