In PuTTY, einem beliebten SSH-Client für die Windows-Plattform, wurde eine gefährliche Sicherheitsanfälligkeit (CVE-2024-31497) entdeckt, die es ermöglicht, den privaten Schlüssel eines Benutzers zu rekonstruieren, der mit dem ECDSA-Algorithmus unter Verwendung der elliptischen Kurve NIST P-521 (ecdsa-sha2-nistp521) generiert wurde. Um den privaten Schlüssel zu entschlüsseln, genügt es, etwa 60 digitale Signaturen zu analysieren, die mit dem betroffenen Schlüssel erstellt wurden.
Die Sicherheitsanfälligkeit tritt ab der Version PuTTY 0.68 auf und betrifft auch Produkte, die betroffene Versionen von PuTTY enthalten, wie FileZilla (3.24.1 — 3.66.5), WinSCP (5.9.5 — 6.3.2), TortoiseGit (2.4.0.2 — 2.15.0) und TortoiseSVN (1.10.0 — 1.14.6). Das Problem wurde in den Updates PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 und TortoiseGit 2.15.0.1 behoben. Nach Installation des Updates wird den Benutzern empfohlen, neue Schlüssel zu generieren und die alten öffentlichen Schlüssel aus den Dateien authorized_keys zu entfernen.
Die Sicherheitsanfälligkeit wurde durch Nachlässigkeit der Entwickler verursacht, die bei der Generierung des 521-Bit-Schlüssels einen Initialisierungsvektor (Nonce) verwendeten, der auf einer 512-Bit-Zufallsfolge basierte, da sie wahrscheinlich annahmen, dass die Entropie von 512 Bit ausreicht und die verbleibenden 9 Bit unerheblich sind. Infolgedessen hatten in PuTTY erstellte private Schlüssel, die den Algorithmus ecdsa-sha2-nistp521 verwendeten, in allen Fällen die ersten 9 Bit des Initialisierungsvektors stets den Wert Null.
Für ECDSA und DSA ist die Qualität des Generators für Pseudozufallszahlen und die vollständige Abdeckung des Parameters mit Zufallsdaten, der zur Berechnung des Moduls verwendet wird, von entscheidender Bedeutung, da bereits das Auffinden einiger Bits mit Informationen über den Initialisierungsvektor ausreicht, um einen Angriff zur sequenziellen Rekonstruktion des gesamten privaten Schlüssels durchzuführen. Für eine erfolgreiche Wiederherstellung des Schlüssels sind das Vorhandensein des öffentlichen Schlüssels und die Analyse mehrerer Dutzend digitaler Signaturen, die mit dem betroffenen Schlüssel für bekannte Daten des Angreifers generiert wurden, ausreichend. Der Angriff reduziert sich auf die Lösung des HNP (Hidden Number Problem).
Notwendige digitale Signaturen können beispielsweise durch die Verbindung eines Benutzers mit dem SSH-Server des Angreifers oder mit einem Git-Server gewonnen werden, der SSH als Transport verwendet. Die für den Angriff erforderlichen Signaturen können auch ermittelt werden, wenn der Schlüssel zur Verifizierung beliebiger Daten verwendet wurde, beispielsweise bei Git-Commits, während der Einsatz des SSH-Agenten Pageant zur Umleitung des Datenverkehrs auf den Host des Entwicklers. Das Erhalten der für die Wiederherstellung des Schlüssels notwendigen Daten im Rahmen eines MITM-Angriffs ist ausgeschlossen, da Signaturen in SSH nicht im Klartext übertragen werden.
Es wird darauf hingewiesen, dass eine ähnliche Verwendung unvollständiger Initialisierungsvektoren in PuTTY und für andere Arten elliptischer Kurven angewendet wurde, aber bei Algorithmen, die sich von ECDSA P-521 unterscheiden, waren die Informationsleckagen nicht ausreichend, um einen funktionierenden Angriff zur Schlüsselwiederherstellung zu realisieren. ECDSA-Schlüssel anderer Größen und Ed25519-Schlüssel sind nicht anfällig für diese Angriffe.
Quelle: opennet.ru
