CVE-2024-45337
Missbrauch von connection.serverAuthenticate kann einen Autorisierungs-Bypass in golang.org/x/crypto verursachen
- Veröffentlicht
- 11.12.2024
- Aktualisiert
- 18.02.2025
- CNA zuweisen
- Go
- Beweise beobachtet
- 08.08.2026
Primäres CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NNiedrig · nächste 30 Tage
- Perzentil
- 87,5 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
Anwendungen und Bibliotheken, die `connection.serverAuthenticate` (über das Callback-Feld `ServerConfig.PublicKeyCallback`) missbrauchen, können anfällig für eine Umgehung der Autorisierung sein. Die Dokumentation für `ServerConfig.PublicKeyCallback` besagt, dass „ein Aufruf dieser Funktion nicht garantiert, dass der angebotene Schlüssel tatsächlich zur Authentifizierung verwendet wird". Insbesondere erlaubt das SSH-Protokoll Clients, anzufragen, ob ein öffentlicher Schlüssel akzeptabel ist, bevor sie die Kontrolle über den entsprechenden privaten Schlüssel nachweisen. `PublicKeyCallback` kann mit mehreren Schlüsseln aufgerufen werden, und die Reihenfolge, in der die Schlüssel bereitgestellt wurden, kann nicht verwendet werden, um abzuleiten, mit welchem Schlüssel sich der Client erfolgreich authentifiziert hat, falls überhaupt. Einige Anwendungen, die die an `PublicKeyCallback` übergebenen Schlüssel (oder daraus abgeleitete Informationen) speichern und darauf basierend sicherheitsrelevante Entscheidungen treffen, sobald die Verbindung hergestellt ist, können falsche Annahmen treffen. Beispielsweise kann ein Angreifer die öffentlichen Schlüssel A und B senden und sich dann mit A authentifizieren. `PublicKeyCallback` würde nur zweimal aufgerufen, zuerst mit A und dann mit B. Eine anfällige Anwendung könnte dann Autorisierungsentscheidungen auf der Grundlage von Schlüssel B treffen, für den der Angreifer tatsächlich nicht den privaten Schlüssel kontrolliert. Da diese API weit verbreitet missbraucht wird, erzwingt golang.org/x/[email protected] als teilweise Abschwächung die Eigenschaft, dass bei erfolgreicher Authentifizierung über einen öffentlichen Schlüssel der letzte an `ServerConfig.PublicKeyCallback` übergebene Schlüssel der Schlüssel ist, der zur Authentifizierung der Verbindung verwendet wird. `PublicKeyCallback` wird nun bei Bedarf mehrfach mit demselben Schlüssel aufgerufen. Beachten Sie, dass der Client den letzten an `PublicKeyCallback` übergebenen Schlüssel möglicherweise weiterhin nicht kontrolliert, wenn die Verbindung anschließend mit einer anderen Methode authentifiziert wird, z. B. `PasswordCallback`, `KeyboardInteractiveCallback` oder `NoClientAuth`. Benutzer sollten das Feld `Extensions` des Rückgabewerts `Permissions` der verschiedenen Authentifizierungs-Callbacks verwenden, um Daten zu erfassen, die mit dem Authentifizierungsversuch verbunden sind, anstatt auf externen Zustand zu verweisen. Sobald die Verbindung hergestellt ist, kann der Zustand, der dem erfolgreichen Authentifizierungsversuch entspricht, über das Feld `ServerConn.Permissions` abgerufen werden. Beachten Sie, dass einige Drittanbieter-Bibliotheken den Typ `Permissions` missbrauchen, indem sie ihn über Authentifizierungsversuche hinweg teilen; Benutzer von Drittanbieter-Bibliotheken sollten sich für Anleitungen an die jeweiligen Projekte wenden.
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.