Vigil@nce : HTTP, gestion incohérente des paramètres
mai 2009 par Vigil@nce
Le protocole HTTP ne définit pas le comportement des serveurs web
face à une requête contenant plusieurs fois la même variable, ce
qui peut provoquer des vulnérabilités.
Gravité : 1/4
Conséquences : lecture de données, création/modification de
données, transit de données
Provenance : client internet
Moyen d’attaque : aucun démonstrateur, aucune attaque
Compétence de l’attaquant : expert (4/4)
Confiance : source unique (2/5)
Diffusion de la configuration vulnérable : élevée (3/3)
Date création : 20/05/2009
PRODUITS CONCERNÉS
- HTTP
DESCRIPTION DE LA VULNÉRABILITÉ
La RFC 2616 définit le protocole HTTP. La RFC 3986 définit la
syntaxe des uris. Par exemple :
http://serveur/page?var1=val1&var2=val2
Ces RFC ne définissent pas comment gérer les urls contenant
plusieurs fois le même nom de variable. Par exemple :
http://serveur/page?var=val1&var=val2
Les développeurs de services HTTP ont donc fait des choix
différents :
– ASP.NET : la valeur utilisée est la concaténation des
paramètres ("val1,val2")
– PHP : la valeur utilisée est le dernier paramètre ("val2")
– JSP : la valeur utilisée est le premier paramètre ("val1")
– Zope : la valeur utilisée est un tableau ([’val1’, ’val2’])
De même, si un paramètre est défini dans le Query String et dans
un Cookie, les comportements divergent. Par exemple :
POST /page ?var=val1
Cookie : var=val2
\n
var=val3
Un attaquant peut donc employer ces incohérences afin par exemple
de contourner les IDS ou les modules de filtrage web.
Ces vulnérabilités ont été regroupées sous le terme HPP (HTTP
Parameter Pollution).
CARACTÉRISTIQUES
Références : VIGILANCE-VUL-8726
http://vigilance.fr/vulnerabilite/HTTP-gestion-incoherente-des-parametres-8726