2 vulnérabilités DoS ont été identifiées dans diverses implémentations du protocole HTTP/8

Des chercheurs de Netflix et Google identifié Il existe huit vulnérabilités dans diverses implémentations du protocole HTTP/2 qui peuvent provoquer un déni de service en envoyant un flux de requêtes réseau d'une certaine manière. Le problème affecte dans une certaine mesure la plupart des serveurs HTTP prenant en charge HTTP/2 et entraîne un manque de mémoire pour le travailleur ou une charge de processeur trop importante. Les mises à jour qui éliminent les vulnérabilités sont déjà présentées dans nginx 1.16.1/1.17.3 и H2O 2.2.6mais pour l'instant indisponible pour Apache httpd et autres produits.

Les problèmes résultaient de complications introduites dans le protocole HTTP/2 associées à l'utilisation de structures binaires, d'un système de limitation des flux de données au sein des connexions, d'un mécanisme de priorisation des flux et de la présence de messages de contrôle de type ICMP fonctionnant au niveau de la connexion HTTP/2. niveau (par exemple, paramètres de ping, de réinitialisation et de flux). De nombreuses implémentations ne limitaient pas correctement le flux des messages de contrôle, ne géraient pas efficacement la file d'attente prioritaire lors du traitement des demandes ou utilisaient des implémentations sous-optimales d'algorithmes de contrôle de flux.

La plupart des méthodes d'attaque identifiées se résument à l'envoi de certaines requêtes au serveur, conduisant à la génération d'un grand nombre de réponses. Si le client ne lit pas les données du socket et ne ferme pas la connexion, la file d'attente de mise en mémoire tampon des réponses côté serveur se remplit continuellement. Ce comportement crée une charge sur le système de gestion de files d'attente pour le traitement des connexions réseau et, selon les fonctionnalités d'implémentation, conduit à l'épuisement de la mémoire disponible ou des ressources CPU.

Vulnérabilités identifiées :

  • CVE-2019-9511 (Data Dribble) - un attaquant demande une grande quantité de données dans plusieurs threads en manipulant la taille de la fenêtre glissante et la priorité des threads, forçant le serveur à mettre les données en file d'attente dans des blocs de 1 octet ;
  • CVE-2019-9512 (Ping Flood) - un attaquant empoisonne continuellement les messages ping sur une connexion HTTP/2, provoquant une inondation de la file d'attente interne des réponses envoyées de l'autre côté ;
  • CVE-2019-9513 (Resource Loop) - un attaquant crée plusieurs threads de requête et modifie continuellement la priorité des threads, provoquant un brassage de l'arborescence des priorités ;
  • CVE-2019-9514 (Reset Flood) - un attaquant crée plusieurs threads
    et envoie une requête invalide via chaque thread, obligeant le serveur à envoyer des trames RST_STREAM, mais ne les accepte pas pour remplir la file d'attente de réponses ;

  • CVE-2019-9515 (Settings Flood) - l'attaquant envoie un flux de trames « SETTINGS » vides, en réponse auxquelles le serveur doit accuser réception de chaque demande ;
  • CVE-2019-9516 (fuite d'en-têtes de longueur 0) : un attaquant envoie un flux d'en-têtes avec un nom nul et une valeur nulle, et le serveur alloue un tampon en mémoire pour stocker chaque en-tête et ne le libère qu'à la fin de la session. ;
  • CVE-2019-9517 (mise en mémoire tampon de données interne) : l'attaquant s'ouvre
    Fenêtre coulissante HTTP/2 permettant au serveur d'envoyer des données sans restrictions, mais maintient la fenêtre TCP fermée, empêchant ainsi l'écriture des données sur le socket. Ensuite, l'attaquant envoie des requêtes qui nécessitent une réponse importante ;

  • CVE-2019-9518 (Inondation de trames vides) : un attaquant envoie un flux de trames de type DATA, HEADERS, CONTINUATION ou PUSH_PROMISE, mais avec une charge utile vide et aucun indicateur de fin de flux. Le serveur passe du temps à traiter chaque trame, disproportionné par rapport à la bande passante consommée par l'attaquant.

Source: opennet.ru

Ajouter un commentaire