Au fost identificate 2 vulnerabilități DoS în diferite implementări ale protocolului HTTP/8

Cercetători de la Netflix și Google dezvăluit Există opt vulnerabilități în diverse implementări ale protocolului HTTP/2 care pot provoca o refuz de serviciu prin trimiterea unui flux de solicitări de rețea într-un anumit mod. Problema afectează majoritatea serverelor HTTP cu suport HTTP/2 într-o oarecare măsură și are ca rezultat ca lucrătorul să rămână fără memorie sau să creeze prea multă încărcare CPU. Actualizările care elimină vulnerabilitățile sunt deja prezentate în nginx 1.16.1/1.17.3 и H2O 2.2.6, dar deocamdată indisponibil pentru Apache httpd și alte produse.

Problemele au rezultat din complicațiile introduse în protocolul HTTP/2 asociate cu utilizarea structurilor binare, un sistem de limitare a fluxurilor de date în cadrul conexiunilor, un mecanism de prioritizare a fluxului și prezența mesajelor de control asemănătoare ICMP care operează la conexiunea HTTP/2. nivel (de exemplu, setări ping, resetare și flux). Multe implementări nu au limitat în mod corespunzător fluxul de mesaje de control, nu au gestionat eficient coada de prioritate la procesarea cererilor sau au folosit implementări suboptime ale algoritmilor de control al fluxului.

Cele mai multe dintre metodele de atac identificate se reduc la trimiterea anumitor cereri către server, ceea ce duce la generarea unui număr mare de răspunsuri. Dacă clientul nu citește date din socket și nu închide conexiunea, coada de răspunsuri tampon de pe partea serverului se umple continuu. Acest comportament creează o sarcină asupra sistemului de management al cozilor pentru procesarea conexiunilor de rețea și, în funcție de caracteristicile de implementare, duce la epuizarea memoriei disponibile sau a resurselor CPU.

Vulnerabilitati identificate:

  • CVE-2019-9511 (Data Dribble) - un atacator solicită o cantitate mare de date în mai multe fire prin manipularea dimensiunii ferestrei glisante și a priorității firului, forțând serverul să pună datele în coadă în blocuri de 1 octet;
  • CVE-2019-9512 (Ping Flood) - un atacator otrăvește în mod continuu mesajele ping printr-o conexiune HTTP/2, determinând coada internă de răspunsuri trimise să inundați pe cealaltă parte;
  • CVE-2019-9513 (Resource Loop) - un atacator creează mai multe fire de execuție de solicitare și modifică continuu prioritatea firelor de execuție, determinând amestecarea arborelui de priorități;
  • CVE-2019-9514 (Reset Flood) - un atacator creează mai multe fire
    și trimite o solicitare nevalidă prin fiecare fir, determinând serverul să trimită cadre RST_STREAM, dar nu le acceptă pentru a umple coada de răspuns;

  • CVE-2019-9515 (Settings Flood) - atacatorul trimite un flux de cadre „SETTINGS” goale, ca răspuns la care serverul trebuie să confirme primirea fiecărei cereri;
  • CVE-2019-9516 (0-Length Headers Leak) – un atacator trimite un flux de antete cu un nume nul și o valoare nulă, iar serverul alocă un buffer în memorie pentru a stoca fiecare antet și nu îl eliberează până la sfârșitul sesiunii ;
  • CVE-2019-9517 (Internal Data Buffering) - atacatorul se deschide
    Fereastra glisantă HTTP/2 pentru ca serverul să trimită date fără restricții, dar menține fereastra TCP închisă, împiedicând scrierea efectivă a datelor în socket. Apoi, atacatorul trimite cereri care necesită un răspuns mare;

  • CVE-2019-9518 (Empty Frames Flood) - Un atacator trimite un flux de cadre de tip DATA, HEADERS, CONTINUATION sau PUSH_PROMISE, dar cu sarcină utilă goală și fără semnalizare de terminare a fluxului. Serverul petrece timp procesând fiecare cadru, disproporționat cu lățimea de bandă consumată de atacator.

Sursa: opennet.ru

Adauga un comentariu