Cybreach Consulting Prendre RDV
Retour aux articles
Vulnérabilités

Contrebande de requêtes HTTP : exploiter les désaccords entre proxies

Le HTTP request smuggling exploite une ambiguïté dans la spécification HTTP 1.1 concernant la délimitation des requêtes. En HTTP 1.1, deux en-têtes peuvent indiquer la longueur du corps d'une requête : Content-Length (longueur en octets) et Transfer-Encoding: chunked (longueur par morceaux). Si le proxy frontal et le serveur backend interprètent différemment lequel des deux a priorité, l'attaquant peut construire une requête ambiguë.

Les variantes CL.TE et TE.CL

CL.TE : le proxy lit Content-Length, le backend lit Transfer-Encoding. Le proxy transmet la requête en se basant sur Content-Length, mais le backend interprète le corps comme des chunks. La partie du corps ignorée par le proxy est préfixée à la requête suivante du backend. TE.CL : l'inverse. Le proxy lit Transfer-Encoding, le backend lit Content-Length.

Requête CL.TE simplifiée

POST / HTTP/1.1
Host: vulnerable.com
Content-Length: 13
Transfer-Encoding: chunked

0

GET /admin

Impacts

Les impacts d'une exploitation réussie sont variés et peuvent être sévères. Contournement de contrôles de sécurité : le proxy implémente des règles (WAF, contrôle d'accès) que le backend ne reverra pas pour la requête smugglée. Empoisonnement des requêtes d'autres utilisateurs : la requête smugglée est préfixée à la connexion d'un autre utilisateur, permettant de capturer ses données ou de le rediriger. Empoisonnement du cache web. Accès à des endpoints internes normalement filtrés par le proxy.

Prévention

Les mesures de prévention agissent sur la cohérence de traitement entre les composants. Utiliser HTTP/2 de bout en bout (HTTP/2 n'a pas ce problème car il utilise un mécanisme de framing différent). Si HTTP/1.1 est nécessaire, normaliser les requêtes au niveau du proxy (rejeter les requêtes avec les deux en-têtes, ou supprimer l'un d'eux). S'assurer que le proxy et le backend utilisent la même implémentation HTTP ou au moins la même priorité entre les deux en-têtes. Désactiver la réutilisation des connexions backend si possible.

Outil de détection : l'extension Burp Suite HTTP Request Smuggler automatise la détection des variantes CL.TE, TE.CL et TE.TE. James Kettle (PortSwigger Research) a publié des recherches détaillées sur cette classe de vulnérabilité.

Une question après la lecture ?

Votre infrastructure utilise un proxy ou un load balancer devant votre serveur ? Envoyez un message.

Ou réservez directement un cadrage de 30 minutes

Réserver un appel