Attaques HTTP Desync : Une variante des attaques de contrebande de requêtes

Version imprimable, PDF et e-mail

En août 2019, l'équipe de PortSwigger a publié de nouvelles informations concernant une variante d'attaque de contrebande de requêtes HTTP : les attaques par désynchronisation HTTP (ou attaques HTTP Desync). Dans le cadre de ses recherches, l'équipe a réussi à identifier les dommages significatifs que ces attaques sont susceptibles de causer. En outre, elle a montré comment une technique autrefois négligée pouvait être utilisée pour causer de sérieux dégâts.

Les attaques de contrebande de requêtes profitent de l'incapacité du serveur à traiter en toute sécurité les différentes anomalies d'une requête HTTP. Une contrebande de requêtes HTTP peut par exemple consister en une déviation de l'utilisation habituelle des caractères de retour chariot (CR) ou de fin de ligne (LF) dans une requête, ou en l'utilisation malveillante d'en-têtes courants, comme Content-Length (longueur de contenu) ou Transfer-Encoding (codage de transfert). Cette vulnérabilité sous-jacente peut également être exploitée pour lancer des attaques XSS (cross-site scripting), pour accéder de manière non authentifiée à des informations confidentielles et pour empoisonner le cache.

 De manière générale, les cybercriminels exécutent ces attaques en envoyant les en-têtes Content-Length et Transfer-Encoding au sein d'une même requête. Selon les spécifications RFC, cette combinaison devrait être traitée en donnant la priorité à la valeur de l'en-tête Transfer-Encoding. Toutefois, l'astuce consiste à camoufler l'en-tête « Transfer-Encoding » en introduisant des caractères non ASCII dans le nom, de sorte que l'analyseur HTTP ignore l'en-tête.

Voici un exemple de ce type d'attaques :

POST / HTTP/1.1
Host: saas-app.com
Content-Length: 4
Transfer-Encoding : \x00chunked

1234<script>alert("xss")</script>GET / HTTP/1.0

Dans l'exemple ci-dessus, un espace se trouve dans le nom « Transfer-Encoding ». Selon la bibliothèque HTTP de Golang (Golang CVE-2019-16276), ce dernier est valide. La requête est donc considérée comme valide, exécutant par extension la requête de contrebande depuis l'application en back-end.

Comment se défendre contre les attaques HTTP Desync ?

Pour se défendre contre ces attaques, vous devez :

  • Réussir à correctement identifier la présence et l'acheminement d'une requête HTTP secondaire dissimulée à l'intérieur d'une autre requête HTTP
  • Refuser à cette requête secondaire l'accès au serveur principal

Il existe aujourd'hui plusieurs variantes d'attaques Desync : Barracuda WAF et WAF-as-a-Service peuvent vous aider à vous défendre contre l'ensemble de ces attaques. En effet, ces solutions identifient les attaques dès l'étape de validation du protocole et bloquent les requêtes illégales similaires à celles présentées plus haut. Votre application est ainsi totalement protégée.

Voici quelques exemples des protections que nous pouvons vous proposer :

  • Suppression par défaut des requêtes contenant à la fois un en-tête Transfer-Encoding et un en-tête Content-Length, puisqu'elles sont considérées comme des requêtes de contrebande
  • Blocage des en-têtes HTTP qui ne respectent pas la grammaire de la RFC 7230 et sont donc considérés malveillants
  • Blocage par défaut des requêtes contenant plusieurs en-têtes Content-Length
  • Blocage des requêtes dont l'en-tête Content-Length contient plusieurs valeurs décimales (ex. : « Content-Length: 42, 42 »)
  • Blocage des requêtes avec en-tête CL dont la longueur ne correspond pas à la taille de la charge utile

La solution Barracuda Web Application Firewall (WAF) protège vos applications, API et serveurs principaux dédiés aux applications mobiles contre tout un ensemble d'attaques, parmi lesquelles les menaces zero-day, les attaques répertoriées dans la liste OWASP Top 10, les fuites de données et les attaques par déni de service (DoS) visant la couche applicative. Les solutions Barracuda WAF et WAF-as-a-Service sont des composants de Barracuda Cloud Application Protection (CAP), une plateforme qui protège les applications Web hébergées non seulement dans le cloud, mais également dans des environnements hybrides ou sur site.

Barracuda a été nommé Challenger en 2020 par le Gartner Magic Quadrant dans la catégorie « Web Application Firewall » pour sa capacité d'exécution et l'étendue de sa vision, et ce, pour la quatrième année consécutive. Consultez le rapport Gartner dédié à la sécurité des applications Web, et obtenez votre exemplaire complet contenant toutes les informations dont vous avez besoin pour protéger votre entreprise.

OBTENEZ VOTRE EXEMPLAIRE GRATUIT DÈS AUJOURD'HUI

Leave a Reply

Your email address will not be published. Required fields are marked *

Remonter en haut de page
Tweeter
Partager
Partager