Vigil@nce : BSD, corruption de mémoire via printf
juillet 2009 par Vigil@nce
Lorsque l’attaquant peut choisir une valeur réelle, et son format
d’affichage par une fonction de la famille printf(), il peut
provoquer un débordement conduisant à un déni de service ou à
l’exécution de code.
Gravité : 2/4
Conséquences : accès/droits utilisateur, déni de service du
service, déni de service du client
Provenance : document
Moyen d’attaque : 1 démonstrateur
Compétence de l’attaquant : spécialiste (3/4)
Confiance : confirmé par l’éditeur (5/5)
Diffusion de la configuration vulnérable : élevée (3/3)
Date création : 29/06/2009
PRODUITS CONCERNÉS
– FreeBSD
– NetBSD
– OpenBSD
DESCRIPTION DE LA VULNÉRABILITÉ
Les versions récentes de FreeBSD, NetBSD et OpenBSD utilisent la
bibliothèque gdtoa (double to ascii) pour convertir les valeurs
réelles en chaînes de caractères. Les fonctions de la famille
printf() utilisent gdtoa.
Le nombre de chiffres d’un nombre réel peut être indiqué dans le
paramètre de format. Par exemple "%2.3f" affiche 2 chiffres avant
la virgule, et 3 après.
Lorsque le nombre de chiffres après la virgule est supérieur à
2^18, la taille allouée par gdtoa est trop courte. La mémoire est
alors corrompue.
Lorsque l’attaquant peut choisir une valeur réelle, et son format
d’affichage par une fonction de la famille printf(), il peut donc
provoquer un débordement conduisant à un déni de service ou à
l’exécution de code.
CARACTÉRISTIQUES
Références : BID-35510, CVE-2009-0689, VIGILANCE-VUL-8828
http://vigilance.fr/vulnerabilite/BSD-corruption-de-memoire-via-printf-8828