Une faille de sécurité critique a été révélée dans HAProxy, un équilibreur de charge et un serveur proxy open source largement utilisés, qui pourraient être exploités par un adversaire pour éventuellement faire passer des requêtes HTTP en fraude, entraînant un accès non autorisé à des données sensibles et l’exécution de commandes arbitraires, ouvrant effectivement la porte à un éventail d’attaques.
Suivi comme CVE-2021-40346, la vulnérabilité Integer Overflow a un indice de gravité de 8,6 sur le système de notation CVSS et a été corrigée dans les versions HAProxy 2.0.25, 2.2.17, 2.3.14 et 2.4.4.
La contrebande de requêtes HTTP, comme son nom l’indique, est une attaque d’application Web qui altère la manière dont un site Web traite les séquences de requêtes HTTP reçues de plusieurs utilisateurs. Également appelée désynchronisation HTTP, la technique tire parti des incohérences d’analyse dans la façon dont les serveurs frontaux et les serveurs principaux traitent les demandes des expéditeurs.
Les serveurs frontaux sont généralement des équilibreurs de charge ou des proxys inverses utilisés par les sites Web pour gérer une chaîne de requêtes HTTP entrantes sur une seule connexion et les transmettre à un ou plusieurs serveurs principaux. Il est donc crucial que les demandes soient traitées correctement aux deux extrémités afin que les serveurs puissent déterminer où se termine une demande et où commence la suivante, un échec pouvant entraîner un scénario où le contenu malveillant ajouté à une demande est ajouté au début de la prochaine demande.
En d’autres termes, en raison d’un problème lié à la façon dont les serveurs frontaux et principaux traitent le début et la fin de chaque requête en utilisant le Contenu-Longueur et Transfert-Encodage en-têtes, la fin d’une requête HTTP malveillante est mal calculée, laissant le contenu malveillant non traité par un serveur mais préfixé au début de la prochaine requête entrante dans la chaîne.
« L’attaque a été rendue possible en utilisant une vulnérabilité de débordement d’entier qui a permis d’atteindre un état inattendu dans HAProxy lors de l’analyse d’une requête HTTP – en particulier – dans la logique qui traite les en-têtes Content-Length », chercheurs de JFrog Security mentionné dans un rapport publié mardi.
Dans un scénario d’attaque potentielle dans le monde réel, la faille pourrait être utilisée pour déclencher une attaque de contrebande de requêtes HTTP dans le but de contourner LCA (alias liste de contrôle d’accès) règles défini par HAProxy, qui permet aux utilisateurs de définir des règles personnalisées pour bloquer les requêtes malveillantes.
Suite à une divulgation responsable, HAProxy a corrigé la faiblesse en ajoutant des contrôles de taille pour les longueurs de nom et de valeur. « En tant que mesure d’atténuation, il suffit de vérifier que pas plus d’une [content-length] est présent dans n’importe quel message », Willy Tarreau, créateur et développeur principal de HAProxy, c’est noté dans un commit GitHub poussé le 3 septembre.
Il est recommandé aux clients qui ne peuvent pas mettre à niveau vers les versions susmentionnées du logiciel d’ajouter l’extrait ci-dessous à la configuration du proxy pour atténuer les attaques –
http-request deny if { req.hdr_cnt(content-length) gt 1 }
http-response deny if { res.hdr_cnt(content-length) gt 1 }