
CVE-2018-10933 - Contournement d'authentification libssh
Implémentation de Preuve de Concept pour CVE-2018-10933, une vulnérabilité critique de contournement d'authentification affectant l'implémentation côté serveur de libssh.
Avertissement
Ce dépôt est fourni uniquement à des fins éducatives, de recherche sur les vulnérabilités et de tests de sécurité autorisés. Ne testez jamais des systèmes sans autorisation explicite.
CVE-2018-10933 est une vulnérabilité critique de contournement d'authentification découverte dans la machine d'état côté serveur de libssh.
Contrairement aux défauts d'authentification traditionnels impliquant des mots de passe faibles ou des faiblesses cryptographiques, cette vulnérabilité existe parce que le serveur fait incorrectement confiance à un message de protocole qui ne devrait jamais être envoyé que du serveur au client.
Un attaquant peut donc convaincre un serveur libssh vulnérable que l'authentification a déjà été effectuée avec succès sans fournir aucune information d'identification.
Cela permet à un attaquant non authentifié d'établir une session SSH authentifiée contre des applications vulnérables utilisant libssh en mode serveur.
| Champ | Valeur |
|---|
| CVE | CVE-2018-10933 |
| Sévérité | Critique |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (Authentification incorrecte) |
| Vecteur d'attaque | Réseau |
| Interaction utilisateur | Aucune |
| Privilèges requis | Aucun |
La vulnérabilité affecte libssh fonctionnant en mode serveur.
Les versions concernées incluent :
Les applications utilisant libssh uniquement comme client SSH ne sont pas vulnérables.
La vulnérabilité provient de la machine d'état d'authentification implémentée dans le code serveur de libssh.
Lors d'un flux d'authentification SSH normal :
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
Le protocole spécifie que SSH_MSG_USERAUTH_SUCCESS est généré uniquement par le serveur après une authentification réussie.
Cependant, les versions vulnérables de libssh ne parviennent pas à valider correctement l'origine de ce message.
Au lieu de rejeter un SSH_MSG_USERAUTH_SUCCESS fourni par le client, le serveur fait incorrectement transitionner son état d'authentification interne directement vers :
Authenticated = TRUE
sans jamais vérifier les informations d'identification.
C'est un exemple classique d'Authentification incorrecte (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
L'exploitation réussie permet à un attaquant non authentifié de :
L'impact réel dépend de la manière dont l'application vulnérable utilise libssh après l'authentification.
La vulnérabilité existe parce que la machine d'état d'authentification accepte incorrectement le paquet :
SSH2_MSG_USERAUTH_SUCCESS
provenant du client.
Au lieu de vérifier que le paquet provient du serveur, libssh met à jour son état de session interne comme si l'authentification avait été effectuée avec succès.
Parce que les vérifications d'autorisation ultérieures reposent sur cet état interne, les attaquants peuvent immédiatement ouvrir des canaux authentifiés.
Cette vulnérabilité n'exploite pas :
Au lieu de cela, elle exploite un défaut de logique dans la gestion des états du protocole.
L'attaquant a besoin de :
Aucun :
n'est requis.
Les indicateurs potentiels incluent :
Les signatures IDS réseau peuvent également identifier des paquets SSH2_MSG_USERAUTH_SUCCESS anormaux envoyés par les clients.
Mettez à jour libssh vers l'une des versions corrigées :
Si la mise à jour n'est pas immédiatement possible :
Aucune solution de contournement fiable n'existe autre que la mise à jour du logiciel concerné.
Ce dépôt démontre comment les vulnérabilités de machine d'état d'authentification peuvent provenir d'erreurs d'implémentation de protocole.
Il est destiné à aider :
La Preuve de Concept incluse illustre la vulnérabilité dans des environnements contrôlés pour améliorer la compréhension de l'implémentation sécurisée de protocole.