
Proof of Concept, das PuTTy CVE-2024-31497 ausnutzt.
Diese Sicherheitslücke nutzt die voreingenommene Erzeugung der ECDSA-Nonce in der Datei ecc-ssh.c aus. Die Nonce wird mit $sha512(ID\ ||\ sha512(privKey)\ ||\ sha1(data))\ mod\ q$ erzeugt, wobei die oberen 9 Bits auf Null gesetzt werden. Um den privaten Schlüssel wiederherzustellen, benötigen wir 60 Signaturen, aber mit 58 haben wir immer noch eine 50%ige Erfolgswahrscheinlichkeit.
Sicherheitslücke entdeckt von Bäumer und Marcus Brinkmann.
Um diesen Exploit zu nutzen, müssen Sie sagemath und die Python-Abhängigkeiten in requirements.txt installiert haben.
Extrahieren Sie die ECDSA-Signaturen von 60 verifizierten GitHub-Commits, die PuTTY oder TortoiseGit verwendet haben, um den Commit-Inhalt zu signieren.
Ein weiterer möglicher Angriff besteht darin, einen betrügerischen SSH-Server einzurichten, mit dem sich Opfer (mit PuTTY oder Pageant) verbinden, und nach mehreren Verbindungen können Sie die 60 Signaturen abrufen, um den privaten Schlüssel wiederherzustellen.
Die Signaturdatei muss den Message Hash, ein Leerzeichen und die Werte von r und s konkateniert enthalten.
Die Eingabe der pubkey-Datei kann im Roh-, PEM-, DER- oder OpenSSH-Format erfolgen.
Dieser PoC verwendet Teile der Implementierung von malb des Papiers On Bounded Distance Decoding with Predicate: Breaking the "Lattice Barrier" for the Hidden Number Problem