V různých implementacích protokolu HTTP/2 bylo zjištěno 8 DoS zranitelností

Výzkumníci ze společností Netflix a Google odhalili nalezli v různých implementacích protokolu HTTP/2 osm zranitelností, které umožňují vyvolat odmítnutí služby tím, že se odešle specificky formátovaný proud síťových požadavků. Problémy v různé míře ovlivňují většinu HTTP serverů s podporou HTTP/2 a vedou k vyčerpání dostupné pracovní paměti nebo vytvářejí příliš vysoké zatížení CPU. Opravy zranitelností již byly vydány v nginx 1.16.1/1.17.3 a H2O 2.2.6, ale zatím nedostupné pro Apache httpd a další produkty.

Problémy byly důsledkem komplikací zavedených do protokolu HTTP/2, spojených s použitím binárních struktur, systémem omezení datových proudů v rámci spojení, mechanismem prioritizace proudů a přítomností zpráv pro správu podobných ICMP, které fungují na úrovni HTTP/2 (například operace ping, resetování a nastavení proudu). Mnohé implementace adekvátně neomezovaly tok správy zpráv, neefektivně organizovaly práci prioritních front při zpracování požadavků nebo používaly neoptimální implementace algoritmů řízení toku.

Většina identifikovaných metod útoku spočívá v odesílání specifických požadavků na server, což vede k generování velkého počtu odpovědí. Pokud klient přitom nečte data ze socketu a neukončuje spojení, fronta vyrovnávání odpovědí na straně serveru se neustále plní. Takové chování vytváří zátěž na systém řízení front zpracování síťových spojení a v závislosti na specifikách implementace může vést k vyčerpání dostupné paměti nebo zdrojů CPU.

Zjištěné zranitelnosti:

  • CVE-2019-9511 (Data Dribble) — útočník žádá velké množství dat ve více tocích, manipuluje s velikostí posuvného okna a prioritou proudu, což nutí server ukládat data do fronty po blocích o 1 bajtu;
  • CVE-2019-9512 (Ping Flood) — útočník neustále posílá ping zprávy prostřednictvím spojení HTTP/2, čímž iniciuje vyplnění vnitřní fronty zaslaných odpovědí na druhé straně;
  • CVE-2019-9513 (Resource Loop) — útočník vytváří několik toků požadavků a neustále mění priority toků, což způsobuje promíchání prioritního stromu;
  • CVE-2019-9514 (Reset Flood) — útočník vytváří několik proudů
    a odesílá každý tok neplatného požadavku, což vyvolává odeslání paketů RST_STREAM serverem, ale neakceptuje je pro vyplnění fronty odpovědí;
  • CVE-2019-9515 (Záplava nastavení) – útočník odesílá tok prázdných rámců "SETTINGS", na které server musí potvrdit přijetí každého požadavku;
  • CVE-2019-9516 (Únik záhlaví o délce 0) – útočník odesílá tok záhlaví s nulovým názvem a nulovou hodnotou, zatímco server alokuje pro každé záhlaví vyrovnávací paměť v paměti a neuvolňuje ji až do ukončení relace;
  • CVE-2019-9517 (Interní vyrovnávací paměť dat) – útočník otevírá
    klouzavé okno HTTP/2 pro odeslání dat serverem bez omezení, ale přitom drží okno TCP zavřené, což neumožňuje skutečně zapisovat data do soketu. Poté útočník odesílá požadavky, které vyžadují velkou odpověď;
  • CVE-2019-9518 (Záplava prázdných rámců) – útočník odesílá tok rámců typu DATA, HEADERS, CONTINUATION nebo PUSH_PROMISE, ale s prázdným užitečným obsahem a bez příznaku dokončení toku. Server ztrácí čas zpracováním každého rámce, nepřiměřeně odpovídající šířce pásma útočníka.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster