Vigil@nce : NetBSD, buffer overflow via getservbyname et getservbyport
juillet 2011 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/
SYNTHÈSE DE LA VULNÉRABILITÉ
Lorsqu’un attaquant peut transmettre des données aux fonctions de
la famille getservbyname() et getservbyport(), il peut provoquer
un débordement, afin de faire exécuter du code ou de mener un déni
de service.
– Gravité : 1/4
– Date création : 01/07/2011
PRODUITS CONCERNÉS
– NetBSD
DESCRIPTION DE LA VULNÉRABILITÉ
Le fichier /etc/services indique la correspondance entre les noms
des services, et leur numéro de port. Par exemple :
ftp 21/tcp
telnet 23/tcp
Les informations de ce fichier sont lues via les fonctions :
– getservbyname() : obtention de l’entrée à partir de son nom
– getservbyname_r() : version réentrante
– getservbyport() : obtention de l’entrée à partir de son numéro
de port
– getservbyport_r() : version réentrante
– getaddrinfo() : utilise getservbyname()
– getnameinfo() : utilise getservbyport()
Cependant, la fonction _servent_getbyname() du fichier NetBSD
src/lib/libc/net/getservbyname_r.c ne vérifie pas si la taille du
nom du service ou du protocole est trop grande. De même, la
fonction _servent_getbyport() ne vérifie pas si la taille du
protocole est trop grande.
Lorsqu’un attaquant peut transmettre des données aux fonctions de
la famille getservbyname() et getservbyport(), il peut donc
provoquer un débordement, afin de faire exécuter du code ou de
mener un déni de service. Une application (comme PHP) exposant ces
fonctions doit servir de vecteur d’attaque.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET
http://vigilance.fr/vulnerabilite/NetBSD-buffer-overflow-via-getservbyname-et-getservbyport-10802