Glossaire F5

Injection d'en-tête HTTP

Qu'est-ce que l'injection d'en-tête HTTP ?

L'injection d'en-tête HTTP est une méthode d'attaque qui exploite les vulnérabilités des applications Web. En incorporant des chaînes malveillantes, notamment des caractères de retour chariot et de saut de ligne (CRLF), dans les requêtes HTTP envoyées au serveur Web, les attaquants peuvent manipuler les réponses HTTP. Les applications Web qui stockent les paramètres fournis par l’utilisateur directement dans les en-têtes de réponse HTTP sans nettoyage sont particulièrement vulnérables à ce type d’attaque.

Par exemple, considérons un scénario dans lequel un navigateur envoie la requête suivante avec un paramètre :

http://f5.com/index.html?status=1

Si l' application Web souhaite utiliser le paramètre status=1 pour la gestion de session, elle peut renvoyer une réponse HTTP comme celle-ci :

HTTP/1.1 200 OK
...
Set-Cookie:status=1

Supposons maintenant que la requête soit modifiée avec l’entrée élaborée suivante :

http://f5.com/index.html?status=1<CRLF><CRLF><html><body><script>~</script></body></html>

La réponse HTTP de l’ application Web serait modifiée comme suit :

HTTP/1.1 200 OK
...
Set-Cookie:status=1
<ligne vide>
<html><body><script>~</script></body></html>

Dans les réponses HTTP, tout contenu après deux caractères CRLF (lignes vides) est traité comme le corps de la réponse et rendu par le navigateur. Si le corps de la réponse contient du JavaScript malveillant, le navigateur l'exécutera, ce qui entraînera des failles de sécurité potentielles. De plus, les attaquants peuvent créer des entrées pour injecter du contenu d'en-tête comme :

<CRLF>Set-Cookie:PHPSESSID=abc

Cela définirait un ID de session spécifique dans le navigateur et permettrait des attaques de fixation de session.

Comment empêcher l’injection d’en-tête HTTP :

  • Désinfection : Validez et nettoyez les paramètres reçus dans les en-têtes de requête HTTP pour neutraliser les chaînes malveillantes.
  • Pare-feu application Web (WAF) : Étant donné qu’il est difficile de nettoyer toutes les applications Web de manière cohérente, le déploiement d’un WAF est une solution efficace. Un WAF surveille le trafic de la couche applicative et peut bloquer les requêtes considérées comme des attaques, atténuant ainsi les risques d'injection d'en-tête HTTP.