Une vulnérabilité de sécurité critique a été identifiée dans toutes les versions des outils PuTTY de 0.68 à 0.80 inclusivement. Cette vulnérabilité affecte le code qui génère les signatures à partir des clés privées ECDSA utilisant la courbe NIST P521. PuTTY, ou Pageant, génère une signature à partir d’une clé lors de son utilisation pour vous authentifier auprès d’un serveur SSH.
Cette vulnérabilité, portant le CVE-2024-31497, a été découverte par Fabian Bäumer et Marcus Brinkmann de l’Université de la Ruhr à Bochum. Vous pouvez consulter leur analyse détaillée sur la liste de diffusion oss-security (source).
Impact de la vulnérabilité
Le problème majeur réside dans la compromission de la clé privée. Un attaquant en possession de quelques dizaines de messages signés et de la clé publique dispose des informations nécessaires pour récupérer la clé privée, puis falsifier des signatures comme si elles provenaient de vous. Cela leur permettrait de se connecter à tout serveur pour lequel vous utilisez cette clé. Pour obtenir ces signatures, un attaquant n’a besoin que de compromettre brièvement n’importe quel serveur où vous utilisez la clé pour vous authentifier, ou d’obtenir momentanément l’accès à une copie de Pageant contenant la clé. (Cependant, ces signatures ne sont pas exposées aux écoutes passives des connexions SSH.)
Recommandations
Si vous possédez une clé de ce type, nous vous recommandons de la révoquer immédiatement : retirez l’ancienne clé publique de tous les fichiers authorized_keys OpenSSH, ainsi que de l’équivalent dans d’autres serveurs SSH, afin qu’une signature provenant de la clé compromise ne soit plus valide. Ensuite, générez une nouvelle paire de clés pour la remplacer.
Détails de l’erreur
Toutes les signatures DSA nécessitent une valeur aléatoire, appelée « nonce », à être inventée lors de la signature. Il est bien connu qu’un attaquant peut récupérer votre clé privée s’il parvient à deviner la valeur de k que vous avez utilisée, ou s’il trouve deux signatures que vous avez générées avec le même k.
La technique utilisée par PuTTY pour générer k était de créer un hachage SHA-512, puis de le réduire modulo q, où q est l’ordre du groupe utilisé dans le système DSA. Dans le cas du P521, cette réduction n’a aucun effet, créant une valeur de k dont les 9 premiers bits sont toujours nuls.
Pour corriger cette vulnérabilité, PuTTY a abandonné complètement son ancienne méthode de génération de k et a adopté la technique RFC 6979 pour tous les types de clés DSA et ECDSA. Cependant, cela n’empêche pas l’information sur les clés privées P521 existantes d’avoir déjà été divulguée à chaque fois qu’une signature a été générée avec l’ancien générateur k.
En conclusion, il est impératif de mettre à jour vers la version corrigée c193fe9848f50a88a4089aac647fecc31ae96d27 (0.81) de PuTTY pour résoudre cette vulnérabilité et d’éviter toute exploitation malveillante de vos clés privées NIST P521.