Se han identificado 2 vulnerabilidades DoS en varias implementaciones del protocolo HTTP/8

Investigadores de Netflix y Google identificado Hay ocho vulnerabilidades en varias implementaciones del protocolo HTTP/2 que pueden provocar una denegación de servicio al enviar un flujo de solicitudes de red de una determinada manera. El problema afecta a la mayoría de los servidores HTTP con soporte HTTP/2 hasta cierto punto y hace que el trabajador se quede sin memoria o genere demasiada carga de CPU. Las actualizaciones que eliminan vulnerabilidades ya se presentan en nginx 1.16.1/1.17.3 и H2O 2.2.6pero por ahora no disponible para Apache httpd y otros productos.

Los problemas resultaron de complicaciones introducidas en el protocolo HTTP/2 asociadas con el uso de estructuras binarias, un sistema para limitar los flujos de datos dentro de las conexiones, un mecanismo de priorización de flujo y la presencia de mensajes de control similares a ICMP que operan en la conexión HTTP/2. nivel (por ejemplo, ping, reinicio y configuración de flujo). Muchas implementaciones no limitaron adecuadamente el flujo de mensajes de control, no administraron eficientemente la cola de prioridad al procesar solicitudes o utilizaron implementaciones subóptimas de algoritmos de control de flujo.

La mayoría de los métodos de ataque identificados se reducen al envío de determinadas solicitudes al servidor, lo que genera una gran cantidad de respuestas. Si el cliente no lee datos del socket y no cierra la conexión, la cola de almacenamiento en búfer de respuesta en el lado del servidor se llena continuamente. Este comportamiento crea una carga en el sistema de administración de colas para procesar conexiones de red y, dependiendo de las características de implementación, conduce al agotamiento de la memoria disponible o de los recursos de CPU.

Vulnerabilidades identificadas:

  • CVE-2019-9511 (Regate de datos): un atacante solicita una gran cantidad de datos en múltiples subprocesos manipulando el tamaño de la ventana deslizante y la prioridad de los subprocesos, lo que obliga al servidor a poner en cola los datos en bloques de 1 byte;
  • CVE-2019-9512 (Ping Flood): un atacante envenena continuamente los mensajes de ping a través de una conexión HTTP/2, lo que provoca que la cola interna de respuestas enviadas se inunde en el otro lado;
  • CVE-2019-9513 (bucle de recursos): un atacante crea múltiples subprocesos de solicitud y cambia continuamente la prioridad de los subprocesos, lo que hace que el árbol de prioridades se mezcle;
  • CVE-2019-9514 (Restablecer inundación): un atacante crea varios subprocesos
    y envía una solicitud no válida a través de cada hilo, lo que hace que el servidor envíe tramas RST_STREAM, pero no las acepta para llenar la cola de respuestas;

  • CVE-2019-9515 (Inundación de configuración): el atacante envía un flujo de tramas de "CONFIGURACIÓN" vacías, en respuesta a las cuales el servidor debe acusar recibo de cada solicitud;
  • CVE-2019-9516 (fuga de encabezados de longitud 0): un atacante envía un flujo de encabezados con un nombre nulo y un valor nulo, y el servidor asigna un búfer en la memoria para almacenar cada encabezado y no lo libera hasta que finaliza la sesión. ;
  • CVE-2019-9517 (búfer de datos interno): se abre el atacante
    Ventana deslizante HTTP/2 para que el servidor envíe datos sin restricciones, pero mantiene la ventana TCP cerrada, evitando que los datos se escriban en el socket. Luego, el atacante envía solicitudes que requieren una gran respuesta;

  • CVE-2019-9518 (Inundación de fotogramas vacíos): un atacante envía un flujo de fotogramas de tipo DATOS, ENCABEZADOS, CONTINUACIÓN o PUSH_PROMISE, pero con una carga útil vacía y sin indicador de terminación de flujo. El servidor dedica un tiempo a procesar cada cuadro, un tiempo desproporcionado con respecto al ancho de banda consumido por el atacante.

Fuente: opennet.ru

Añadir un comentario