Attaque Continuation flood, entraĂźnant des problĂšmes sur les serveurs utilisant HTTP/2.0

Des informations ont Ă©tĂ© rĂ©vĂ©lĂ©es sur la mĂ©thode d'attaque «Continuation flood», affectant diverses implĂ©mentations du protocole HTTP/2, notamment Apache httpd, Apache Traffic Server, Node.js, oghttp, Go net/http2, Envoy, oghttp et nghttp2. La vulnĂ©rabilitĂ© peut ĂȘtre utilisĂ©e pour attaquer des serveurs prenant en charge HTTP/2.0 et, selon l'implĂ©mentation, entraĂźne une saturation de la mĂ©moire (arrĂȘt du traitement des requĂȘtes ou plantage des processus) ou crĂ©e une forte charge sur le CPU (ralentissement du traitement des requĂȘtes). Selon le chercheur ayant dĂ©couvert la vulnĂ©rabilitĂ©, le problĂšme identifiĂ© est plus dangereux que la vulnĂ©rabilitĂ© «Rapid Reset» trouvĂ©e l'annĂ©e derniĂšre, qui a Ă©tĂ© utilisĂ©e pour effectuer les plus grandes attaques DDoS Ă  l'Ă©poque.

Le niveau Ă©levĂ© de danger est dĂ» au fait que pour perturber le fonctionnement de serveurs, provoquer un plantage ou rĂ©duire sĂ©rieusement la performance, il suffit de crĂ©er un flux de requĂȘtes spĂ©cialement conçues Ă  partir d'un ordinateur standard. Dans certains cas, une seule connexion TCP suffit mĂȘme pour mener l'attaque. De plus, le trafic liĂ© Ă  l'attaque ne se distingue en rien dans les journaux par rapport aux requĂȘtes normales des utilisateurs.

La vulnĂ©rabilitĂ© est causĂ©e par des particularitĂ©s de traitement des trames HEADERS et CONTINUATION dans les requĂȘtes selon le protocole HTTP/2. Les trames HEADERS sont utilisĂ©es dans HTTP/2 pour transmettre les en-tĂȘtes HTTP, tandis que les trames CONTINUATION servent Ă  diviser l'envoi des en-tĂȘtes HTTP en plusieurs Ă©tapes (par exemple, lorsque les en-tĂȘtes ne tiennent pas dans une seule trame ou lorsque les en-tĂȘtes devant ĂȘtre envoyĂ©s d'abord peuvent ĂȘtre remplis Ă  cette Ă©tape, puis les en-tĂȘtes dont les valeurs ne peuvent pas encore ĂȘtre dĂ©terminĂ©es sont envoyĂ©s par la suite). Lors de l'envoi d'en-tĂȘtes en plusieurs Ă©tapes, une trame HEADERS est d'abord envoyĂ©e sans le drapeau END_HEADERS, suivie de plusieurs trames CONTINUATION avec des en-tĂȘtes supplĂ©mentaires, et la liste est complĂ©tĂ©e par une trame CONTINUATION avec le drapeau END_HEADERS.

La mĂ©thode d'attaque consiste Ă  envoyer un flux ininterrompu de trames CONTINUATION sans activer le drapeau END_HEADERS. Ce type d'activitĂ© entraĂźne l'envoi sur serveur Un grand nombre d'en-tĂȘtes que le serveur conserve en mĂ©moire jusqu'Ă  ce que la mĂ©moire disponible pour le processus soit Ă©puisĂ©e. Pour crĂ©er une charge Ă©levĂ©e sur le CPU, en plus d'Ă©puiser la mĂ©moire, un attaquant peut exploiter la compression du contenu des trames CONTINUATION en utilisant le format HPACK, dont l'analyse nĂ©cessite des calculs. Dans les implĂ©mentations du protocole HTTP/1.1, une limite de taille d'en-tĂȘte et un dĂ©lai d'attente pour l'envoi de la connexion ont Ă©tĂ© appliquĂ©s pour se protĂ©ger contre les inondations de serveurs par des en-tĂȘtes. Pour HTTP/2, en raison de la complexitĂ© accrue du protocole, de nombreuses implĂ©mentations n'ont pas prĂ©vu de tels moyens de protection contre l'envoi infini d'en-tĂȘtes.

La vulnĂ©rabilitĂ© reprĂ©sente le plus grand danger pour les utilisateurs de Node.js (CVE-2024-27983), car cette implĂ©mentation permet de provoquer un crash en envoyant seulement quelques trames au serveur. En raison d'une condition de course dans Node.js, il suffit de fermer les connexions pendant l'envoi d'un flux d'en-tĂȘtes inachevĂ© pour dĂ©clencher un arrĂȘt d'urgence via une vĂ©rification Assert (le crash se produit si, au moment de la fermeture des connexions, la trame CONTINUATION avec le drapeau END_HEADERS n'est pas encore arrivĂ©e). La vulnĂ©rabilitĂ© a Ă©tĂ© corrigĂ©e dans Node.js 18.20.1, 21.7.2 et 20.12.1, ainsi que dans les derniĂšres versions des bibliothĂšques llhttp et undici. Dans les nouvelles versions de Node.js, une vulnĂ©rabilitĂ© moins dangereuse (CVE-2024-27982) de type "request smuggling" a Ă©galement Ă©tĂ© corrigĂ©e, permettant, par manipulation de la valeur "Content Length", de s'infiltrer dans le contenu des requĂȘtes d'autres utilisateurs traitĂ©es dans le mĂȘme flux entre le front-end et le back-end.

Vulnérabilités liées au traitement de CONTINUATION dans d'autres implémentations HTTP/2.0 :

  • oghttp (CVE-2024-27919) — consommation de mĂ©moire illimitĂ©e.
  • Tempesta FW (CVE-2024-2758) — contournement des limitations.
  • BibliothĂšque PHP amphp/http, amphp/http-client et amphp/http-server (CVE-2024-2653) — consommation de mĂ©moire illimitĂ©e, pouvant aller jusqu'Ă  l'Ă©puisement complet de la mĂ©moire disponible.
  • Package Go net/http (CVE-2023-45288) — crĂ©ation d'une charge Ă©levĂ©e sur le CPU.
  • BibliothĂšque nghttp2 (CVE-2024-28182) — dĂ©clenchement d'un dĂ©ni de service.
  • Apache Httpd (CVE-2024-27316) — consommation excessive de mĂ©moire et crĂ©ation d'une charge sur le CPU.
  • Apache Traffic Server (CVE-2024-31309) — consommation excessive de ressources.
  • Envoy (CVE-2024-30255) — crĂ©ation d'une charge Ă©levĂ©e sur le CPU (pour une charge complĂšte d'un cƓur de CPU, un dĂ©bit de 300Mbit/s est nĂ©cessaire).

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