Skip to main content

Explotación de tramas CONTINUATION de HTTP/2 para ataques DoS

blog feature pypi spoof

8 de abril de 2024

0 minutos de lectura

Acerca de la vulnerabilidad

La vulnerabilidad se encuentra en la forma en que las implementaciones de HTTP/2 manejan las tramas CONTINUATION, que se usan para transmitir bloques de encabezados más grandes que el tamaño máximo de trama. Los atacantes aprovechan esta debilidad al enviar una cantidad excesiva de tramas CONTINUATION dentro de un solo flujo HTTP/2. Esta avalancha de tramas supera la capacidad del servidor para procesarlas de manera eficiente.

Bartek Nowotarski destacó la gravedad de esta vulnerabilidad y señaló que representa una amenaza mayor que incidentes anteriores, como el ataque «HTTP/2 Rapid Reset». Además, esta vulnerabilidad se explota activamente desde agosto de 2023.

Lo que hace que este ataque sea particularmente preocupante es su potencial para bloquear servidores web con una sola conexión TCP o incluso con apenas un puñado de tramas. Como resultado, los servidores afectados pueden experimentar una degradación considerable del rendimiento o quedar completamente fuera de servicio.

Esta vulnerabilidad afecta a una amplia variedad de proveedores y bibliotecas HTTP/2, entre ellos Red Hat, SUSE Linux, Arista Networks, el Apache HTTP Server Project, nghttp2, Node.js, AMPHP y el lenguaje de programación Go.

Versiones afectadas

Proyecto

Versiones afectadas

ID de CVE

amphp/http

>= 2.0.0 && <= 2.1.0, <= 1.7.2

CVE-2024-2653

Apache HTTP Server (httpd)

2.4.17-2.4.58

CVE-2024-27316

Apache Tomcat

<=11.0.0-M16, <=10.1.18, <=9.0.85, 8.5.0-8.5.98

CVE-2024-24549

Apache Traffic Server

8.0.0-8.1.9, 9.0.0-9.2.3

CVE-2024-31309

Envoy proxy (oghttp)

1.29.0, 1.29.1

CVE-2024-27919

Envoy proxy (nghttp2)

<=1.29.2

CVE-2024-30255

Golang

<=1.20, <=1.21.8, <=1.22.1

CVE-2023-45288**

nghttp2

<=1.60.0

CVE-2024-28182

Node.js

<=18.20.0, <=20.12.0, <=21.7.1

CVE-2024-27983

Tempesta FW

0.7.0

CVE-2024-2758

Impacto 

Dado el uso generalizado de HTTP/2 y su prevalencia en el tráfico de Internet (que, según las estimaciones de Cloudflare Radar, supera el 70 %), el impacto de esta vulnerabilidad es significativo. Esto subraya la necesidad crítica de aplicar parches de inmediato y contar con medidas de seguridad sólidas para mitigar el riesgo de explotación y proteger los servidores web de devastadores ataques de denegación de servicio (DoS) y de evasión de restricciones de seguridad.

Mitigación

Actualiza el programa afectado a la versión más reciente que incluya el parche para la vulnerabilidad. Si no hay un parche disponible, considera desactivar temporalmente HTTP/2 en el servidor.

Solución

Aplica parches y actualizaciones: Asegúrate de instalar las actualizaciones de seguridad más recientes para el software de tu servidor, las bibliotecas pertinentes y las implementaciones de HTTP/2. Consulta con frecuencia las actualizaciones de los proveedores de software e instálalas tan pronto como estén disponibles para corregir las vulnerabilidades conocidas.

Implementa límites de frecuencia: Configura límites para restringir la cantidad de solicitudes o tramas que se pueden procesar en un período determinado. Esto puede reducir los efectos del tráfico intenso o las avalanchas de solicitudes.

Analiza y monitorea el tráfico: Presta atención a patrones inusuales o aumentos repentinos en el tráfico entrante que puedan indicar un posible ataque. Examina el tráfico HTTP sin procesar para detectar y abordar solicitudes maliciosas que aprovechen las vulnerabilidades en las implementaciones de HTTP/2.

Usa firewalls de aplicaciones web (WAF): Configura WAF para filtrar el tráfico entrante y evitar que las solicitudes maliciosas lleguen a tu servidor. Configura reglas de WAF para identificar y detener patrones de ataque conocidos relacionados con ataques DoS a HTTP/2.

Implementa defensas a nivel de red: Usa defensas a nivel de red, como sistemas de detección de intrusiones (IDS) o sistemas de prevención de intrusiones (IPS), para identificar y detener patrones de tráfico sospechosos que indiquen ataques DoS dirigidos a implementaciones de HTTP/2.

Usa implementaciones de servidor variadas: Procura distribuir tus implementaciones de servidor entre otros proyectos o proveedores. Esto puede aumentar la resistencia a los ataques y reducir el impacto de las vulnerabilidades propias de una implementación determinada.

Detección de vulnerabilidades con Snyk

  1. amphp/http (CVE-2024-2653): asignación de recursos sin límites ni restricciones

  2. Apache HTTP Server (CVE-2024-27316): consumo incontrolado de recursos («agotamiento de recursos»)

  3. Apache Tomcat (CVE-2024-24549): validación incorrecta de entradas

  4. Apache Traffic Server (CVE-2024-31309): consumo incontrolado de recursos («agotamiento de recursos»)

  5. Envoy proxy (CVE-2024-27919 y CVE-2024-30255): detección de una condición de error sin acción y consumo incontrolado de recursos («agotamiento de recursos») 

  6. Golang (CVE-2023-45288): agotamiento de recursos

  7. crate de Rust h2

  8. nghttp2 (CVE-2024-28182): agotamiento de recursos

  9. Node.js (CVE-2024-27983): agotamiento de recursos

  10. Tempesta FW (CVE-2024-2758): asignación de recursos sin límites ni mecanismos de limitación de tasa

Referencias

  1. https://nowotarski.info/

  2. https://nowotarski.info/http2-continuation-flood-technical-details/#reachable-assertion-crash-nodejs-special-case 

  3. https://datatracker.ietf.org/doc/html/rfc7540 

  4. https://www.securityweek.com/new-http-2-dos-attack-potentially-more-severe-than-record-breaking-rapid-reset/

Mantén seguras tus dependencias de código abierto

Snyk ofrece pull requests de corrección con un clic para dependencias vulnerables de código abierto y sus dependencias transitivas.