Skip to main content

Exploiter les trames CONTINUATION de HTTP/2 pour mener des attaques DoS

blog feature pypi spoof

8 avril 2024

0 minutes de lecture

À propos de la vulnérabilité

La vulnérabilité réside dans la façon dont les implémentations de HTTP/2 traitent les trames CONTINUATION, utilisées pour transmettre des blocs d’en-têtes dépassant la taille maximale d’une trame. Les attaquants exploitent cette faiblesse en envoyant un nombre excessif de trames CONTINUATION dans un seul flux HTTP/2. Cette avalanche de trames submerge la capacité du serveur à les traiter efficacement.

La gravité de cette vulnérabilité a été soulignée par Bartek Nowotarski, qui a indiqué qu’elle représente une menace plus importante que des incidents précédents, comme l’attaque « HTTP/2 Rapid Reset ». De plus, cette vulnérabilité fait l’objet d’exploitations actives depuis août 2023.

Cette attaque est particulièrement préoccupante, car elle peut faire planter des serveurs Web avec une seule connexion TCP, voire avec seulement quelques trames. Les serveurs concernés peuvent donc subir une forte dégradation de leurs performances ou devenir totalement indisponibles.

Cette vulnérabilité touche de nombreux fournisseurs et bibliothèques HTTP/2, notamment Red Hat, SUSE Linux, Arista Networks, l’Apache HTTP Server Project, nghttp2, Node.js, AMPHP et le langage de programmation Go.

Versions concernées

Projet

Versions concernées

ID CVE

amphp/http

>= 2.0.0 && <= 2.1.0, <= 1.7.2

CVE-2024-2653

Apache HTTP Server (httpd)

2.4.17-2.4.58

CVE-2024-27316

Apache Tomcat

<=11.0.0-M16, <=10.1.18, <=9.0.85, 8.5.0-8.5.98

CVE-2024-24549

Apache Traffic Server

8.0.0-8.1.9, 9.0.0-9.2.3

CVE-2024-31309

Envoy proxy (oghttp)

1.29.0, 1.29.1

CVE-2024-27919

Envoy proxy (nghttp2)

<=1.29.2

CVE-2024-30255

Golang

<=1.20, <=1.21.8, <=1.22.1

CVE-2023-45288**

nghttp2

<=1.60.0

CVE-2024-28182

Node.js

<=18.20.0, <=20.12.0, <=21.7.1

CVE-2024-27983

Tempesta FW

0.7.0

CVE-2024-2758

Impact 

Compte tenu de la large adoption de HTTP/2 et de sa part importante du trafic Internet (estimée à plus de 70 % par Cloudflare Radar), l’impact de cette vulnérabilité est considérable. Elle souligne l’importance cruciale d’appliquer rapidement les correctifs et de mettre en place des mesures de sécurité robustes afin de réduire le risque d’exploitation et de protéger les serveurs Web contre les attaques dévastatrices par déni de service (DoS) et de contournement des restrictions de sécurité.

Mesures d’atténuation

Mettez à jour le programme concerné vers la version la plus récente qui inclut le correctif de la vulnérabilité. Si aucun correctif n’est disponible, envisagez de désactiver temporairement HTTP/2 sur le serveur.

Solution

Appliquer les correctifs et effectuer les mises à jour : veillez à installer les dernières mises à jour de sécurité pour vos logiciels serveur, les bibliothèques concernées et les implémentations de HTTP/2. Consultez fréquemment les mises à jour des éditeurs et installez-les dès leur publication afin de corriger les vulnérabilités connues.

Mettre en place une limitation du débit : définissez des limites au nombre de requêtes ou de trames pouvant être traitées pendant une période donnée. Cela peut réduire les effets d’un trafic intense ou d’une avalanche de requêtes.

Analyser et surveiller le trafic : repérez les schémas inhabituels ou les pics de trafic entrant qui pourraient signaler une attaque. Examinez le trafic HTTP brut pour détecter et traiter les requêtes malveillantes qui exploitent les failles des implémentations de HTTP/2.

Utiliser des pare-feu d’applications Web (WAF) : configurez des WAF pour filtrer le trafic entrant et empêcher les requêtes malveillantes d’atteindre votre serveur. Définissez des règles WAF pour repérer et bloquer les schémas d’attaque connus liés aux attaques DoS contre HTTP/2.

Mettre en place des défenses au niveau du réseau : utilisez des défenses réseau, comme des systèmes de détection d’intrusion (IDS) ou de prévention des intrusions (IPS), pour repérer et bloquer les schémas de trafic suspects pouvant indiquer des attaques DoS visant les implémentations de HTTP/2.

Diversifier les implémentations serveur : répartissez vos implémentations serveur entre différents projets ou fournisseurs. Vous renforcerez ainsi votre résistance aux attaques et réduirez l’impact des vulnérabilités propres à une implémentation donnée.

Détecter les vulnérabilités avec Snyk

  1. amphp/http (CVE-2024-2653) - Allocation illimitée de ressources, sans limitation du débit

  2. Apache HTTP Server (CVE-2024-27316) - Consommation incontrôlée de ressources (« épuisement des ressources »)

  3. Apache Tomcat (CVE-2024-24549) - Validation incorrecte des entrées

  4. Apache Traffic Server (CVE-2024-31309) - Consommation incontrôlée de ressources (« épuisement des ressources »)

  5. Envoy proxy (CVE-2024-27919 et CVE-2024-30255) - Détection d’une condition d’erreur sans action et consommation incontrôlée de ressources (« épuisement des ressources ») 

  6. Golang (CVE-2023-45288) - Épuisement des ressources

  7. crate Rust h2

  8. nghttp2 (CVE-2024-28182) - Épuisement des ressources

  9. Node.js (CVE-2024-27983)  - Épuisement des ressources

  10. Tempesta FW (CVE-2024-2758) - Allocation illimitée de ressources, sans limitation du débit 

Références

  1. https://nowotarski.info/

  2. https://nowotarski.info/http2-continuation-flood-technical-details/#reachable-assertion-crash-nodejs-special-case 

  3. https://datatracker.ietf.org/doc/html/rfc7540 

  4. https://www.securityweek.com/new-http-2-dos-attack-potentially-more-severe-than-record-breaking-rapid-reset/

Sécurisez vos dépendances open source

Snyk crée des pull requests de correction en un clic pour les dépendances open source vulnérables et leurs dépendances transitives.