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

Výskumníci zo spoločností Netflix a Google odhalili v rôznych implementáciách protokolu HTTP/2 identifikovali osem zraniteľností, ktoré umožňujú spôsobiť odmietnutie služby prostredníctvom zasielania špeciálne tvarovaných sieťových požiadaviek. Problémy v menšej či väčšej miere zasahujú väčšinu HTTP serverov s podporou HTTP/2 a vedú k vyčerpaniu dostupnej pamäte pre proces alebo vytvoreniu príliš vysokého zaťaženia CPU. Aktualizácie na odstránenie zraniteľností už boli predstavené v nginx 1.16.1/1.17.3 a H2O 2.2.6, ale zatiaľ nie sú dostupné pre Apache httpd a iné produkty.

Problémy boli následkom zmien v protokole HTTP/2, spojených s použitím binárnych štruktúr, systémom limitovania prúdov dát v rámci spojení, mechanizmom priorizácie prúdov a existenciou správ podobných ICMP, ktoré pracujú na úrovni spojení HTTP/2 (napríklad operácie ping, reset a nastavenie prúdu). Mnohé implementácie správne neobmedzovali tok riadiacich správ, neefektívne organizovali prácu frontu priorít pri spracovaní požiadaviek alebo používali suboptimalizované implementácie algoritmov správy prúdu.

Väčšina identifikovaných metód útoku spočíva v zasielaní určitých požiadaviek na server, ktoré vedú k generovaniu veľkého množstva odpovedí. Ak pritom klient nečíta údaje zo soketu a nepreruší spojenie, fronta vyrovnávacej pamäte odpovedí na strane servera sa nepretržite zapĺňa. Takéto správanie vytvára záťaž na systém správy frontu spracovania sieťových spojení a v závislosti od špecifík implementácie vedie k vyčerpaniu dostupnej pamäte alebo CPU.

Odhalené zraniteľnosti:

  • CVE-2019-9511 (Data Dribble) — útočník žiada veľké množstvo dát v niekoľkých prúdoch, manipuluje s veľkosťou kĺzavého okna a prioritou prúdu, čím núti server vkladať dáta do fronty blokmi po 1 bite;
  • CVE-2019-9512 (Ping Flood) — útočník nepretržite zasiela ping správy prostredníctvom spojenia HTTP/2, iniciujúc zaplnenie na druhej strane vnútornej fronty odoslaných odpovedí;
  • CVE-2019-9513 (Resource Loop) — útočník vytvára niekoľko prúdov požiadaviek a nepretržite mení prioritu prúdov, spôsobujúc zamieňanie stromu priorít;
  • CVE-2019-9514 (Reset Flood) — útočník vytvára niekoľko prúdov
    a odosiela neplatný dopyt cez každý tok, čo spôsobuje, že server odosiela snímky RST_STREAM, ale ich neprijíma na naplnenie fronty odpovedí;
  • CVE-2019-9515 (Záplava nastavení) — útočník posiela tok prázdnych snímok «SETTINGS», na ktoré musí server potvrdiť prijatie každého dopytu;
  • CVE-2019-9516 (Únik hlavičiek s nulovou dĺžkou) — útočník posiela tok hlavičiek s nulovým menom a nulovou hodnotou, pričom server pridelí pre každý hlavičku v pamäti vyrovnávaciu pamäť a neuvoľní ju až do konca relácie;
  • CVE-2019-9517 (Interné vyrovnávanie dát) — útočník otvára
    posuvné okno HTTP/2 na odosielanie dát serverom bez obmedzení, avšak udržiava okno TCP uzavreté, čo neumožňuje skutočne zapísať dáta do zásuvky. Potom útočník posiela dopyty vyžadujúce veľkú odpoveď;
  • CVE-2019-9518 (Záplava prázdnych snímok) — útočník posiela tok snímok typu DATA, HEADERS, CONTINUATION alebo PUSH_PROMISE, ale s prázdnym obsahom a bez príznaku ukončenia toku. Server trávi čas spracovaním každej snímky, čo je neprimerané voči šírke pásma, ktorú útočník vynakladá.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster