CONTINUATION Flood : une nouvelle vulnérabilité dans HTTP/2 expose les serveurs web à des attaques DoS
Un nouvel ensemble de vulnérabilités baptisé "CONTINUATION Flood" a été découvert dans le protocole HTTP/2 ! Dans certains cas, l'exploitation de ces vulnérabilités permet un déni de service sur le serveur web pris pour cible, à partir d'une seule connexion TCP. Voici ce qu'il faut savoir !
Le chercheur en sécurité Barket Nowotarski a fait la découverte des vulnérabilités "CONTINUATION Flood" présente dans HTTP/2, une version du protocole HTTP standardisée en 2015. S'il a choisi ce nom, ce n'est pas un hasard, car ces faiblesses sont liées à une mauvaise gestion des trames HTTP/2 CONTINUATION dans de nombreuses implémentations du protocole HTTP/2. Ces trames sont utilisées pour assembler le flux de données correspondant à différents blocs de messages du protocole HTTP/2, notamment pour l'en-tête.
Lorsque les données ne sont pas correctement limitées ou vérifiées, un attaquant peut exploiter ces vulnérabilités en envoyant des trames extrêmement longues, sans définir l'indicateur "END_HEADERS", ce qui va permettre d'épuiser les ressources du serveur cible et engendrer un déni de service. Dans certains cas, une seule connexion TCP en HTTP/2 peut suffire pour saturer le serveur en mémoire vive et le faire planter.
"Les implémentations sans timeout pour les en-têtes ne nécessitaient qu'une seule connexion HTTP/2 pour faire planter le serveur.", peut-on lire dans le rapport de Barket Nowotarski.
Par ailleurs, il est important de préciser que le protocole HTTP/2 est encore largement utilisé. "Selon Cloudflare Radar, le trafic HTTP/2 représente environ 60 % de l'ensemble du trafic HTTP humain (données excluant les robots)", précise Barket Nowotarski, avec un graphe à l'appui.
CONTINUATION Flood, un ensemble de 9 failles de sécurité
Le CERT/CC a également publié un rapport au sujet de l'ensemble de vulnérabilités CONTINUATION Flood. Il référence 9 failles de sécurité correspondantes à cette faiblesse dans différentes implémentations : la bibliothèque nghttp2, AMPHP, Apache HTTP, Arista Networks, Red Hat, SUSE Linux, Node.js, Envoy (version 1.29.2 ou antérieure), ainsi que le langage de programmation Go.
À la fin de l'article du CERT/CC, il y a un tableau récapitulatif, et nous pouvons voir que le statut est actuellement inconnu pour plusieurs dizaines d'implémentations. Voici un extrait :
Les CVE suivantes sont associées à CONTINUATION Flood : CVE-2024-27983, CVE-2024-27919, CVE-2024-2758, CVE-2024-2653, CVE-2023-45288, CVE-2024-28182, CVE-2024-27316, CVE-2024-31309, CVE-2024-30255.
Si vous utilisez Apache2, sachez que la vulnérabilité CVE-2024-27316, correspondante à CONTINUATION Flood, a été corrigée dans Apache 2.4.59 publiée ce jeudi 4 avril 2024 (voir cette page).
Ceci n'est pas sans rappeler la faille de sécurité "Rapid Reset" présente dans le protocole HTTP/2 et révélée en octobre 2023. À l'époque, elle avait permis de déclencher des attaques DDoS records !