Vulnérabilité dans les implémentations du protocole HTTP/2, facilitant les attaques par déni de service (DoS)

Une nouvelle technique d'attaque sur les implĂ©mentations du protocole HTTP/2 a Ă©tĂ© prĂ©sentĂ©e, simplifiant la conduite d'attaques visant Ă  provoquer des dĂ©nis de service par Ă©puisement des ressources serveur. La vulnĂ©rabilitĂ© a reçu le nom de code MadeYouReset et permet, via des manipulations de frames de contrĂŽle HTTP/2, d'inonder le serveur avec un grand nombre de requĂȘtes en contournant les limitations imposĂ©es.

Le problĂšme rĂ©side dans le fait que le client peut crĂ©er un nombre trĂšs Ă©levĂ© de flux traitĂ©s simultanĂ©ment, indĂ©pendamment de la limite SETTINGS_MAX_CONCURRENT_STREAMS, en rĂ©initialisant chaque flux Ă  son dĂ©but. Ce type de rĂ©initialisation signifie que, pour envoyer une nouvelle requĂȘte dans la connexion HTTP/2 Ă©tablie, le client n'est pas obligĂ© d'attendre la rĂ©ponse de de serveurs et peut immĂ©diatement engager un grand flot continu de requĂȘtes, dans la mesure oĂč la bande passante le permet.

Le client 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 peut mener une attaque avec des coĂ»ts minimaux, alors que le serveur continue de dĂ©penser des ressources pour traiter les requĂȘtes entrantes. Par exemple, le serveur alloue des structures de donnĂ©es pour de nouveaux flux, analyse les requĂȘtes, dĂ©compresse les en-tĂȘtes et associe les URL aux ressources. Lors d'attaques sur des proxy inverses, l'attaque peut s'Ă©tendre aux backends vers lesquels le proxy aura redirigĂ© la requĂȘte avant sa rĂ©initialisation.

La vulnĂ©rabilitĂ© rappelle un problĂšme connu auparavant, Rapid Reset (CVE-2023-44487), et est causĂ©e par un Ă©cart entre la logique de rĂ©initialisation des flux, dĂ©finie dans la spĂ©cification du protocole HTTP/2, et celle mise en Ɠuvre dans les produits finaux. La spĂ©cification prĂ©voit la possibilitĂ© de rĂ©initialiser un flux par le client et le serveur Ă  tout moment, mais dans de nombreuses implĂ©mentations HTTP/2,serveurs aprĂšs ce type de rĂ©initialisation, la requĂȘte continue d'ĂȘtre traitĂ©e. La principale diffĂ©rence avec la nouvelle attaque est que la rĂ©initialisation du traitement de la requĂȘte est effectuĂ©e Ă  l'initiative du serveur, et non par l'envoi d'une frame avec le drapeau RST_STREAM par le client.

Le rĂ©initialisation Ă  l'initiative du serveur se produit lorsque des requĂȘtes incorrectes sont reçues, mais ces requĂȘtes sont immĂ©diatement rejetĂ©es sans dĂ©but de traitement complet et sans passer au backend. Pour obtenir un cycle complet de traitement de la requĂȘte, un attaquant peut d'abord envoyer une requĂȘte HTTP correcte, puis transmettre une sĂ©quence incorrecte de cadres de contrĂŽle HTTP/2. Une telle activitĂ© amĂšnera le serveur Ă  commencer Ă  traiter la requĂȘte, mais ensuite, en raison d'une erreur lors du traitement des cadres suivants, il rĂ©initialisera le flux (mettant le flux avec la requĂȘte correcte dans un Ă©tat RST_STREAM).

Vulnérabilité dans les implémentations du protocole HTTP/2, facilitant les attaques par déni de service (DoS)

Le problÚme a été confirmé dans les serveurs HTTP Apache Tomcat, Netty, Eclipse Jetty, Fastly, Varnish, Lighttpd et Zephyr RTOS. Le problÚme se manifeste également sur les sites web et services serveur de Mozilla. Apache httpd, Apache Traffic Server, Node.js, LiteSpeed et HAProxy ne sont pas affectés par le problÚme. L'état de la vulnérabilité dans nginx n'est pas déterminé.

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