Les vulnérabilités nouvellement découvertes du protocole HTTP/2 appelées « inondation DE CONTINUATION » peuvent entraîner des attaques par déni de service (DoS), bloquant les serveurs Web avec une seule connexion TCP dans certaines implémentations.
HTTP / 2 est une mise à jour du protocole HTTP normalisé en 2015, conçue pour améliorer les performances Web en introduisant le cadrage binaire pour une transmission efficace des données, le multiplexage pour permettre plusieurs demandes et réponses sur une seule connexion et la compression d’en-tête pour réduire les frais généraux
Les nouvelles vulnérabilités d’inondation DE CONTINUATION ont été découvertes par le chercheur Barket Nowotarski, qui dit qu’elles sont liées à l’utilisation de trames de CONTINUATION HTTP/2, qui ne sont pas correctement limitées ou vérifiées dans de nombreuses implémentations du protocole.
Les messages HTTP/2 incluent des sections d’en-tête et de fin sérialisées en blocs. Ces blocs peuvent être fragmentés sur plusieurs trames pour la transmission, et les trames DE CONTINUATION sont utilisées pour assembler le flux.
L’omission des vérifications de trame appropriées dans de nombreuses implémentations permet aux acteurs de la menace d’envoyer potentiellement une chaîne de trames extrêmement longue en ne définissant tout simplement pas l’indicateur’ END_HEADERS’, entraînant des pannes de serveur dues à des pannes de mémoire insuffisante ou à l’épuisement des ressources CPU pendant que ces trames sont traitées.
Le chercheur a averti que des conditions de mémoire insuffisante pourraient entraîner des pannes de serveur en utilisant une seule connexion TCP HTTP / 2 dans certaines implémentations.
« Hors de mémoire sont probablement les cas les plus ennuyeux mais les plus graves. Il n’y a rien de spécial à ce sujet: pas de logique étrange, pas de condition de course intéressante et ainsi de suite », explique Nowotarski.
« Les implémentations qui permettent le MOO ne limitaient tout simplement pas la taille de la liste d’en-têtes construite à l’aide de trames DE CONTINUATION. »
« Les implémentations sans délai d’expiration d’en-tête ne nécessitaient qu’une seule connexion HTTP/2 pour bloquer le serveur. »
Une alerte du Centre de Coordination CERT (CERT-CC) publiée aujourd’hui répertorie plusieurs identifiants CVE correspondant à différentes implémentations HTTP/2 vulnérables à ces attaques.
Ces implémentations permettent différents niveaux d’attaques par déni de service, y compris les fuites de mémoire, la consommation de mémoire et l’épuisement du processeur, comme décrit ci-dessous:
- CVE-2024 – 27983: Affecte le nœud.serveur HTTP / 2 js. L’envoi de quelques trames HTTP/2 peut provoquer une fuite de mémoire due à une condition de concurrence, conduisant à un potentiel DoS.
- CVE-2024-27919: Affecte le codec oghttp d’Envoy. Consommation de mémoire illimitée en raison de la non réinitialisation d’une demande lorsque les limites de mappage d’en-tête sont dépassées.
- CVE-2024-2758: Concerne la tempête FW. Ses limites de débit n’empêchent pas efficacement les attaques de trames de CONTINUATION vides, autorisant potentiellement le DoS.
- CVE-2024 – 2653: Affecte le protocole amphp / http. Il collecte les trames DE CONTINUATION dans un tampon illimité, risquant un plantage du MOO si la limite de taille d’en-tête est dépassée.
- CVE-2023-45288: Affecte les packages net/http et net/http2 de Go. Permet à un attaquant d’envoyer un ensemble arbitrairement grand d’en-têtes, entraînant une consommation excessive du processeur.
- CVE-2024-28182: Implique une implémentation utilisant la bibliothèque nghttp2, qui continue à recevoir des trames DE CONTINUATION, conduisant à un DoS sans rappel de réinitialisation de flux approprié.
- CVE-2024 – 27316: Affecte le serveur Apache Httpd. Un flux continu de trames DE CONTINUATION sans le jeu d’indicateurs END_HEADERS peut être envoyé, terminant incorrectement les requêtes.
- CVE-2024-31309: Affecte le serveur de trafic Apache. Une attaque DoS DE CONTINUATION HTTP/2 peut entraîner une consommation excessive de ressources sur le serveur.
- CVE-2024-30255: Affecte les versions Envoy 1.29.2 ou antérieures. Vulnérable à l’épuisement du processeur en raison d’un flot de trames DE CONTINUATION, consommant des ressources serveur importantes.
Impact sévère
Jusqu’à présent, selon CERT-CC, les fournisseurs et les bibliothèques HTTP/2 qui ont confirmé qu’ils sont affectés par au moins l’un des CVE ci-dessus sont Red Hat, SUSE Linux, Arista Networks, le projet de serveur HTTP Apache, nghttp2, Node.js, AMPHP et le langage de programmation Go.
Nowotarski affirme que le problème est plus grave que l’attaque « HTTP/2 Rapid Reset » révélée en octobre dernier par les principaux fournisseurs de services cloud, qui est activement exploitée depuis août 2023.
« Étant donné que Cloudflare Radar estime que les données de trafic HTTP représentent plus de 70% de tous les transferts Internet et de l’importance des projets affectés, je pense que nous pouvons supposer qu’une grande partie d’Internet a été affectée par une vulnérabilité facile à exploiter: dans de nombreux cas, une seule connexion TCP suffisait à planter le serveur », a averti Nowotarski.
En outre, le chercheur prévient que le problème serait complexe à déboguer et à atténuer pour les administrateurs de serveur sans une connaissance appropriée de HTTP/2.
En effet, les requêtes malveillantes ne seraient pas visibles dans les journaux d’accès si l’analyse avancée des trames n’est pas activée sur le serveur, ce qui n’est généralement pas le cas.
Étant donné que les auteurs de menaces surveillent généralement les techniques DDoS nouvellement découvertes à utiliser dans leurs services et attaques stressants, il est essentiel de mettre à niveau les serveurs et les bibliothèques affectés avant que les vulnérabilités ne soient activement exploitées.