HTTP/2 protokollban felfedezett sebezhetőség, amely a legnagyobb DDoS-támadást indította el

A Google a világ legnagyobb DDoS-támadását észlelte, amelynek intenzitása másodpercenként 398 millió kérést tett ki. Az új támadás hétszer intenzívebb a korábbi rekord DDoS-támadásnál, amelyben a támadóknak sikerült létrehozniuk egy 47 millió kérés másodpercenkénti áramlást. Összehasonlításképpen, az összes webes forgalmat 1-3 milliárd kérés másodpercenkénti szinten becsülik. A Google mellett az Amazon és a Cloudflare is szembesült a támadással. Az újabb támadás lehetősége egy HTTP/2 protokollban felfedezett sebezhetőséggel (CVE-2023-44487) hozható összefüggésbe, amely lehetővé teszi, hogy minimális terhelés mellett hatalmas számú kérés áramoljon a szerver felé.

Az új támadási technikát "Rapid Reset" néven emlegetik, és a HTTP/2 által biztosított csatorna multiplexelési eszközöket használja, amelyek lehetővé teszik a kérésáram kialakítását már létező kapcsolaton belül, anélkül, hogy új hálózati kapcsolatokat kellene nyitni és anélkül, hogy várni kellene a csomagok érkezésének megerősítésére. A sebezhetőséget a HTTP/2 protokoll hibájaként kezelik, amelynek specifikációjában azt állítják, hogy ha túl sok folyamatot próbálnak megnyitni, csak a limitet túllépő folyamatokat kell érvényteleníteni, de az egész hálózati kapcsolatot nem szabad bezárni.

Hasonlóan a korábban alkalmazott HTTP/2 támadási módszerekhez, az új támadás is nagyszámú folyamatot hoz létre egyetlen kapcsolaton belül. A legfontosabb különbség az új támadásban az, hogy minden egyes elküldött kérés után nem várakozik a válaszra, hanem azonnal egy RST_STREAM flaggel ellátott keretet küld el, amely azonnal érvényteleníti a kérést. A kérés korai érvénytelenítése lehetővé teszi a visszafelé irányuló forgalom megszüntetését a kliens irányába, és megkerüli a HTTP-szervereken meglévő korlátozásokat a maximálisan megnyitható folyamatok számát illetően egyetlen HTTP/2 kapcsolaton belül. Így az új támadás során a HTTP-szervernek küldött kérések mennyisége már nem függ a kérés elküldése és a válasz megérkezése közötti késedelmektől (RTT, round-trip time), és kizárólag a kapcsolat átviteli sebességén múlik.

HTTP/2 protokollban felfedezett sebezhetőség, amely a legnagyobb DDoS-támadást indította el

Mivel a támadáshoz elegendő egyszerűen kéréseket küldeni anélkül, hogy válaszokat kapnánk, a támadás minimális költségekkel végrehajtható. Például a Cloudflare által rögzített 201 millió kérés/másodperc támadást egy viszonylag kisméretű, 20 ezer számítógépből álló botnet segítségével hajtották végre. Az oldalon a szerver a beérkező kérelmek feldolgozási költségei jelentősen magasabbak, még a kérelmek visszavonása esetén is, mivel el kell végezni olyan műveleteket, mint az új adatfolyamokhoz kapcsolódó struktúrák kialakítása, a kérés elemzése, a fejlécek kibővítése és az URL-erőforrásokkal való összevetés. A fordított proxyk ellen irányuló támadás a háttérszerverekre is kiterjedhet, mivel a proxy még a RST_STREAM keret feldolgozása előtt átirányíthatja a kérést a háttérszerverre.

A támadás csak az HTTP/2-t támogató sebezhető szerverek ellen valósítható meg (a sebezhetőség ellenőrzésére szolgáló script, a támadáshoz szükséges eszközkészlet). HTTP/3-sek ellen eddig nem regisztráltak támadásokat, és a lehetőségük teljes körű vizsgálata még nem történt meg, de a Google képviselői javasolják a fejlesztőknek, szerverek hogy az HTTP/3 megvalósítása során védelmi intézkedéseket vezessenek be, hasonlóan az HTTP/2 ellen hatékony védelmiekhez.

A sebezhetőségre való érzékenység és a javítások állapota HTTP-szerverek és proxik esetén:

  • nginx (a hirdetés, a magyarázat, hogy a sebezhetőség nem nyilvánul meg teljes mértékben az nginx-ben az alapértelmezett konfigurációjában, mivel a támadás elakad a kapcsolatonkénti kérések számára vonatkozó korláton (tehát minden 1000 kérés után a kapcsolat megszakad). A javításban további védelem került bevezetésre a kérések intenzitásának korlátozása érdekében a "limit_req" direktíván keresztül).
  • A HAProxy hatékony védelme a HTTP/2 szálkorlátján való túllépés ellen már 2018 óta elérhető, és az 1.9-dev verzió óta működik.
  • Apache httpd (a httpd-n meghatározott terhelés keletkezik, de ez nem terjed ki a háttérszerverekre, és a 2016 óta érvényben lévő klienskapcsolati korlátokra korlátozódik).
  • mod_h2 Apache httpd-hez.
  • caddy
  • envoy
  • golang (a probléma a Go 1.21.3 és 1.20.10 verzióiban megoldásra került).
  • h2o (javítás).
  • grpc-go
  • hyper (a sebezhetőség nem nyilvánul meg).
  • jetty (javítva a 12.0.2, 11.0.17, 10.0.17 és 9.4.53.v20231009 verziókban).
  • netty
  • nghttp2 (javítva az 1.57.0 verzióban).
  • Facebook proxygen
  • .NET és ASP.NET Core (a sebezhetőség a http-szerver ASP.NET Core Kestrel esetében van jelen).
  • Node.js
  • proxygen
  • swift-nio-http2 (javítva az 1.28.0 verzióban).
  • Apache Tomcat (javított a verziókban 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
  • Apache Traffic Server (javított a 9.2.x ágon).

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster