L'évasion de requête HTTP est une vulnérabilité de sécurité web complexe et sophistiquée qui exploite les divergences dans le traitement des requêtes HTTP entre différents serveurs web, généralement un frontal (également connu sous le nom de proxy ou de répartiteur de charge) et un serveur de back-end. Cette vulnérabilité permet aux attaquants de dissimuler ou cacher une requête HTTP malveillante ambiguë à l'intérieur d'une autre requête, entraînant divers problèmes de sécurité tels que l'accès non autorisé, le détournement de session et les attaques de type cross-site scripting (XSS).
L'évasion de requête HTTP cible principalement les applications web qui dépendent de chaînes de serveurs (y compris les proxies, caches et pare-feux d'application web) par lesquelles les requêtes HTTP passent avant d'atteindre le serveur de back-end. Un attaquant exploite les différences dans l'analyse des requêtes HTTP entre ces serveurs pour injecter ou 'cacher' des requêtes malveillantes.
Vulnérabilités CL.TE et TE.CL : Il y a principalement deux types de vulnérabilités d'évasion de requête HTTP basées sur le Transfer-Encoding : Content-Length (CL.TE) et Transfer-Encoding: Transfer-Encoding (TE.CL). L'attaquant manipule soit l'en-tête Content-Length
, soit l'en-tête Transfer-Encoding
, ou les deux, pour tromper les serveurs et les amener à mal interpréter les limites des requêtes HTTP.
Techniques Employées : L'attaque utilise des techniques telles que la division d'en-tête où l'attaquant conçoit une requête qui inclut des en-têtes ou un contenu de corps ambigu, amenant les serveurs frontal et de back-end à être en désaccord sur l'endroit où une requête se termine et où une autre commence. Cela pourrait conduire à des scénarios où une requête malveillante, initialement bloquée par les mesures de sécurité au niveau du proxy, est exécutée par le serveur de back-end sans contrôle approprié.
Pour contrer efficacement les attaques d'évasion de requête HTTP, les organisations doivent employer une approche à plusieurs niveaux :
Mise en Place de Protocoles de Sécurité Robustes : Outre les conseils généraux ci-dessus, l'emploi de protocoles de sécurité stricts et de cadres conçus pour traiter les requêtes HTTP de façon sécurisée peut renforcer une application web contre l'évasion et d'autres attaques sophistiquées. Des technologies telles que HTTPS, des pare-feux d'application web avancés (WAF) et des proxies de nouvelle génération qui analysent et nettoient les requêtes HTTP avant qu'elles n'atteignent les serveurs de back-end sont des mesures essentielles.
Il est important de noter que la nature et la méthodologie des attaques d'évasion de requête HTTP évoluent constamment à mesure que les attaquants conçoivent de nouvelles façons d'exploiter les divergences entre les interprétations des serveurs. La communauté de la cybersécurité, y compris des organisations telles que OWASP et CERT, met régulièrement à jour les avis de sécurité et les guides pour traiter les nouvelles vulnérabilités et vecteurs d'attaque.
En conclusion, atténuer les risques associés à l'évasion de requête HTTP nécessite une solide compréhension des architectures de serveurs web, une surveillance vigilante et la mise à jour des configurations des serveurs, ainsi que la mise en œuvre de mesures de sécurité globales. Comme pour de nombreuses menaces en cybersécurité, la prévention dépend fortement de la sensibilisation, de l'éducation et des pratiques de sécurité proactives.