Google je zabeležil največji napad DDoS na svojo infrastrukturo, katerega intenzivnost je bila 398 milijonov zahtev na sekundo. Nov napad je 7-krat intenzivnejši od prejšnjega rekordnega DDoS napada, v katerem je napadalcem uspelo ustvariti pretok 47 milijonov zahtev na sekundo. Za primerjavo, ves promet na celotnem spletu je ocenjen na 1-3 milijarde zahtevkov na sekundo. Poleg Googla sta se z napadom soočila tudi Amazon in Cloudflare. Možnost novega napada je povezana z identifikacijo ranljivosti v protokolu HTTP/2 (CVE-2023-44487), ki omogoča pošiljanje velikega toka zahtevkov na strežnik z minimalno obremenitvijo odjemalca.
Nova tehnika napada se imenuje "Rapid Reset" in izkorišča dejstvo, da sredstva za multipleksiranje komunikacijskih kanalov, ki jih zagotavlja HTTP/2, omogočajo generiranje toka zahtev znotraj že vzpostavljene povezave, brez odpiranja novih omrežnih povezav in brez čaka na potrditev prejema paketov. Ranljivost naj bi bila posledica napake v protokolu HTTP/2, katerega specifikacija navaja, da če se poskusi odpreti preveč tokov, je treba preklicati le tokove, ki presegajo omejitev, ne pa celotnega omrežja. povezava.
Podobno kot prej uporabljene metode napada na HTTP/2, novi napad ustvarja tudi veliko število niti znotraj ene povezave. Ključna razlika novega napada je v tem, da vsaki poslani zahtevi namesto čakanja na odgovor sledi okvir z zastavico RST_STREAM, ki zahtevo takoj prekliče. Preklic zahteve v zgodnji fazi vam omogoča, da se znebite povratnega prometa proti odjemalcu in obidete omejitve glede največjega možnega števila tokov, ki jih je mogoče hkrati odpreti znotraj ene povezave HTTP/2 na strežnikih HTTP. Tako v novem napadu količina zahtev, poslanih strežniku HTTP, ni več odvisna od zamikov med pošiljanjem zahteve in prejemom odgovora (RTT, round-trip time) in je odvisna le od pasovne širine komunikacijskega kanala.

Ker napad na strani odjemalca zahteva preprosto pošiljanje zahtev brez prejemanja odgovorov, se napad lahko izvede z minimalnimi stroški. Na primer, napad z 201 milijonom zahtev na sekundo, ki ga je zabeležil Cloudflare, je bil izveden z uporabo relativno majhnega botneta z 20 računalniki. strežnika Stroški obdelave dohodnih zahtev so bistveno višji, kljub njihovi preklicu, zaradi potrebe po izvajanju operacij, kot so dodeljevanje podatkovnih struktur za nove tokove, razčlenjevanje zahteve, razpakiranje glave in ujemanje URL-ja z virom. Pri napadu na obratne proxyje se lahko napad razširi na zaledne sisteme, saj lahko proxy preusmeri zahtevo na zaledne sisteme, preden je okvir RST_STREAM obdelan.
Napad je mogoče izvesti le na ranljivih strežnikih, ki podpirajo HTTP/2 (skript za preverjanje ranljivosti na strežnikih, orodja za napade). Za HTTP/3 še niso bili zaznani napadi in njihova izvedljivost še ni bila v celoti analizirana, vendar predstavniki Googla priporočajo, da razvijalci strežniki Implementacijam HTTP/3 dodajte zaščitne ukrepe, podobne tistim, ki so uvedeni za blokiranje napadov na HTTP/2.
Izpostavljenost ranljivosti in razpoložljivost popravkov za strežnike HTTP in posrednike:
- nginx (obvestilo, pojasnilo, da se ranljivost v nginxu v privzeti konfiguraciji ne pokaže v celoti, saj bo napad omejen z omejitvijo števila zahtev na povezavo (tj. po vsakih 1000 zahtevah bo povezava ponastavljena). Popravek doda dodatno zaščito za omejitev intenzivnosti zahtev prek direktive »limit_req«).
- V HAProxy je bila učinkovita zaščita pred prekoračitvijo omejitve števila niti HTTP/2 dodana že leta 2018 in je v veljavi od različice 1.9-dev.
- Apache httpd (določena obremenitev se ustvari na httpd, vendar ne velja za ozadja in je omejena z omejitvami povezav odjemalcev, ki veljajo od leta 2016).
- mod_h2 za Apache httpd.
- Caddy
- poslano
- golang (težava odpravljena v izdajah Go 1.21.3 in 1.20.10).
- h2o (obliž).
- grpc-go
- hiper (ranljivost se ne pojavi).
- pomol (popravljeno v 12.0.2, 11.0.17, 10.0.17 in 9.4.53.v20231009).
- netty
- nghttp2 (popravljeno v različici 1.57.0).
- Facebook proxygen
- .NET in ASP.NET Core (http strežnik ASP.NET Core Kestrel je ranljiv).
- Node.js
- proxygen
- swift-nio-http2 (popravljeno v različici 1.28.0).
- Apache Tomcat (popravljeno v različicah 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
- Apache Traffic Server (popravljeno v veji 9.2.x).
Vir: opennet.ru
