Dobësi në protokollin HTTP/2, e shfrytëzuar në sulmin më të madh DDoS

Kompania Google ka regjistruar sulmin më të madh DDoS në infrastrukturën e saj, me një intensitet prej 398 milion kërkesash në sekondë. Sulmi i ri është 7 herë më intensiv se sulmi rekord i kaluar DDoS, ku sulmuesit arritën të formonin një rrjedhë prej 47 milion kërkesash në sekondë. Për të bërë një krahasim, gjithë trafiku në të gjithë Web-in vlerësohet nga 1-3 miliard kërkesash në sekondë. Përveç Google, sulmit iu nënshtruan gjithashtu kompanitë Amazon dhe Cloudflare. Mundësia e realizimit të një sulmi të ri është e lidhur me zbulimin e një dobësie në protokollin HTTP/2 (CVE-2023-44487), që lejon që me një ngarkesë minimale nga klienti të dërgohet një rrjedhë e madhe kërkesash në server.

Teknika e re e sulmit është emërtuar «Rapid Reset» dhe përfiton nga mjetet e ofruara në HTTP/2 për multipleximin e kanaleve të komunikimit, duke lejuar formimin e një rrjedhe kërkesash brenda një lidhjeje tashmë të vendosur, pa hapur lidhje të reja rrjetesh dhe pa pritur konfirmimin e pranimit të paketave. Dobësia konsiderohet si pasojë e papërsosmërisë së protokollit HTTP/2, në specifikimin e të cilit thuhet se kur përpiqesh të hapësh një numër shumë të madh të rrjedhave, duhet të anulohet vetëm rrjedhat që kalojnë kufirin, por jo të mbyllet e gjithë lidhja e rrjetit.

Si me metodat e mëparshme të sulmeve në HTTP/2, në sulmin e ri gjithashtu krijohet një numër i madh rrjedhash brenda një lidhjeje. Dallimi kryesor i sulmit të ri është se, në vend të pritjes për një përgjigje pas çdo kërkese të dërguar, dërgohet një kadër me flamurin RST_STREAM, që menjëherë anulon kërkesën. Anulimi i kërkesës në një fazë të hershme lejon që të eliminohet trafiku në drejtim të klientit dhe të anashkalohet kufizimet e pranishme në serverët HTTP për numrin maksimale të rrjedhave, të hapura njëkohësisht brenda një lidhjeje në HTTP/2. Kështu, në sulmin e ri, volumi i kërkesave të dërguara në serverin HTTP nuk varet më nga vonesat midis dërgimit të kërkesës dhe pranimit të përgjigjes (RTT, koha e kthimit) dhe kufizohet vetëm në kapacitetin e kanalit të komunikimit.

Dobësi në protokollin HTTP/2, e shfrytëzuar në sulmin më të madh DDoS

Pasi për të kryer një sulm nga ana e klientit, mjafton të dërgosh kërkesa pa marrë përgjigje, kështu që sulmi mund të kryhet me shpenzime minimale. Për shembull, një sulm i regjistruar nga kompanitë Cloudflare me 201 milion kërkesa në sekondë u realizua me një botnet relativisht të vogël prej 20 mijë kompjuterësh. Nga ana tjetër, serverë kostot për përpunimin e kërkesave që mbërrijnë janë ndjeshëm më të larta, pavarësisht se ato anulohen, pasi nevojitet të kryhen operacione të tilla si ndarja e strukturave të të dhënave për rrjedhat e reja, analiza e kërkesës, shpërbërja e titullit dhe përputhja e URL me burimin. Në një sulm ndaj proxy-ve të prapambetur, sulmi mund të përhapet në backend, pasi proxy mund të arrijë të redirectojë kërkesën në backend para se të përpunojë kornizën RST_STREAM.

Sulmi mund të kryhet vetëm ndaj serverëve të cenueshëm që mbështesin HTTP/2 (skedari për kontrollimin e shfaqjes së cenueshmërisë në servera, mjetet për kryerjen e sulmit). Për HTTP/3 nuk janë regjistruar akoma sulme dhe mundësia e kryerjes së tyre nuk është analizuar plotësisht, por përfaqësuesit e Google rekomandojnë zhvilluesve serverësh të shtojnë në implementimet e HTTP/3 masa mbrojtëse, të ngjashme me ato të zbatuara për bllokimin e sulmeve ndaj HTTP/2.

Cenueshmëria dhe disponueshmëria e rregullimeve për serverat dhe proxy-t HTTP:

  • nginx (njoftim, shpjegim se cenueshmëria nuk shfaqet plotësisht në ngjyrën e konfigurimit standard në nginx, pasi sulmi do të hasë limitin e numrit të kërkesave për lidhje (pra, pas çdo 1000 kërkesash, lidhja do të rimbushë). Në rregullim është shtuar një mbrojtje e mëtejshme për kufizimin e intensitetit të kërkesave përmes direktivës "limit_req").
  • Në HAProxy mbrojtja efektive ndaj tejkalimit të limitit për numrin e rrjedhave HTTP/2 është shtuar që në vitin 2018 dhe është efektive duke filluar nga versioni 1.9-dev.
  • Apache httpd (krijohet një ngarkesë e caktuar në httpd, por ajo nuk shtrihet në backend dhe është e kufizuar nga limitet aktive që nga viti 2016 për lidhjet e klientëve).
  • mod_h2 për Apache httpd.
  • caddy
  • envoy
  • golang (problemi është zgjidhur në lëshimet Go 1.21.3 dhe 1.20.10).
  • h2o (patch).
  • grpc-go
  • hyper (cenueshmëria nuk shfaqet).
  • jetty (e rregulluar në 12.0.2, 11.0.17, 10.0.17 dhe 9.4.53.v20231009).
  • netty
  • nghttp2 (e rregulluar në versionin 1.57.0).
  • Facebook proxygen
  • .NET dhe ASP.NET Core (cenueshmëria është për serverin http të ASP.NET Core Kestrel).
  • Node.js
  • proxygen
  • swift-nio-http2 (e rregulluar në versionin 1.28.0).
  • Apache Tomcat (korrigjuar në versionet 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
  • Apache Traffic Server (korrigjuar në degën 9.2.x).

Burimi: opennet.ru

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster