Vigil@nce : PHP, accès fichier via le caractère nul
novembre 2010 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/
SYNTHÈSE DE LA VULNÉRABILITÉ
Lorsqu’une application PHP ne filtre pas les caractères nuls dans
les paramètres, et emploie ces paramètres pour accéder à un
fichier, le nom du fichier réellement accédé est tronqué.
– Gravité : 2/4
– Date création : 19/11/2010
DESCRIPTION DE LA VULNÉRABILITÉ
Le langage PHP propose de nombreuses fonctions de manipulation de
fichiers : include(), copy(), is_file(), file_get_contents(),
file_put_contents(), file(), glob(), is_dir(), file_exists(),
fileatime(), filectime(), filegroup(), fileinode(), filemtime(),
fileowner(), fileperms(), filesize(), filetype(), fopen(),
is_executable(), is_link(), is_readable(), is_writable(),
lchgrp(), lchown(), link(), linkinfo(), lstat(), mkdir(),
pathinfo(), popen(), readfile(), realpath(), rename(), rmdir(),
stat(), symlink(), touch(), unlink(), tempnam().
En langage C, le caractère nul ’\0’ indique la fin d’une chaîne,
mais en langage PHP une chaîne peut contenir le caractère nul :
"bon\0jour".
Les fonctions de manipulation de fichiers (implémentées en C)
tronquent le nom de fichier après le caractère nul. Cependant,
l’éventuel code PHP vérifiant la validité du nom de fichier ne le
tronque pas. Cette incohérence peut par exemple permettre
d’accéder à un fichier, même si son extension est invalide.
Lorsqu’une application PHP ne filtre pas les caractères nuls dans
les paramètres, et emploie ces paramètres pour accéder à un
fichier, le nom du fichier réellement accédé est donc tronqué.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET
http://vigilance.fr/vulnerabilite/PHP-acces-fichier-via-le-caractere-nul-10139