V rôznych implementáciách protokolu HTTP/2 bolo identifikovaných 8 zraniteľností DoS

Výskumníci z Netflixu a Google identifikované Existuje osem zraniteľností v rôznych implementáciách protokolu HTTP/2, ktoré môžu spôsobiť odmietnutie služby odosielaním prúdu sieťových požiadaviek určitým spôsobom. Problém sa do určitej miery týka väčšiny serverov HTTP s podporou HTTP/2 a vedie k tomu, že pracovníkovi dochádza pamäť alebo sa príliš zaťažuje procesor. Aktualizácie, ktoré eliminujú zraniteľnosti, sú už prezentované v nginx 1.16.1/1.17.3 и H2 2.2.6, ale zatiaľ nedostupné pre Apache httpd a iné produkty.

Problémy vyplynuli z komplikácií zavedených do protokolu HTTP/2 spojených s používaním binárnych štruktúr, systémom na obmedzenie dátových tokov v rámci pripojení, mechanizmom uprednostňovania toku a prítomnosťou riadiacich správ podobných ICMP fungujúcich na spojení HTTP/2. úroveň (napríklad ping, reset a nastavenia toku). Mnohé implementácie správne neobmedzovali tok riadiacich správ, neriadili efektívne fronty priorít pri spracovávaní požiadaviek alebo používali suboptimálne implementácie algoritmov riadenia toku.

Väčšina identifikovaných metód útoku spočíva v odosielaní určitých požiadaviek na server, čo vedie ku generovaniu veľkého počtu odpovedí. Ak klient nečíta údaje zo soketu a neuzavrie spojenie, front na ukladanie odpovedí na strane servera sa neustále zapĺňa. Toto správanie vytvára zaťaženie systému riadenia frontov na spracovanie sieťových pripojení a v závislosti od funkcií implementácie vedie k vyčerpaniu dostupnej pamäte alebo zdrojov CPU.

Identifikované slabé miesta:

  • CVE-2019-9511 (Data Dribble) – útočník požaduje veľké množstvo údajov do viacerých vlákien manipuláciou s veľkosťou posuvného okna a prioritou vlákna, čím prinúti server zaradiť údaje do frontu v 1-bajtových blokoch;
  • CVE-2019-9512 (Ping Flood) – útočník neustále otravuje pingové správy cez HTTP/2 pripojenie, čo spôsobuje zahltenie interného frontu odoslaných odpovedí na druhej strane;
  • CVE-2019-9513 (Zdrojová slučka) – útočník vytvorí viacero vlákien požiadaviek a priebežne mení prioritu vlákien, čo spôsobí zamiešanie stromu priorít;
  • CVE-2019-9514 (Reset Flood) – útočník vytvorí viacero vlákien
    a odošle neplatnú požiadavku cez každé vlákno, čo spôsobí, že server pošle rámce RST_STREAM, ale neprijme ich, aby zaplnili front odpovedí;

  • CVE-2019-9515 (Záplava nastavení) - útočník odošle prúd prázdnych rámcov „NASTAVENIA“, na ktoré musí server potvrdiť prijatie každej požiadavky;
  • CVE-2019-9516 (0-Length Headers Leak) – útočník odošle prúd hlavičiek s nulovým názvom a hodnotou null a server pridelí vyrovnávaciu pamäť v pamäti na uloženie každej hlavičky a neuvoľní ju, kým sa relácia neskončí ;
  • CVE-2019-9517 (Internal Data Buffering) – útočník sa otvorí
    HTTP/2 posuvné okno pre server na odosielanie dát bez obmedzení, ale ponecháva okno TCP zatvorené, čím bráni tomu, aby sa dáta skutočne zapisovali do soketu. Ďalej útočník odošle požiadavky, ktoré vyžadujú veľkú odozvu;

  • CVE-2019-9518 (Empty Frames Flood) – Útočník odošle prúd rámcov typu DATA, HEADERS, CONTINUATION alebo PUSH_PROMISE, ale s prázdnym užitočným zaťažením a bez príznaku ukončenia toku. Server trávi čas spracovaním každého rámca, ktorý je neúmerný šírke pásma spotrebovanej útočníkom.

Zdroj: opennet.ru

Pridať komentár