
CVE-2018-10933 - libssh Authentifizierungsumgehung
Proof-of-Concept-Implementierung für CVE-2018-10933, eine kritische Authentifizierungsumgehungsschwachstelle, die die serverseitige Implementierung von libssh betrifft.
Haftungsausschluss
Dieses Repository dient ausschließlich zu Bildungszwecken, zur Schwachstellenforschung und für autorisierte Sicherheitstests. Testen Sie niemals Systeme ohne ausdrückliche Genehmigung.
CVE-2018-10933 ist eine kritische Authentifizierungsumgehungsschwachstelle, die in der serverseitigen Zustandsmaschine von libssh entdeckt wurde.
Anders als traditionelle Authentifizierungsmängel, die schwache Passwörter oder kryptografische Schwächen betreffen, existiert diese Schwachstelle, weil der Server fälschlicherweise einer Protokollnachricht vertraut, die nur vom Server an den Client gesendet werden sollte.
Ein Angreifer kann daher einen anfälligen libssh-Server davon überzeugen, dass die Authentifizierung bereits erfolgreich abgeschlossen wurde, ohne jegliche Anmeldeinformationen zu liefern.
Dies ermöglicht es einem nicht authentifizierten Angreifer, eine authentifizierte SSH-Sitzung gegen anfällige Anwendungen aufzubauen, die libssh im Server-Modus verwenden.
| Feld | Wert |
|---|
| CVE | CVE-2018-10933 |
| Schweregrad | Kritisch |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (Unsachgemäße Authentifizierung) |
| Angriffsvektor | Netzwerk |
| Benutzerinteraktion | Keine |
| Erforderliche Berechtigungen | Keine |
Die Schwachstelle betrifft libssh im Server-Modus.
Betroffene Versionen umfassen:
Anwendungen, die libssh ausschließlich als SSH-Client verwenden, sind nicht anfällig.
Die Schwachstelle hat ihren Ursprung in der Authentifizierungs-Zustandsmaschine, die im Server-Code von libssh implementiert ist.
Während eines normalen SSH-Authentifizierungsablaufs:
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
Das Protokoll spezifiziert, dass SSH_MSG_USERAUTH_SUCCESS nur vom Server nach erfolgreicher Authentifizierung generiert wird.
Allerdings versäumen es anfällige Versionen von libssh, die Herkunft dieser Nachricht ordnungsgemäß zu validieren.
Anstatt eine vom Client gelieferte SSH_MSG_USERAUTH_SUCCESS abzuweisen, wechselt der Server fälschlicherweise direkt in den internen Authentifizierungszustand:
Authenticated = TRUE
ohne jemals Anmeldeinformationen zu überprüfen.
Dies ist ein klassisches Beispiel für Unsachgemäße Authentifizierung (CWE-287).
Client
|
| USERAUTH_REQUEST
|
V
Server
Validate Username
Validate Password
Validate Keys
|
V
USERAUTH_SUCCESS
Authenticated
Attacker
|
| USERAUTH_SUCCESS
|
V
Vulnerable Server
(No validation)
Authenticated
Eine erfolgreiche Ausnutzung ermöglicht es einem nicht authentifizierten Angreifer:
Die tatsächlichen Auswirkungen hängen davon ab, wie die anfällige Anwendung libssh nach der Authentifizierung verwendet.
Die Schwachstelle existiert, weil die Authentifizierungs-Zustandsmaschine fälschlicherweise das Paket akzeptiert:
SSH2_MSG_USERAUTH_SUCCESS
vom Client.
Anstatt zu überprüfen, ob das Paket vom Server stammt, aktualisiert libssh seinen internen Sitzungszustand, als ob die Authentifizierung erfolgreich abgeschlossen wäre.
Da spätere Autorisierungsprüfungen auf diesem internen Zustand basieren, können Angreifer sofort authentifizierte Kanäle öffnen.
Diese Schwachstelle nutzt nicht aus:
Stattdessen nutzt sie einen Logikfehler in der Protokollzustandsverarbeitung.
Der Angreifer benötigt:
Keine:
sind erforderlich.
Mögliche Indikatoren umfassen:
Netzwerk-IDS-Signaturen können auch anomale SSH2_MSG_USERAUTH_SUCCESS-Pakete identifizieren, die von Clients gesendet werden.
Aktualisieren Sie libssh auf eine der gepatchten Versionen:
Falls ein Upgrade nicht sofort möglich ist:
Es gibt keine zuverlässige Problemumgehung außer der Aktualisierung der betroffenen Software.
Dieses Repository demonstriert, wie Authentifizierungs-Zustandsmaschinenschwachstellen aus Protokollimplementierungsfehlern entstehen können.
Es soll unterstützen:
Das enthaltene Proof-of-Concept veranschaulicht die Schwachstelle in kontrollierten Umgebungen, um das Verständnis sicherer Protokollimplementierung zu verbessern.