HTTP/2-sårbarhet involverad i den största DDoS-attacken

Google har registrerat den största DDoS-attacken mot sin infrastruktur, vars intensitet var 398 miljoner förfrågningar per sekund. Den nya attacken är 7 gånger mer intensiv än den tidigare rekordstora DDoS-attacken, där angriparna lyckades skapa ett flöde på 47 miljoner förfrågningar per sekund. Som jämförelse uppskattas all trafik på hela webben till 1-3 miljarder förfrågningar per sekund. Förutom Google drabbades även Amazon och Cloudflare av attacken. Möjligheten för en ny attack är förknippad med upptäckten av en sårbarhet i HTTP/2-protokollet (CVE-2023-44487), vilket gör att ett enormt flöde av förfrågningar kan skickas till servern med minimal belastning på klienten.

Den nya attacktekniken kallas "Rapid Reset" och utnyttjar det faktum att multiplexeringsmöjligheterna i HTTP/2 möjliggör bildandet av en förfrågningsström inom en redan etablerad anslutning, utan att öppna nya nätverksanslutningar och utan att vänta på bekräftelse på mottagande av paket. Sårbarheten anses vara en konsekvens av en brist i HTTP/2-protokollet, vars specifikation anger att när man försöker öppna för många strömmar, ska endast de strömmar som överskrider gränsen avbrytas, men inte hela nätverksanslutningen ska stängas.

I likhet med tidigare använda metoder för att attackera HTTP/2 skapar den nya attacken också ett stort antal strömmar inom en enda anslutning. Den viktigaste skillnaden med den nya attacken är att istället för att vänta på ett svar skickas en ram med RST_STREAM-flaggan efter varje skickad begäran, vilket omedelbart avbryter begäran. Att avbryta en begäran i ett tidigt skede gör att du kan bli av med returtrafik till klienten och kringgå begränsningarna för det maximala möjliga antalet strömmar som är öppna samtidigt inom en enda HTTP/2-anslutning på HTTP-servrar. Således beror volymen av förfrågningar som skickas till HTTP-servern i den nya attacken inte längre på fördröjningarna mellan att skicka en begäran och ta emot ett svar (RTT, round-trip time) och begränsas endast av kommunikationskanalens bandbredd.

 HTTP/2-sårbarhet involverad i den största DDoS-attacken

Eftersom en klientsidesattack helt enkelt kräver att förfrågningar skickas utan att få svar, kan attacken utföras med minimal omkostnad. Till exempel utfördes attacken på 201 miljoner förfrågningar per sekund som registrerades av Cloudflare med ett relativt litet botnät på 20 000 datorer. server Kostnaden för att bearbeta inkommande förfrågningar är betydligt högre, trots att de annulleras, på grund av behovet av att utföra operationer som att allokera datastrukturer för nya strömmar, analysera förfrågan, packa upp headern och matcha URL:en med resursen. Vid attacker mot omvända proxyservrar kan attacken sprida sig till backend-servern, eftersom proxyn kan omdirigera förfrågan till backend-servern innan RST_STREAM-ramen bearbetas.

Attacken kan endast utföras på sårbara servrar som stöder HTTP/2 (skript för att kontrollera sårbarheter på servrar, attackverktyg). Inga attacker har upptäckts för HTTP/3 ännu, och deras genomförbarhet har inte analyserats helt, men Googles representanter rekommenderar att utvecklare servrar Lägg till skyddsåtgärder i HTTP/3-implementeringar som liknar de som implementerats för att blockera attacker på HTTP/2.

Exponering för sårbarheter och tillgänglighet av korrigeringar för HTTP-servrar och proxyservrar:

  • nginx (meddelande, förklaring att sårbarheten inte är fullt manifesterad i nginx i standardkonfigurationen, eftersom attacken kommer att köra in i gränsen för antalet förfrågningar per anslutning (dvs. efter var 1000:e förfrågning återställs anslutningen). Åtgärden lägger till ytterligare skydd för att begränsa intensiteten av förfrågningar via direktivet "limit_req").
  • HAProxy lade till effektivt skydd mot överskridande av HTTP/2-trådgränser 2018 och har varit i kraft sedan version 1.9-dev.
  • Apache httpd (en viss belastning skapas på httpd, men den sträcker sig inte till backends och begränsas av de klientanslutningsgränser som gäller sedan 2016).
  • mod_h2 för Apache httpd.
  • caddy
  • skickat
  • golang (problemet åtgärdades i Go 1.21.3 och 1.20.10).
  • h2o (fläck).
  • grpc-go
  • hyper (sårbarhet manifesterar sig inte).
  • brygga (åtgärdad i 12.0.2, 11.0.17, 10.0.17 och 9.4.53.v20231009).
  • netty
  • nghttp2 (åtgärdat i version 1.57.0).
  • Facebook-proxy
  • .NET och ASP.NET Core (ASP.NET Core Kestrel HTTP-servern är sårbar).
  • node.js
  • proxygen
  • swift-nio-http2 (åtgärdat i version 1.28.0).
  • Apache Tomcat (åtgärdat i versionerna 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
  • Apache Traffic Server (åtgärdat i 9.2.x-grenen).

Källa: opennet.ru

Lägg en kommentar