Une vulnérabilité OpenSSH récemment divulguée, surnommée *sshole, permet aux attaquants de se connecter à certains comptes Alpine Linux et à d'autres comptes Linux basés sur musl censés bloquer l'authentification par mot de passe, simplement en soumettant un mot de passe surdimensionné de 256 caractères ou plus. Le chercheur en sécurité Ozgun Kultekin, qui a découvert la faille et publié les détails jeudi, affirme qu'elle existe depuis 2016.
Le bug ne touche que les serveurs OpenSSH exécutés sur des distributions Linux utilisant la bibliothèque C musl au lieu de glibc, notamment Alpine Linux, OpenWrt, Buildroot et Yocto, et uniquement dans certaines configurations d'authentification. Debian, Ubuntu et Fedora ne sont pas vulnérables. OpenSSH a publié un correctif dans la version 10.6p2, et Alpine a également diffusé une mise à jour.
Comment fonctionne la faille *sshole d'OpenSSH
Les comptes Linux peuvent être bloqués pour la connexion par mot de passe en remplaçant leur hachage par un astérisque (*) dans le fichier /etc/shadow. Comme l'astérisque n'est pas un hachage valide, aucun mot de passe ne devrait déverrouiller ces comptes. Le problème remonte à un correctif OpenSSH de 2016 pour CVE-2016-6210, qui faisait hacher les mots de passe par le serveur même pour les comptes sans hachage exploitable, afin que les attaquants ne puissent pas identifier les noms d'utilisateur valides à partir des temps de réponse.
Sur les systèmes musl, la fonction crypt() renvoie elle aussi un astérisque * lorsque le hachage échoue, notamment quand le mot de passe soumis dépasse sa limite de 256 octets. Un attaquant peut donc envoyer un mot de passe surdimensionné et faire comparer par OpenSSH l'astérisque renvoyé à l'astérisque stocké — une correspondance qui aboutit à une connexion réussie. Kultekin précise que l'exploitation exige toutes ces conditions :
La faille ne contourne pas les vrais mots de passe des comptes dotés de hachages valides. Des chercheurs de Check Point ont expliqué à Ars Technica que le hachage SHA256 ou SHA512 importe parce que sshd emprunte le sel de ce compte, et que le compte doit être actif, et non simplement contenir un hachage. Les comptes root sont protégés par le réglage par défaut PermitRootLogin prohibit-password, mais les comptes accessibles disposant de droits doas ou sudo peuvent tout de même atteindre root.



