Identificáronse 2 vulnerabilidades DoS en varias implementacións do protocolo HTTP/8

Investigadores de Netflix e Google identificado Existen oito vulnerabilidades en varias implementacións do protocolo HTTP/2 que poden causar unha denegación de servizo ao enviar un fluxo de solicitudes de rede dun xeito determinado. O problema afecta ata certo punto á maioría dos servidores HTTP con compatibilidade con HTTP/2 e provoca que o traballador se quede sen memoria ou cree demasiada carga da CPU. Xa se presentan as actualizacións que eliminan vulnerabilidades nginx 1.16.1/1.17.3 и H2O 2.2.6, pero de momento non dispoñible para Apache httpd e outros produtos.

Os problemas foron resultado de complicacións introducidas no protocolo HTTP/2 asociadas co uso de estruturas binarias, un sistema para limitar os fluxos de datos dentro das conexións, un mecanismo de priorización de fluxos e a presenza de mensaxes de control similares a ICMP que operan na conexión HTTP/2. nivel (por exemplo, configuración de ping, restablecemento e fluxo). Moitas implementacións non limitaron adecuadamente o fluxo de mensaxes de control, non xestionaron de forma eficiente a cola de prioridades ao procesar as solicitudes ou utilizaron implementacións subóptimas de algoritmos de control de fluxo.

A maioría dos métodos de ataque identificados redúcense a enviar determinadas solicitudes ao servidor, o que leva á xeración dun gran número de respostas. Se o cliente non le os datos do socket e non pecha a conexión, a cola de búfer de respostas no lado do servidor échese continuamente. Este comportamento crea unha carga no sistema de xestión de filas para procesar as conexións de rede e, dependendo das características de implementación, leva ao esgotamento da memoria dispoñible ou dos recursos da CPU.

Vulnerabilidades identificadas:

  • CVE-2019-9511 (Dribble de datos): un atacante solicita unha gran cantidade de datos en varios fíos manipulando o tamaño da xanela deslizante e a prioridade de fíos, o que obriga ao servidor a poñer os datos en cola en bloques de 1 byte;
  • CVE-2019-9512 (Ping Flood): un atacante envelena continuamente as mensaxes de ping a través dunha conexión HTTP/2, o que fai que a cola interna das respostas enviadas se inunde do outro lado;
  • CVE-2019-9513 (bucle de recursos): un atacante crea varios fíos de solicitude e cambia continuamente a prioridade dos fíos, o que fai que a árbore de prioridades se mezcle;
  • CVE-2019-9514 (Restablecer Flood): un atacante crea varios fíos
    e envía unha solicitude non válida a través de cada fío, o que fai que o servidor envíe tramas RST_STREAM, pero non as acepta para cubrir a cola de respostas;

  • CVE-2019-9515 (Inundación de configuración): o atacante envía un fluxo de cadros "CONFIGURACIÓN" baleiros, en resposta ao cal o servidor debe acusar recibo de cada solicitude;
  • CVE-2019-9516 (fuga de cabeceiras de lonxitude 0): un atacante envía un fluxo de cabeceiras cun nome nulo e un valor nulo, e o servidor asigna un búfer na memoria para almacenar cada cabeceira e non o libera ata que remate a sesión ;
  • CVE-2019-9517 (almacenamento en búfer de datos internos): o atacante ábrese
    Fiestra deslizante HTTP/2 para que o servidor envíe datos sen restricións, pero mantén a ventá TCP pechada, evitando que os datos se escriban no socket. A continuación, o atacante envía solicitudes que requiren unha gran resposta;

  • CVE-2019-9518 (Empty Frames Flood): un atacante envía un fluxo de fotogramas do tipo DATA, HEADERS, CONTINUATION ou PUSH_PROMISE, pero coa carga útil baleira e sen marca de terminación de fluxo. O servidor pasa tempo procesando cada fotograma, desproporcionado co ancho de banda consumido polo atacante.

Fonte: opennet.ru

Engadir un comentario