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

Cercetătorii de la companiile Netflix și Google au identificat au descoperit opt vulnerabilități în diferitele implementări ale protocolului HTTP/2, care permit provocarea unui atac de tip denial of service prin trimiterea unui flux de cereri de rețea formatate într-un anumit mod. Problemele afectează în diverse măsuri majoritatea serverelor HTTP care suportă HTTP/2 și duc la epuizarea memoriei disponibile pentru procesele de lucru sau la o încărcătură prea mare pe CPU. Actualizările care remediază vulnerabilitățile au fost deja prezentate în nginx 1.16.1/1.17.3 și H2O 2.2.6, dar până acum inaccessible pentru Apache httpd și alte produse.

Problemele au fost cauzate de complexitățile introduse în protocolul HTTP/2, legate de utilizarea structurilor binare, sistemul de limitare a fluxurilor de date în cadrul conexiunilor, mecanismul de priorizare a fluxurilor și existența mesajelor de control asemănătoare ICMP, care funcționează la nivelul conexiunii HTTP/2 (de exemplu, operațiunile ping, resetarea și configurarea fluxului). Multe implementări nu au limitat corespunzător fluxul mesajelor de control, au organizat ineficient funcționarea cozii de priorități la procesarea cererilor sau au folosit implementări suboptime ale algoritmului de control al fluxului.

Cele mai multe dintre metodele de atac identificate se reduc la trimiterea către server a unor cereri specifice, care duc la generarea unui număr mare de răspunsuri. Dacă clientul nu citește datele din socket și nu întrerupe conexiunea, coada de bufferizare a răspunsurilor de pe partea serverului se umple continuu. Un astfel de comportament generează o sarcină pe sistemul de gestionare a cozii de procesare a conexiunilor de rețea și, în funcție de particularitățile implementării, duce la epuizarea memoriei disponibile sau a resurselor CPU.

Vulnerabilitățile identificate:

  • CVE-2019-9511 (Data Dribble) - atacatorul solicită un volum mare de date în mai multe fluxuri, manipulând dimensiunea feronului de fereastră și prioritatea fluxului, forțând serverul să pună datele în coadă în blocuri de 1 byte;
  • CVE-2019-9512 (Ping Flood) - atacatorul trimite continuu mesaje ping prin conexiunea HTTP/2, inițiind umplerea părții opuse a cozii de internă a răspunsurilor trimise;
  • CVE-2019-9513 (Resource Loop) - atacatorul creează mai multe fluxuri de cereri și schimbă continuu prioritatea fluxurilor, provocând amestecarea arborilor de priorități;
  • CVE-2019-9514 (Reset Flood) - atacatorul creează mai multe fluxuri
    și trimite prin fiecare flux o cerere incorectă, provocând trimiterea de către server a cadrelor RST_STREAM, dar nu le acceptă pentru umplerea cozii de răspunsuri;
  • CVE-2019-9515 (Settings Flood) — atacatorul trimite un flux de cadre goale „SETTINGS”, la care serverul este obligat să confirme primirea fiecărei cereri;
  • CVE-2019-9516 (0-Length Headers Leak) — atacatorul trimite un flux de antete cu nume nul și valoare nulă, iar serverul alocă un buffer în memorie pentru a stoca fiecare antet și nu-l eliberează până la terminarea sesiunii;
  • CVE-2019-9517 (Internal Data Buffering) — atacatorul deschide
    fereastra glisantă HTTP/2 pentru a trimite date de către server fără restricții, dar menține fereastra TCP închisă, ceea ce nu permite efectiv scrierea datelor în socket. Apoi, atacatorul trimite cereri care necesită un răspuns mare;
  • CVE-2019-9518 (Empty Frames Flood) — atacatorul trimite un flux de cadre de tip DATA, HEADERS, CONTINUATION sau PUSH_PROMISE, dar cu un conținut util gol și fără flag de încheiere a fluxului. Serverul își pierde timpul procesând fiecare cadru, disproporționat față de lățimea de bandă consumată de atacator.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster