
Preuve de concept qui exploite PuTTy CVE-2024-31497.
Cette vulnérabilité exploite la génération biaisée du nonce ECDSA dans le fichier ecc-ssh.c. Le nonce est généré avec $sha512(ID\ ||\ sha512(privKey)\ ||\ sha1(data))\ mod\ q$ laissant les 9 bits de poids fort à zéro. Afin de récupérer la clé privée, nous avons besoin de 60 signatures, mais avec 58 nous avons encore 50 % de probabilité de succès.
Vulnérabilité découverte par Bäumer et Marcus Brinkmann.
Pour utiliser cet exploit, vous devez avoir sagemath et les dépendances Python du fichier requirements.txt installés.
Extraire les signatures ECDSA de 60 commits GitHub vérifiés qui ont utilisé PuTTy ou TortoiseGit pour signer le contenu du commit.
Une autre attaque possible consiste à mettre en place un serveur SSH malveillant auquel les victimes se connectent (en utilisant PuTTY ou Pageant) et après plusieurs connexions, vous pouvez récupérer les 60 signatures pour retrouver la clé privée.
Le fichier de signatures doit contenir le hash du message, un espace et les valeurs de r et s concaténées.
Le fichier d'entrée pubkey peut être au format raw, PEM, DER ou OpenSSH.
Ce POC utilise une partie de l'implémentation de malb de l'article On Bounded Distance Decoding with Predicate: Breaking the "Lattice Barrier" for the Hidden Number Problem