Ranljivost u HTTP/2 protokolu korištena u najvećem DDoS napadu

Tvrtka Google zabilježila je najveći DDoS napad na svoju infrastrukturu, čija je intenzivnost iznosila 398 milijuna zahtjeva u sekundi. Novi napad sedam puta premašuje intenzitet prethodnog rekordnog DDoS napada, u kojem su napadači uspjeli stvoriti protok od 47 milijuna zahtjeva u sekundi. Za usporedbu, ukupni promet na cijelom Webu procjenjuje se na razini od 1-3 milijarde zahtjeva u sekundi. Osim Googlea, napad su također doživjeli tvrtke Amazon i Cloudflare. Mogućnost izvođenja novog napada povezana je s otkrivanjem ranjivosti u HTTP/2 protokolu (CVE-2023-44487), koja omogućava slanje ogromnog protoka zahtjeva na poslužitelj uz minimalno opterećenje klijenta.

Nova tehnika napada naziva se 'Rapid Reset' i koristi se time što dostupna sredstva višekanalnog multiplexiranja u HTTP/2 omogućuju stvaranje protoka zahtjeva unutar već uspostavljenih veza, bez otvaranja novih mrežnih veza i bez čekanja na potvrdu primitka paketa. Ranjivost se smatra posljedicom nedovršenosti HTTP/2 protokola, čiji specifikacija navodi da prilikom pokušaja otvaranja prevelikog broja tokova, treba poništiti samo tokove koji premašuju limit, ali ne zatvarati cijelu mrežnu vezu.

Slično ranije primijenjenim metodama izvođenja napada na HTTP/2, novi napad također stvara veliki broj tokova unutar jedne veze. Ključna razlika novog napada je što umjesto čekanja na odgovor, odmah nakon svakog poslanog zahtjeva dolazi okvir s RST_STREAM oznakom, koji odmah poništava zahtjev. Poništavanje zahtjeva u ranoj fazi omogućava eliminaciju povratnog prometa prema klijentu i zaobilaženje ograničenja prisutnih na HTTP poslužiteljima koja se odnose na maksimalni mogući broj tokova koji se istovremeno otvaraju unutar jedne veze putem HTTP/2. Tako, u novom napadu, volumen zahtjeva upućenih HTTP poslužitelju prestaje ovisiti o kašnjenju između slanja zahtjeva i primanja odgovora (RTT, round-trip time) i oslanja se samo na propusnost komunikacijskog kanala.

Ranljivost u HTTP/2 protokolu korištena u najvećem DDoS napadu

Budući da je za napad na strani klijenta dovoljno samo slati zahtjeve bez primanja odgovora, napad se može provesti uz minimalne troškove. Na primjer, napad koji je zabilježila tvrtka Cloudflare s 201 milijun zahtjeva u sekundi proveden je uz pomoć relativno malog botneta od 20 tisuća računala. Na strani poslužitelja troškovi obrade dolaznih zahtjeva su znatno viši, unatoč njihovom otkazivanju, jer je potrebno izvršiti radnje poput alokacije struktura podataka za nove protoke, parsiranje zahtjeva, dekompresiju zaglavlja i usklađivanje URL-a s resursom. U napadu na obrnute proksije, napad se može proširiti na backend sustave, jer proksija može uspjeti preusmjeriti zahtjev na backend prije nego što obradi RST_STREAM okvir.

Napad se može izvesti samo na ranjive poslužitelje koji podržavaju HTTP/2 (skripta za provjeru manifestacije ranjivosti na poslužiteljima, alat za izvođenje napada). Za HTTP/3 napadi još nisu zabilježeni, a mogućnost njihovog izvođenja nije potpuno analizirana, no predstavnici Googlea preporučuju programerima poslužitelja da dodaju u implementacije HTTP/3 sigurnosne mjere slične onima koje su provedene za blokiranje napada na HTTP/2.

Podložnost ranjivosti i dostupnost ispravaka za HTTP poslužitelje i proksije:

  • nginx (najava, objašnjenje da ranjivost ne manifestira u potpunosti u nginx-u s zadanim konfiguracijama, jer će se napad suočiti s limitom na broj zahtjeva po vezi (tj. nakon svaka 1000 zahtjeva veza će biti prekinuta). Ispravci uključuju dodatnu zaštitu ograničavanjem intenziteta zahtjeva putem direktive „limit_req”).
  • U HAProxy učinkovita zaštita od prekoračenja limita broja HTTP/2 tokova dodana je još 2018. godine i djeluje od verzije 1.9-dev.
  • Apache httpd (stvara se određeno opterećenje na httpd-u, ali se to ne prenosi na backend sustave i ograničeno je na postojeće limite za klijentske veze iz 2016. godine).
  • mod_h2 za Apache httpd.
  • caddy
  • envoy
  • golang (problem je riješen u izdanjima Go 1.21.3 i 1.20.10).
  • h2o (zakrpa).
  • grpc-go
  • hyper (ranjivost se ne manifestira).
  • jetty (ispravljeno u verzijama 12.0.2, 11.0.17, 10.0.17 i 9.4.53.v20231009).
  • netty
  • nghttp2 (ispravljeno u verziji 1.57.0).
  • Facebook proxygen
  • .NET i ASP.NET Core (ranjivosti je podložan http-server ASP.NET Core Kestrel).
  • Node.js
  • proxygen
  • swift-nio-http2 (ispravljeno u verziji 1.28.0).
  • Apache Tomcat (ispravljeno u verzijama 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
  • Apache Traffic Server (ispravljeno u grani 9.2.x).

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster