|
Dans le bulletin d'octobre 2004 du Cert-IST, nous vous avions présenté les attaques de type "HTTP Response Splitting". Ces attaques consistent à injecter des données malicieuses dans les en-têtes des réponses HTTP, de façon à détourner les transactions web. Typiquement ces attaques permettent de corrompre un cache web, ou de voler des données utilisateurs (par exemple les cookies de session). Amit Klein, l'auteur de l'étude sur le "Response Splitting" a publié début juin, avec 3 autres chercheurs, une nouvelle étude qui explore en détail d'autres manipulations malicieuses des en-têtes HTTP. Cette fois, ce sont les requêtes (plutôt que les réponses) qui sont disséquées, pour produire des attaques baptisées "HTTP Request Smuggling". Nous traduisons ce terme par "Dissimulation de requêtes HTTP", car "smuggling" signifie mot à mot "contrebande". Ces attaques s'appliquent dans le cas (très classique) où une requête web traverse un équipement amont avant de parvenir au serveur web (par exemple un "serveur cache", ou un garde-barrière effectuant de l'inspection HTTP). L'attaque consiste alors à construire des requêtes malicieuses qui seront interprétées différemment par l'équipement amont et par le serveur web. L’attaquant cherche ainsi à dissimuler à l'équipement amont les requêtes HTTP réellement traitées par le serveur web. Pour illustrer les
principes de cette technique, nous reprenons la première attaque présentée dans
l'étude. Considérons donc les données HTTP suivantes : […] 5 Content-Length: 0 6 Content-Length: 44 7 8 GET /poison.html HTTP/1.1 9 Host: SITE 10 Bla: [space after the "Bla:", but no CRLF] 11 GET http://SITE/page_to_poison.html HTTP/1.1 12 Host: SITE 13 Connection: Keep-Alive 14 [CRLF] Dans cette attaque, une anomalie a été sciemment introduite dans la requête "POST", en insérant deux champs "Content-Length". Selon l'étude :
L'injection de deux
champs "Content-Length" a donc permis de corrompre le cache web : désormais,
à chaque fois que l'on demande à consulter la page
"page_to_poison.html", c'est en réalité la page
"poison.html" qui est renvoyée. L'étude identifie 6 types d'anomalies HTTP qui peuvent être utilisées pour réaliser le même type d'attaque :
Pour ces six cas, les auteurs ont réalisé des tests qui ont montré que les équipements traitaient ces anomalies de façon non cohérente (tous les équipements n'ont pas la même interprétation). Leur étude donne une liste (non exhaustive) de 25 couples "équipement amont" ("relais ou garde-barrière") et "serveur web", où des anomalies se produisent. Voici les "équipements amonts" cités (se reporter à l'étude pour obtenir le détail des couples) :
L'étude donne enfin des exemples d' attaques que le "HTTP request smuggling" peut permettre de réaliser :
Globalement l'étude paraît très aboutie. Les techniques présentées sont complexes, mais elles sont illustrées d'exemples très détaillés montrant des cas réels d'attaques. On peut donc craindre qu'elles servent dans le futur à réaliser des attaques :
L'étude mentionne que des
correctifs pour certains de ces problèmes ont été apportés pour les produits
SQUID et CheckPoint FW-1. La version "Alpha" de Apache 2.1 contient
également une correction de ce type (mais ce correctif ne sera apparemment pas
porté sur les branches 1.3 et 2.0). Nota : L'anomalie "Transfer-Encoding: chunked" a donné lieu à la publication de 7 références CVE, correspondant aux 7 produits suivants considérés comme vulnérables à cette attaque :
Le Cert-IST a émis sur
cette anomalie l'avis CERT-IST/AV-2005.276 Pour plus
d'information : Etude
"HTTP Request Smuggling" : Annonce de la prise en
compte de ce problème par Apache : |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||