Rechercher
Contactez-nous Suivez-nous sur Twitter En francais English Language
 

Abonnez-vous gratuitement à notre NEWSLETTER

Newsletter FR

Newsletter EN

Vulnérabilités

Se désabonner

XMCO explique la vulnérabilité des clés faibles OpenSSL générées sur Debian et Ubuntu

mai 2008 par Yannick Hamon, Xmco Partners

Depuis plusieurs jours une vulnérabilité découverte au sein du paquet OpenSSL des distributions Debian et Ubuntu fait couler beaucoup d’encres. Revenons sur ce problème qui pourrait poser de véritables soucis aux administrateurs UNIX.

Un bug aurait été introduit par un développeur Debian à la suite d’une plainte d’un éditeur qui avait des problèmes de compatibilité avec la version d’OpenSSL.
Cette faille, de type cryptographique, provient du générateur de nombres pseudoaléatoires (PRNG) de OpenSSL utilisé pour créer les clés publiques et privées. La graine d’aléa était égale au PID (identifiant du processus) en cours d’utilisation. Sur un système Linux (plateforme x86), seules 2^15 (32768) valeurs sont possibles. Le facteur aléatoire est donc considérablement compromis.

Cette faille est apparue en septembre 2006 et fût corrigée le 13 mai 2008. Ainsi, toutes les applications utilisant la fonctionnalité PRNG de OpenSSL des distributions Debian et Ubuntu sont donc vulnérables.

En conséquence, toutes les clés SSL et SSH générées depuis une machine Linux Debian et Ubuntu doivent être régénérées.
Les certificats sont également concernés : ils doivent être révoqués, régénérés et resignés par l’Authorité de Certification. Ces opérations doivent évidemment être réalisées suite à la mise à jour de OpenSSL.

Deux types d’attaques sont possibles : le déchiffrement de trames capturées ou le contournement des mécanismes d’authentification par clés.

Le scénario le plus critique concerne les serveurs SSH autorisant ce type d’authentification. Si le serveur autorise un utilisateur à s’authentifier à l’aide d’une clé publique et que cette clé a été générée depuis un système Debian/Ubuntu vulnérable, un pirate peut bruteforcer la phase d’authentification en un maximum de 32768 tentatives. Dans ce scénario, la clé publique de l’utilisateur (soit la clé générée à partir d’un système Debian ou Ubuntu) est inscrite au sein du fichier authorized_keys du serveur SSH.
Il est important d’insister sur le fait que le serveur SSH n’est pas en soi vulnérable et que la vulnérabilité est bien causée par la clé publique inscrite dans le authorized_keys.
De nombreux serveurs SSH sont donc, par extension, potentiellement vulnérables et cela quel que soit leur système d’exploitation (Unix, BSD, Linux...)

Un facteur mitigeant réside dans le fait que l’attaquant doit tout de même connaître le login associé à cette authentification, par exemple root.

Le nombre de tentatives peut être considérablement réduit en prenant compte du fait qu’un système Debian/Ubuntu incrémente séquentiellement la valeur des PID. Les valeurs des PID utilisées pour la génération de clés d’utilisateurs SSH ont de très grandes chances d’être comprises entre 500 et 10000, soit 9500 possibilités.

Plusieurs programmes ont été publiés pour générer toutes les clés possibles en fonction de l’algorithme (DSA/RSA) et la taille de la clé. Le site "metasploit.com" propose également en téléchargement les archives suivantes :

 SSH 1024-bit DSA Keys x86 (30.0M)
 SSH 1023-bit RSA Keys x86 (25.0M)
 SSH 1024-bit RSA Keys x86 (26.0M)
 SSH 2047-bit RSA Keys x86 (48.0M)
 SSH 2048-bit RSA Keys x86 (48.0M)
 SSH 4096-bit RSA Keys x86 (94.0M)
 SSH 8192-bit RSA Keys x86 (PID 1 à 4100+) (29.0M)

Une simple boucle exécutant la commande "ssh root@server -i " permettrait à un pirate de prendre le contrôle des serveurs vulnérables implémentant l’authentification par clef. Une telle attaque serait donc bruyante (minimum de 9500 tentatives de connexions) mais pourrait être réalisée si aucun mécanisme de bannissement d’IP n’était mis en place ou si les administrateurs n’étaient pas vigilants.


Voir les articles précédents

    

Voir les articles suivants