Vigil@nce : Asterisk, déni de service via sscanf
août 2009 par Marc Jacob
Un attaquant peut envoyer un message contenant un grand entier
afin de stopper Asterisk.
Gravité : 2/4
Conséquences : déni de service du service
Provenance : client intranet
Moyen d’attaque : aucun démonstrateur, aucune attaque
Compétence de l’attaquant : expert (4/4)
Confiance : confirmé par l’éditeur (5/5)
Diffusion de la configuration vulnérable : élevée (3/3)
Date création : 11/08/2009
PRODUITS CONCERNÉS
– Unix - plateforme
DESCRIPTION DE LA VULNÉRABILITÉ
La fonction sscanf() analyse une chaîne texte, à la recherche des
motifs indiqués. Par exemple :
sscanf("1234", "%d", &nombre) ;
Pour limiter la taille du nombre :
sscanf("1234", "%10d", &nombre) ;
Cependant, Asterisk emploie sscanf() sans limiter la taille des
champs. Un attaquant peut donc employer un entier très long
("000...0001234"). Lorsque sa taille dépasse la taille de la pile
du thread Asterisk, une erreur fatale se produit.
Cette erreur est présente à plusieurs endroits du code source
d’Asterisk : analyse de SIP Invite, Content-Length, SDP, etc.
Un attaquant peut donc envoyer un message contenant un grand
entier afin de stopper Asterisk.
CARACTÉRISTIQUES
Références : AST-2009-005, BID-36015, CVE-2009-2726, MU-200908-01,
VIGILANCE-VUL-8932
http://vigilance.fr/vulnerabilite/Asterisk-deni-de-service-via-sscanf-8932