web-dev-qa-db-fra.com

CVE-2018-10933 - Contourner l'authentification SSH - vulnérabilité libssh

On dirait que CVE-2018-10933 vient de sortir aujourd'hui et vous pouvez trouver un résumé ici de libssh ici

Sommaire:

les versions 0.6 et supérieures de libssh ont une vulnérabilité de contournement d'authentification dans le code du serveur. En présentant au serveur un message SSH2_MSG_USERAUTH_SUCCESS à la place du message SSH2_MSG_USERAUTH_REQUEST auquel le serveur s'attendrait à lancer l'authentification, l'attaquant pourrait réussir à s'authentifier sans aucune information d'identification.

J'essaie de mieux comprendre cela et sa portée d'impact. Les systèmes d'exploitation comme Debian, Ubuntu s'appuient-ils sur libssh pour SSH et s'ils le font, cela signifie que chaque serveur exposant SSH est vulnérable à cette attaque? En outre, OpenSSH s'appuie-t-il sur libssh ou s'agit-il de deux implémentations distinctes? J'ai essayé de chercher OpenSSH vs libssh mais je n'ai pas trouvé ce que je cherchais. Cette vulnérabilité semble être le pire des cas pour SSH, donc je suis juste surpris qu'elle n'ait pas fait les gros titres ou explosé. Le résumé de ce vuln est vague donc je cherche un aperçu de la gamme d'impact et dans quels scénarios je devrais être inquiet.

71
User0813484

... OpenSSH s'appuie-t-il sur libssh

OpenSSH (qui est le démon SSH standard sur la plupart des systèmes) ne repose pas sur libssh.

J'ai essayé de chercher openssh v.s. libssh ...

En fait, une recherche de openssh libssh me donne comme premier coup: OpenSSH/Development qui inclut pour libssh la déclaration suivante : " ... libssh est un projet indépendant ... "

De plus, si OpenSSH est affecté, vous pouvez être sûr que vous trouverez ces informations sur le site officiel d'OpenSSH, qui a explicitement une page sur Sécurité OpenSSH .

Les systèmes d'exploitation comme Debian, Ubunutu s'appuient-ils sur libssh pour SSH ...

Voir la documentation officielle de libssh sur qui l'utilise (au moins): KDE, GitHub ...

Vous pouvez également vérifier quels packages disponibles ou installés sur votre propre système d'exploitation dépendent de libssh. par exemple. pour Debian et similaire (par exemple Ubuntu), ce serait apt rdepends libssh-4 ou apt rdepends --installed libssh-4.

Notez que l'utilisation de libssh ne signifie pas nécessairement que le produit est automatiquement vulnérable. Tout d'abord, le problème semble être uniquement pertinent lors de l'utilisation de libssh pour le serveur SSH et non le client. Et même dans le rôle serveur, il n'est pas nécessairement affecté, par exemple Github ne semble pas être affecté même s'ils utilisent libssh dans le rôle serveur.

56
Steffen Ullrich

Les systèmes d'exploitation comme Debian, Ubuntu s'appuient-ils sur libssh pour SSH et s'ils le font, cela signifie-t-il que chaque serveur exposant SSH est vulnérable à cette attaque?

Les problèmes peuvent survenir avec les applications qui utilisent libssh. Comme indiqué sur le libssh site Web : "libssh est une bibliothèque C qui vous permet d'écrire un programme qui utilise le protocole SSH." Ainsi, ce sont les applications utilisateur qui utilisent la bibliothèque libssh qui pourraient être vulnérables, pas le système d'exploitation lui-même. Voici quelques applications qui utilisent libssh (à partir de la libssh site Web ):

  • KDE utilise libssh pour les transferts de fichiers sftp
  • GitHub a implémenté son serveur git ssh avec libssh
  • X2Go est une solution de bureau à distance pour Linux

En outre, OpenSSH s'appuie-t-il sur libssh ou s'agit-il de deux implémentations distinctes?

Non, non. Ils sont séparés.


Mise à jour 2018-10-18: Un article de blog écrit par le découvreur de vulnérabilité et comprenant une explication détaillée ainsi qu'un code de preuve de concept (via Paramiko) est maintenant disponible .

Le billet de blog lié à explique que la vulnérabilité résulte du fait que le code dans la table de répartition du traitement des paquets (dans libssh\src\packet.c) exécute des gestionnaires pour SSH2_MSG_USERAUTH_SUCCESS même pour les serveurs (même si un tel message est uniquement supposé être traitées par les clients). Un examen plus approfondi du code montre qu'un tel traitement erroné du message dans libssh\src\auth.c oblige le serveur à changer l'état de session pour s'authentifier!

Un code de preuve de concept détaillé est également disponible, montrant que python Paramiko peut être mis à jour pour envoyer le message SSH2_MSG_USERAUTH_SUCCESS à la place d'un message SSH2_MSG_USERAUTH_REQUEST et exploiter la vulnérabilité.

Cependant, le billet de blog indique également que:

"Tous les serveurs libSSH ne seront pas nécessairement vulnérables au contournement d'authentification; car le contournement d'authentification définit la machine à états libSSH interne comme authentifiée sans jamais donner la possibilité d'exécuter des rappels d'authentification enregistrés, les serveurs développés à l'aide de libSSH qui maintiennent un état de session personnalisé supplémentaire peuvent échouer" pour fonctionner correctement si un utilisateur est authentifié sans que cet état soit créé. "

11
hft

Pour afficher les dépendances d'une application via la ligne de commande, vous pouvez exécuter la commande suivante:

ldd/usr/sbin/ssh

Cela montrera toute dépendance de ladite application. Lorsque cette commande est exécutée, elle n'affiche pas libssh, ce qui signifie que libssh ne fait pas partie d'OpenSSH.

3
Jason Mesker