In PuTTY, einem Client für das auf der Plattform beliebte SSH-Protokoll WindowsEs wurde eine gefährliche Sicherheitslücke (CVE-2024-31497) entdeckt, die es ermöglicht, den privaten Schlüssel eines Benutzers wiederherzustellen, der mit dem NIST P-521-ECDSA-Algorithmus (ecdsa-sha2-nistp521) auf Basis elliptischer Kurven generiert wurde. Um den privaten Schlüssel zu knacken, genügt die Analyse von etwa 60 digitalen Signaturen, die mit dem betroffenen Schlüssel erzeugt wurden.
Die Sicherheitslücke tritt ab PuTTY Version 0.68 auf und betrifft auch Produkte, die anfällige Versionen von PuTTY enthalten, wie etwa 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 der Installation des Updates wird Benutzern empfohlen, neue Schlüssel zu generieren und alte öffentliche Schlüssel aus den authorized_keys-Dateien zu entfernen.
Die Schwachstelle ist auf die Nachlässigkeit der Entwickler zurückzuführen, die einen Initialisierungsvektor (Nonce) auf Basis einer 521-Bit-Zufallsfolge verwendeten, um einen 512-Bit-Schlüssel zu generieren. Wahrscheinlich dachten sie, dass 512 Bit Entropie ausreichen würden und die restlichen 9 Bit nicht von grundlegender Bedeutung seien. Dies führte dazu, dass in allen in PuTTY mit dem Algorithmus ecdsa-sha2-nistp521 generierten privaten Schlüsseln die ersten 9 Bits des Initialisierungsvektors immer auf Null gesetzt wurden.
Bei ECDSA und DSA sind die Qualität des Pseudozufallszahlengenerators und die vollständige Abdeckung des zur Berechnung des Moduls verwendeten Parameters mit Zufallsdaten von grundlegender Bedeutung, da bereits die Ermittlung weniger Informationen über den Initialisierungsvektor ausreicht, um einen Angriff zur sequentiellen Wiederherstellung des gesamten privaten Schlüssels durchzuführen. Um den Schlüssel erfolgreich wiederherzustellen, reicht es aus, über einen öffentlichen Schlüssel zu verfügen und mehrere Dutzend digitale Signaturen zu analysieren, die mit dem problematischen Schlüssel für dem Angreifer bekannte Daten generiert wurden. Der Angriff läuft darauf hinaus, das HNP (Hidden Number Problem) zu lösen.
Die erforderlichen digitalen Signaturen können beispielsweise abgerufen werden, wenn ein Benutzer eine Verbindung zum SSH-Server eines Angreifers oder zu einem Git-Server herstellt und dabei SSH als Transportmittel verwendet. Die für einen Angriff erforderlichen Signaturen können auch gefunden werden, wenn der Schlüssel zur Authentifizierung beliebiger Daten verwendet wurde, beispielsweise Git-Commits bei der Verwendung des Pageant-SSH-Agenten zum Umleiten des Datenverkehrs auf den Host eines Entwicklers. Das Abrufen der zur Wiederherstellung des Schlüssels erforderlichen Daten während eines MITM-Angriffs ist unmöglich, da Signaturen in SSH nicht im Klartext übertragen werden.
Es wird darauf hingewiesen, dass eine ähnliche Verwendung unvollständiger Initialisierungsvektoren in PuTTY für andere Arten von elliptischen Kurven verwendet wurde, aber für andere Algorithmen als ECDSA P-521 reichen die daraus resultierenden Informationslecks nicht aus, um einen funktionierenden Schlüsselwiederherstellungsangriff zu implementieren. ECDSA-Schlüssel anderer Größen und Ed25519-Schlüssel sind nicht anfällig für Angriffe.
Source: opennet.ru
