Zranitelnost v protokolu HTTP/2, využitá v největším DDoS útoku.

Společnost Google zaznamenala největší DDoS útok na svou infrastrukturu, jehož intenzita dosáhla 398 milionů požadavků za sekundu. Nový útok je v intenzitě 7krát silnější než předchozí rekordní DDoS útok, při kterém se útočníkům podařilo vytvořit tok 47 milionů požadavků za sekundu. Pro srovnání, celkový provoz na celém webu je odhadován na úrovni 1-3 miliardy požadavků za sekundu. Kromě Google se útoku také postavily společnosti Amazon a Cloudflare. Možnost provedení nového útoku souvisí s odhalením zranitelnosti v protokolu HTTP/2 (CVE-2023-44487), která umožňuje při minimálním zatížení klienta směřovat obrovský tok požadavků na server.

Nová technika útoku nese název „Rapid Reset“ a využívá toho, že prostředky multiplexování kanálů poskytované v HTTP/2 umožňují vytvářet tok požadavků v rámci již navázaného spojení, bez otevírání nových síťových spojení a aniž by čekaly na potvrzení přijetí paketů. Zranitelnost je považována za důsledek nedodělků protokolu HTTP/2, v jehož specifikaci je uvedeno, že při pokusu o otevření příliš velkého počtu toků by měly být zrušeny pouze toky, které překračují limit, a nemělo by se uzavírat celé síťové spojení.

Analogicky k dříve používaným metodám útoků na HTTP/2 se v novém útoku také vytváří velké množství toků v rámci jednoho spojení. Klíčovým rozdílem nového útoku je, že místo čekání na odpověď je za každým odeslaným požadavkem zasílán rámec s příznakem RST_STREAM, který okamžitě ruší požadavek. Zrušení požadavku v rané fázi umožňuje zbavit se zpětného provozu směrem k klientovi a obejít existující na HTTP serverech omezení maximálního možného počtu toků současně otevřených v rámci jednoho spojení podle HTTP/2. Takto objem požadavků směřujících na HTTP server přestává záviset na zpožděních mezi odesláním požadavku a přijetím odpovědi (RTT, round-trip time) a omezuje se pouze na propustnost komunikačního kanálu.

Zranitelnost v protokolu HTTP/2, využitá v největším DDoS útoku.

Jelikož k provádění útoku na straně klienta stačí jednoduše odesílat požadavky, aniž by bylo potřeba přijímat odpovědi, může být útok proveden s minimálními náklady. Například útok zaznamenaný společností Cloudflare dosáhl 201 milionu požadavků za sekundu a byl proveden pomocí relativně malého botnetu o 20 tisících počítačích. Na straně serveru náklady na zpracování příchozích požadavků jsou výrazně vyšší, i když jsou zrušeny, protože je nutné provést operace, jako je vyčlenění datových struktur pro nové toky, analýza požadavku, rozbalení hlavičky a porovnání URL s prostředkem. Při útoku na zpětné proxy se útok může rozšířit na backendy, protože proxy může stihnout přesměrovat požadavek na backend před zpracováním rámce RST_STREAM.

Útok může být proveden pouze na zranitelné servery s podporou HTTP/2 (skript pro ověření zranitelnosti na serverech, nástroj pro provedení útoku). Útoky na HTTP/3 zatím nebyly zaznamenány a možnost jejich provedení nebyla plně analyzována, ale zástupci společnosti Google doporučují vývojářům servery přidat do implementace HTTP/3 ochranná opatření, podobná těm, která byla zavedena k blokaci útoků na HTTP/2.

Podmínka zranitelnosti a dostupnost oprav pro HTTP servery a proxy:

  • nginx (oznámení, vysvětlení, že zranitelnost se plně neprojevuje v nginx v konfiguraci podle výchozího nastavení, protože útok narazí na limit počtu požadavků na spojení (tj. po každých 1000 požadavcích bude spojení ukončeno). Oprava obsahuje dodatečnou ochranu proti přetížení požadavků prostřednictvím direktivy „limit_req“).
  • V HAProxy byla efektivní ochrana před překročením limitu počtu toků HTTP/2 přidána již v roce 2018 a funguje od verze 1.9-dev.
  • Apache httpd (vytváří určitou zátěž na httpd, ale ta se nepřenáší na backendy a omezuje se na platné limity od roku 2016).
  • mod_h2 pro Apache httpd.
  • caddy
  • envoy
  • golang (problém byl vyřešen ve verzích Go 1.21.3 a 1.20.10).
  • h2o (oprava).
  • grpc-go
  • hyper (zranitelnost se neprojevuje).
  • jetty (opraveno ve verzích 12.0.2, 11.0.17, 10.0.17 a 9.4.53.v20231009).
  • netty
  • nghttp2 (opraveno ve verzi 1.57.0).
  • Facebook proxygen
  • .NET a ASP.NET Core (zranitelnosti je vystaven http server ASP.NET Core Kestrel).
  • Node.js
  • proxygen
  • swift-nio-http2 (opraveno ve verzi 1.28.0).
  • Apache Tomcat (opraveno ve verzích 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
  • Apache Traffic Server (opraveno v větvi 9.2.x).

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster