Vigil@nce : PHP, exécution de code via mb_ereg_replace
mai 2009 par LA REDACTION DE GS MAG
SYNTHÈSE DE LA VULNÉRABILITÉ
Lorsque la fonction mb_ereg_replace() est utilisée sur des données
non filtrées, un attaquant peut exécuter du code PHP.
Gravité : 2/4
Conséquences : accès/droits utilisateur
Provenance : client internet
Moyen d’attaque : 1 démonstrateur
Compétence de l’attaquant : spécialiste (3/4)
Confiance : source unique (2/5)
Diffusion de la configuration vulnérable : élevée (3/3)
Date création : 13/05/2009
PRODUITS CONCERNÉS
– PHP
DESCRIPTION DE LA VULNÉRABILITÉ
La fonction mb_ereg_replace() utilise une expression régulière
pour définir un motif à remplacer dans une chaîne Unicode. La
fonction mb_eregi_replace() ignore la casse.
L’option ’e’ indique d’exécuter le motif à remplacer au lieu de le
considérer comme une chaîne texte. Par exemple :
$chaine = ’A-b-C’ ;
mb_ereg_replace(’^A-(.*)-C$’, "strtoupper(’\1’)", $chaine, ’e’) ;
retourne "A-B-C" (’b’ est mis en majuscules).
Cependant, les fonctions mb_ereg_replace() et mb_eregi_replace()
ne filtrent pas les caractères ’\’ dans le motif de remplacement.
Un attaquant peut par exemple employer :
$chaine = ’\’), phpinfo(), strtoupper(\’’ ;
pour faire exécuter :
strtoupper(’’), phpinfo(), strtoupper(’’)
c’est-à-dire injecter l’appel à la fonction phpinfo().
Lorsque la fonction mb_ereg_replace() est utilisée sur des données
non filtrées, un attaquant peut donc exécuter du code PHP.
CARACTÉRISTIQUES
Références : 48180, BID-34873, VIGILANCE-VUL-8711
http://vigilance.fr/vulnerabilite/PHP-execution-de-code-via-mb-ereg-replace-8711