Vigil@nce - crypt_blowfish : collision de hachés
septembre 2011 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/offre
SYNTHÈSE DE LA VULNÉRABILITÉ
Lorsqu’un utilisateur a un mot de passe contenant des caractères 8
bits, l’algorithme de hachage Blowfish de crypt() génère un haché
invalide, qui est potentiellement plus rapide à retrouver par
brute force.
Gravité : 2/4
Date création : 19/08/2011
PRODUITS CONCERNÉS
– Novell Linux Desktop
– Novell Open Enterprise Server
– OpenSUSE
– SUSE Linux Enterprise Desktop
– SUSE Linux Enterprise Server
– Unix - plateforme
DESCRIPTION DE LA VULNÉRABILITÉ
La fonction crypt() hache le mot de passe d’un utilisateur. Lors
de l’ajout d’un utilisateur, le haché est stocké dans le fichier
/etc/shadow. Lors de l’authentification de l’utilisateur, le haché
du mot de passe saisi est comparé à celui du fichier /etc/shadow.
La fonction crypt() supporte plusieurs algorithmes de hachage :
– DES
– MD5 (préfixe $1$)
– Blowfish (préfixe $2a$), qui est implémenté dans la
bibliothèque crypt_blowfish
Cependant, crypt_blowfish utilise des caractères C signés (-128 à
127), au lieu de caractères non signés (0 à 255). Le haché généré
est donc invalide si le mot de passe contient des caractères de 8
bits.
Cette erreur n’a pas d’impact pour l’authentification des
utilisateurs, car le haché invalide avait été stocké dans le
fichier /etc/shadow, et le haché invalide du mot de passe saisi
est le même.
Cependant, le haché généré est sujet à collisions : plusieurs mots
de passe peuvent avoir le même haché. Une attaque brute force
nécessite alors de tester moins de mots de passe avant de trouver
celui de l’utilisateur.
Lorsqu’un utilisateur a un mot de passe contenant des caractères 8
bits, l’algorithme de hachage Blowfish de crypt() génère donc un
haché invalide, qui est potentiellement plus rapide à retrouver
par brute force.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET
http://vigilance.fr/vulnerabilite/crypt-blowfish-collision-de-haches-10934