HTTP/2 fue lanzado en mayo del año pasado, cuando Google empaquetó el proyecto SPDY en dicho protocolo en febrero del mismo año, en un esfuerzo por acelerar la carga de los sitios web y mejorar la experiencia a la hora de navegar. El protocolo que nos ocupa puede ser dividido en tres capas:

  • La capa de transmisión que incluye las propias transmisiones de datos, los marcos y el control de flujo.
  • El binario de cifrado HPACK y el protocolo de compresión.
  • La capa de semántica, que es una versión mejorada de la versión implementada en HTTP/1.1 enriquecida con capacidades para hacer subidas al servidor.

Los investigadores han analizado en profundidad las implementaciones de HTTP/2 de Apache, Microsoft, NGINX, Jetty y nghttp2, descubriendo fallos en todas las grandes implementaciones de este protocolo, incluyendo dos que son muy similares a otros fallos conocidos de HTTP/1.X.

Los cuatro fallos descubiertos por los investigadores de Imperva son los siguientes.

Lectura Lenta (CVE-2016-1546)

Lectura-Lenta-en-HTTP-2-CVE-2016.png

Es idéntico a Slowris, el mayor ataque DDoS realizado contra los principales servicios de tarjetas de crédito y que se produjo en 2010. Con un ataque de Lectura Lenta (Slow Read) se puede realizar llamadas un cliente malicioso para que lea respuestas de forma muy lenta. Además de HTTP/2, también afecta a versiones anteriores del mismo protocolo e Imperva ha descubierto variantes de esta vulnerabilidad que afectan a las distintas implementaciones de Apache, IIS, Jetty, NGINX y nghttp2.

HPACK Bomb (CVE-2016-1544, CVE-2016-2525)

HPACK-Bomb-en-HTTP-2-CVE-2016.png

HPACK Bomb es una capa de compresión de ataque que se asemeja a una bomba de descompresión. HPACK es utilizado para reducir el tamaño de las cabeceras de los paquetes HTTP, pudiendo el emisor decir al receptor el tamaño máximo de la tabla de compresión de cabecera utilizado para decodificar las cabeceras.

Un hacker puede crear pequeños mensajes que terminan desempaquetando gigabytes de datos en el servidor, consumiendo todos los recursos de memoria del servidor y provocando ralentizaciones o incluso su caída.

Imperva ha sido capaz de crear una cabecera de 4 kilobytes de tamaño para luego, en la misma conexión, se abra nuevas transmisiones que hacen referencia a la cabecera inicial tantas veces como sea posible, subiendo el tamaño de las cabeceras de referencia a 16KB. Después de realizar 14 transmisiones, la conexión había consumido casi 900MB de memoria en el servidor después de la descompresión, provocando su caída.

Ataque de Ciclo de Dependencia (CVE-2015-8659)

Ataque-de-Ciclo-de-Dependencia-en-HTTP-2-CVE-2015.png

Este ataque se apoya en el mecanismo de flujo de control de HTTP/2, utilizado para la optimización de la red.

Un cliente malintencionado puede realizar peticiones específicamente diseñadas para provocar un ciclo de dependencia, forzando al servidor a realizar un bucle infinito y pudiendo causar un ataque DDoS o incluso ejecutar código arbitrario en el sistema.

Abuso de multiplexación en las conexiones (CVE-2016-0150)

Abuso-de-multiplexacion-en-las-conexiones-en-HTTP-2-CVE-2016.png

Permite a un atacante explotar vulnerabilidades en la manera en que los servidores implementan la función de multiplexación en las conexiones para provocar una caída en el servidor, pudiendo tener como consecuencia una denegación de servicio (DDoS).

Conclusión

Las cuatro vulnerabilidades que nos ocupan en este artículo pueden ser combinadas de distinta manera según el servidor HTTP que se pretenda atacar.

Desde Imperva no se han mostrado sorprendidos al ver fallos de HTTP/1.X en HTTP/2, diciendo además que en toda nueva tecnología las empresas tendrían que poner todo su empeño para implementar salvaguardas que ayuden a reducir la superficie de ataque y proteger los datos críticos de amenazas cibernéticas.

 

Más información: Imperva

Fuente: The Hacker News | muyseguridad