2 vulnerabilidades DoS foram identificadas em várias implementações do protocolo HTTP/8

Pesquisadores da Netflix e do Google identificado Existem oito vulnerabilidades em várias implementações do protocolo HTTP/2 que podem causar negação de serviço ao enviar um fluxo de solicitações de rede de uma determinada maneira. O problema afeta a maioria dos servidores HTTP com suporte HTTP/2 até certo ponto e resulta na falta de memória do trabalhador ou na criação de muita carga de CPU. Atualizações que eliminam vulnerabilidades já são apresentadas em nginx 1.16.1/1.17.3 и H2O 2.2.6Mas para agora indisponível para Apache httpd e outros produtos.

Os problemas resultaram de complicações introduzidas no protocolo HTTP/2 associadas ao uso de estruturas binárias, um sistema para limitar fluxos de dados dentro de conexões, um mecanismo de priorização de fluxo e a presença de mensagens de controle do tipo ICMP operando na conexão HTTP/2. nível (por exemplo, configurações de ping, redefinição e fluxo). Muitas implementações não limitaram adequadamente o fluxo de mensagens de controle, não gerenciaram com eficiência a fila de prioridade ao processar solicitações ou usaram implementações abaixo do ideal de algoritmos de controle de fluxo.

A maioria dos métodos de ataque identificados resume-se ao envio de determinadas solicitações ao servidor, levando à geração de um grande número de respostas. Se o cliente não ler os dados do soquete e não fechar a conexão, a fila de buffer de resposta no lado do servidor será preenchida continuamente. Esse comportamento cria uma carga no sistema de gerenciamento de filas para processamento de conexões de rede e, dependendo dos recursos de implementação, leva ao esgotamento da memória disponível ou dos recursos de CPU.

Vulnerabilidades identificadas:

  • CVE-2019-9511 (Dribble de dados) – um invasor solicita uma grande quantidade de dados em vários threads, manipulando o tamanho da janela deslizante e a prioridade do thread, forçando o servidor a enfileirar os dados em blocos de 1 byte;
  • CVE-2019-9512 (Ping Flood) – um invasor envenena continuamente mensagens de ping em uma conexão HTTP/2, fazendo com que a fila interna de respostas enviadas seja inundada no outro lado;
  • CVE-2019-9513 (Loop de recursos) – um invasor cria vários threads de solicitação e altera continuamente a prioridade dos threads, fazendo com que a árvore de prioridades seja embaralhada;
  • CVE-2019-9514 (Reset Flood) – um invasor cria vários threads
    e envia uma solicitação inválida através de cada thread, fazendo com que o servidor envie frames RST_STREAM, mas não os aceite para preencher a fila de resposta;

  • CVE-2019-9515 (Inundação de configurações) - o invasor envia um fluxo de frames “SETTINGS” vazios, em resposta aos quais o servidor deve acusar o recebimento de cada solicitação;
  • CVE-2019-9516 (Vazamento de cabeçalhos de comprimento 0) – um invasor envia um fluxo de cabeçalhos com um nome nulo e um valor nulo, e o servidor aloca um buffer na memória para armazenar cada cabeçalho e não o libera até que a sessão termine ;
  • CVE-2019-9517 (Buffering de dados interno) – invasor abre
    Janela deslizante HTTP/2 para o servidor enviar dados sem restrições, mas mantém a janela TCP fechada, evitando que os dados sejam realmente gravados no soquete. Em seguida, o invasor envia solicitações que exigem uma resposta grande;

  • CVE-2019-9518 (Empty Frames Flood) – Um invasor envia um fluxo de frames do tipo DATA, HEADERS, CONTINUATION ou PUSH_PROMISE, mas com carga útil vazia e sem sinalizador de encerramento de fluxo. O servidor gasta um tempo processando cada quadro, desproporcional à largura de banda consumida pelo invasor.

Fonte: opennet.ru

Adicionar um comentário