Le chercheur en sécurité Ozgun Kultekin a révélé une nouvelle vulnérabilité dans le protocole OpenSSH, baptisée "*sshole", qui permet aux attaquants de se connecter à des comptes Linux spécifiquement configurés pour empêcher la connexion par mot de passe. Cette faille apparaît particulièrement sur les systèmes reposant sur la bibliothèque musl C, mettant ainsi en danger des distributions populaires telles qu'Alpine Linux et OpenWrt.
Mécanisme technique de la vulnérabilité
La protection traditionnelle sous Linux repose sur le remplacement du hash du mot de passe par un astérisque (*) dans le fichier /etc/shadow pour empêcher la connexion par mot de passe. Afin d'éviter les vulnérabilités d'énumération d'utilisateurs (Username Enumeration) apparues en 2016, les développeurs d'OpenSSH ont modifié le système pour effectuer l'opération de hachage même pour les comptes ne possédant pas de hash valide, afin de garantir une réponse uniforme du serveur, quel que soit l'état du compte.
Le problème réside dans le fait que la bibliothèque musl C, et plus précisément la fonction crypt(), renvoie un astérisque (*) comme valeur en cas d'échec de l'opération de hachage, ce qui se produit précisément lorsque la longueur du mot de passe saisi dépasse la limite de 256 octets. Cela conduit à une correspondance entre la valeur résultant de la tentative erronée et la valeur stockée dans le fichier /etc/shadow pour le compte désactivé, ce qui trompe OpenSSH et lui fait autoriser la connexion.
Pourquoi cette nouvelle est-elle importante ?
Le danger réel réside dans le fait que cette vulnérabilité pourrait mener à un accès complet avec les privilèges root dans les environnements de cloud computing. Le chercheur a averti que les images officielles d'Alpine Linux utilisées sur les plateformes AWS et Azure contiennent un compte par défaut nommé "alpine" possédant des privilèges doas sans nécessiter de mot de passe, ce qui pourrait permettre à un attaquant d'exploiter la faille pour prendre le contrôle total du serveur.
Conditions d'exploitation et systèmes affectés
Cette vulnérabilité ne touche pas tous les systèmes ; les systèmes reposant sur la bibliothèque glibc (tels que Debian, Ubuntu et Fedora) ou ceux utilisant l'authentification PAM restent sécurisés. Pour que l'exploitation réussisse, les conditions suivantes doivent être réunies :
- Exécution d'OpenSSH sur un système reposant sur la bibliothèque musl (comme Alpine Linux, OpenWrt, Buildroot ou Yocto).
- Désactivation de l'authentification PAM (ce qui est le paramètre par défaut dans le paquet openssh-server sous Alpine Linux).
- Activation de la fonctionnalité d'authentification par mot de passe (Password Authentication) dans les paramètres SSH.
- Existence d'au moins un compte dont le mot de passe a été désactivé à l'aide d'un astérisque (*).
Comment se protéger et vérifier
Les développeurs d'OpenSSH ont publié la version 10.6p2 qui corrige définitivement cette vulnérabilité. Il est conseillé aux administrateurs système de mettre à jour les paquets OpenSSH immédiatement. En cas d'impossibilité de mise à jour immédiate, les risques peuvent être réduits en désactivant l'authentification par mot de passe dans le fichier de configuration en réglant PasswordAuthentication no et en redémarrant le service.
Pour vérifier la probabilité d'une compromission du système, il est possible d'examiner les journaux d'authentification à la recherche de connexions réussies sur des comptes censés être désactivés, en utilisant la commande suivante sous Alpine Linux :
grep "Accepted password" /var/log/messages