V různých implementacích protokolu HTTP/2 bylo identifikováno 8 zranitelností DoS

Výzkumníci z Netflixu a Google identifikován Existuje osm zranitelností v různých implementacích protokolu HTTP/2, které mohou způsobit odmítnutí služby odesláním proudu síťových požadavků určitým způsobem. Problém se do určité míry týká většiny serverů HTTP s podporou HTTP/2 a vede k tomu, že pracovníkovi dochází paměť nebo příliš zatěžuje procesor. Aktualizace, které odstraňují zranitelnosti, jsou již uvedeny v nginx 1.16.1/1.17.3 и H2O 2.2.6, ale zatím nedostupný pro Apache httpd a Ostatní produkty.

Problémy vyplynuly z komplikací zavedených do protokolu HTTP/2 spojených s používáním binárních struktur, systémem pro omezování datových toků v rámci připojení, mechanismem upřednostňování toku a přítomností řídicích zpráv podobných ICMP fungujících na připojení HTTP/2. úroveň (například ping, reset a nastavení toku). Mnoho implementací řádně neomezovalo tok řídicích zpráv, neřídilo efektivně frontu s prioritou při zpracování požadavků nebo používalo neoptimální implementace algoritmů řízení toku.

Většina identifikovaných metod útoku spočívá v odesílání určitých požadavků na server, což vede ke generování velkého počtu odpovědí. Pokud klient nečte data ze soketu a neuzavře spojení, fronta ukládání do vyrovnávací paměti na straně serveru se neustále plní. Toto chování zatěžuje systém správy front pro zpracování síťových připojení a v závislosti na funkcích implementace vede k vyčerpání dostupné paměti nebo prostředků CPU.

Zjištěná zranitelnost:

  • CVE-2019-9511 (Data Dribble) – útočník požaduje velké množství dat do více vláken tím, že manipuluje s velikostí posuvného okna a prioritou vlákna, čímž přinutí server zařadit data do fronty v 1bajtových blocích;
  • CVE-2019-9512 (Ping Flood) – útočník neustále otravuje pingové zprávy přes HTTP/2 spojení, což způsobuje zahlcení interní fronty odeslaných odpovědí na druhé straně;
  • CVE-2019-9513 (Resource Loop) – útočník vytvoří více vláken požadavků a průběžně mění prioritu vláken, což způsobuje zamíchání stromu priorit;
  • CVE-2019-9514 (Reset Flood) – útočník vytvoří více vláken
    a prostřednictvím každého vlákna odešle neplatný požadavek, což způsobí, že server odešle rámce RST_STREAM, ale nepřijme je, aby naplnily frontu odpovědí;

  • CVE-2019-9515 (Settings Flood) - útočník odešle proud prázdných rámců „SETTINGS“, na které musí server potvrdit přijetí každého požadavku;
  • CVE-2019-9516 (0-Length Headers Leak) – útočník odešle proud záhlaví s null názvem a null hodnotou a server alokuje vyrovnávací paměť v paměti pro uložení každé hlavičky a neuvolní ji, dokud relace neskončí ;
  • CVE-2019-9517 (Interní ukládání do vyrovnávací paměti) – útočník se otevře
    HTTP/2 posuvné okno pro server k odesílání dat bez omezení, ale udržuje okno TCP zavřené, což zabraňuje skutečnému zápisu dat do soketu. Dále útočník odešle požadavky, které vyžadují velkou odezvu;

  • CVE-2019-9518 (Potopa prázdných rámců) – Útočník odešle proud rámců typu DATA, HEADERS, CONTINUATION nebo PUSH_PROMISE, ale s prázdnou užitečnou zátěží a bez příznaku ukončení toku. Server tráví čas zpracováním každého snímku, neúměrný šířce pásma spotřebované útočníkem.

Zdroj: opennet.ru

Přidat komentář