Vulnérabilité dans le protocole HTTP/2, exploitée lors de la plus grande attaque DDoS

Google a enregistrĂ© la plus grande attaque DDoS sur son infrastructure, avec une intensitĂ© atteignant 398 millions de requĂȘtes par seconde. Cette nouvelle attaque est sept fois plus intense que l'ancienne attaque DDoS record, oĂč les attaquants avaient rĂ©ussi Ă  gĂ©nĂ©rer un flux de 47 millions de requĂȘtes par seconde. En comparaison, tout le trafic du Web est estimĂ© entre 1 et 3 milliards de requĂȘtes par seconde. En plus de Google, les entreprises Amazon et Cloudflare ont Ă©galement Ă©tĂ© confrontĂ©es Ă  cette attaque. La possibilitĂ© de cette nouvelle attaque est liĂ©e Ă  la dĂ©couverte d'une vulnĂ©rabilitĂ© dans le protocole HTTP/2 (CVE-2023-44487), permettant d'envoyer un immense flux de requĂȘtes au serveur avec une charge minimale du client.

La nouvelle technique d'attaque est appelĂ©e « Rapid Reset » et exploite le fait que les mĂ©canismes de multiplexage de canaux fournis dans HTTP/2 permettent de crĂ©er un flux de requĂȘtes dans le cadre d'une connexion dĂ©jĂ  Ă©tablie, sans ouvrir de nouvelles connexions rĂ©seau et sans attendre la confirmation de la rĂ©ception des paquets. La vulnĂ©rabilitĂ© est considĂ©rĂ©e comme une consĂ©quence d'une lacune dans le protocole HTTP/2, dont la spĂ©cification stipule qu'en cas de tentative d'ouverture d'un nombre trop important de flux, il convient d'annuler uniquement les flux dĂ©passant la limite, mais pas de fermer entiĂšrement la connexion rĂ©seau.

À l'instar des mĂ©thodes d'attaques prĂ©cĂ©demment utilisĂ©es sur HTTP/2, la nouvelle attaque crĂ©e Ă©galement un grand nombre de flux dans le cadre d'une seule connexion. La principale diffĂ©rence avec la nouvelle attaque est que, au lieu d'attendre une rĂ©ponse aprĂšs chaque requĂȘte envoyĂ©e, une trame avec le drapeau RST_STREAM est immĂ©diatement envoyĂ©e, annulant la requĂȘte. L'annulation de la requĂȘte Ă  un stade prĂ©coce permet d'Ă©liminer le trafic retour vers le client et de contourner les limites existantes sur les serveurs HTTP concernant le nombre maximum de flux simultanĂ©ment ouverts dans le cadre d'une seule connexion HTTP/2. Ainsi, dans la nouvelle attaque, le volume de requĂȘtes envoyĂ©es au serveur HTTP ne dĂ©pend plus des dĂ©lais entre l'envoi de la requĂȘte et la rĂ©ception de la rĂ©ponse (RTT, round-trip time) et est limitĂ© uniquement par la bande passante de la connexion.

Vulnérabilité dans le protocole HTTP/2, exploitée lors de la plus grande attaque DDoS

Étant donnĂ© que pour mener une attaque cĂŽtĂ© client, il suffit d'envoyer des requĂȘtes sans recevoir de rĂ©ponses, l'attaque peut ĂȘtre rĂ©alisĂ©e avec des coĂ»ts opĂ©rationnels minimaux. Par exemple, une attaque enregistrĂ©e par Cloudflare Ă  201 millions de requĂȘtes par seconde a Ă©tĂ© effectuĂ©e Ă  l'aide d'un botnet relativement petit de 20 000 ordinateurs. Du cĂŽtĂ© de serveurs les coĂ»ts de traitement des requĂȘtes entrantes sont considĂ©rablement plus Ă©levĂ©s, malgrĂ© leur annulation, car il est nĂ©cessaire d'effectuer des opĂ©rations telles que la crĂ©ation de structures de donnĂ©es pour de nouveaux flux, l'analyse de la requĂȘte, le dĂ©ballage de l'en-tĂȘte et la correspondance de l'URL avec la ressource. Lors d'une attaque sur des proxies inverses, l'attaque peut se propager aux backends, car le proxy peut rediriger la requĂȘte vers le backend avant le traitement du cadre RST_STREAM.

Une attaque ne peut ĂȘtre rĂ©alisĂ©e que sur des serveurs vulnĂ©rables prenant en charge HTTP/2 (script pour vĂ©rifier la manifestation de la vulnĂ©rabilitĂ© sur les serveurs, trousse Ă  outils pour mener l'attaque). Aucune attaque n'a encore Ă©tĂ© enregistrĂ©e pour HTTP/3 et la possibilitĂ© de leur rĂ©alisation n'a pas encore Ă©tĂ© complĂštement analysĂ©e, mais des reprĂ©sentants de Google recommandent aux dĂ©veloppeurs serveurs d'ajouter dans les implĂ©mentations d'HTTP/3 des mesures de protection similaires Ă  celles mises en place pour bloquer les attaques sur HTTP/2.

Vulnérabilité et disponibilité des correctifs pour les serveurs HTTP et les proxies :

  • nginx (annonce, explication que la vulnĂ©rabilitĂ© ne se manifeste pas pleinement dans nginx en configuration par dĂ©faut, car l'attaque se heurtera Ă  une limite sur le nombre de requĂȘtes par connexion (c'est-Ă -dire qu'aprĂšs chaque 1000 requĂȘtes, la connexion sera rĂ©initialisĂ©e). Dans le correctif, une protection supplĂ©mentaire a Ă©tĂ© ajoutĂ©e pour limiter l'intensitĂ© des requĂȘtes via la directive « limit_req »).
  • Dans HAProxy, une protection efficace contre le dĂ©passement de la limite du nombre de flux HTTP/2 a Ă©tĂ© ajoutĂ©e en 2018 et est en vigueur depuis la version 1.9-dev.
  • Apache httpd (charge spĂ©cifique créée sur httpd, mais elle ne se propage pas aux backends et est limitĂ©e par des limites en vigueur depuis 2016 sur les connexions des clients).
  • mod_h2 pour Apache httpd.
  • caddy
  • envoy
  • golang (problĂšme rĂ©solu dans les versions Go 1.21.3 et 1.20.10).
  • h2o (patch).
  • grpc-go
  • hyper (la vulnĂ©rabilitĂ© ne se manifeste pas).
  • jetty (corrigĂ© dans 12.0.2, 11.0.17, 10.0.17 et 9.4.53.v20231009).
  • netty
  • nghttp2 (corrigĂ© dans la version 1.57.0).
  • Facebook proxygen
  • .NET et ASP.NET Core (le serveur HTTP ASP.NET Core Kestrel est vulnĂ©rable).
  • Node.js
  • proxygen
  • swift-nio-http2 (corrigĂ© dans la version 1.28.0).
  • Apache Tomcat (corrigĂ© dans les versions 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
  • Apache Traffic Server (corrigĂ© dans la branche 9.2.x).

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster