OpenSSH - CVE-2026-123158
Date de publication :
Il s’agit d’une vulnérabilité dans la vérification des mots de passe du démon sshd d’OpenSSH sur les systèmes Linux qui utilisent musl libc sans PAM, dont Alpine Linux.
OpenSSH est une implémentation libre du protocole SSH 2.0, qui comprend un serveur (sshd), des clients et la prise en charge du transfert de fichiers SFTP.
Pour un compte sans mot de passe dont le champ shadow est un astérisque, sshd emprunte le sel d’un autre compte puis appelle crypt(). Au-delà de 256 octets, la fonction crypt() de musl échoue avec un sel sha256crypt ou sha512crypt et renvoie un astérisque, identique au champ stocké. Un mot de passe de 257 à 1024 octets est alors accepté après un premier mot de passe erroné, au cours d’une seule connexion. La condition est d’avoir PasswordAuthentication actif (valeur par défaut) et au moins un autre compte avec un hachage $5$ ou $6$.
Elle permet à un attaquant distant et non authentifié de contourner l’authentification par mot de passe d’un compte sans mot de passe, puis d’obtenir les droits root dans certaines configurations, comme doas sans mot de passe ou PermitRootLogin yes.
Informations
La faille est activement exploitée : Non
Un correctif existe : Oui
Une mesure de contournement existe : Oui
Contournement de la politique de sécurité
Exploitation
CWE-394 : Unexpected Status Code or Return Value
Détails sur l'exploitation
• Vecteur d'attaque : Réseau
• Complexité de l'attaque : Élevée
• Privilèges nécessaires pour réaliser l'attaque : Aucun
• Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
• L'exploitation de la faille permet d'obtenir des droits privilégiés : Oui
Preuve de concept
Une preuve de concept est disponible en sources ouvertes.
Systèmes ou composants affectés
OpenSSH versions antérieures à 10.6p2, uniquement sur Linux avec musl libc et sans PAM (OpenSSH 10.6p1 et 10.3 inclus).
- Alpine Linux edge : openssh-server versions antérieures à 10.6_p2-r0.
- Alpine Linux 3.24 : openssh-server versions antérieures à 10.3_p1-r2.
- Alpine Linux 3.23 : openssh-server versions antérieures à 10.2_p1-r1.
- Alpine Linux 3.22 : openssh-server versions antérieures à 10.0_p1-r11.
- Alpine Linux 3.21 (fin de support depuis le 2026-11-01) : openssh-server versions antérieures à 9.9_p2-r1.
- Alpine Linux 3.20 (fin de support) : openssh-server versions antérieures à 9.7_p1-r6.
- Alpine Linux 3.19 (fin de support) : openssh-server versions antérieures à 9.6_p1-r3.
- Alpine Linux 3.18 (fin de support) : openssh-server versions antérieures à 9.3_p2-r4.
- Alpine Linux 3.17 (fin de support) : openssh-server versions antérieures à 9.1_p1-r7.
- Alpine Linux 3.16 (fin de support) : openssh-server versions antérieures à 9.0_p1-r6.
- Alpine Linux, paquet openssh-server-pam avec UsePAM no : mêmes versions que ci-dessus.
- Images cloud Alpine tiny-cloud versions 3.18.11 jusqu’à 3.24.3 (utilisateur alpine avec doas sans mot de passe), exposées dès qu’un hachage $6$ existe sur la machine.
- OpenWrt, Buildroot et Yocto : OpenSSH sshd versions antérieures à 10.6p2 uniquement si le serveur OpenSSH est installé sans PAM (Dropbear non concerné).
Contournement provisoire
• Utiliser le paquet openssh-server-pam avec UsePAM yes.
• Désactiver SSH sur les systèmes concernés si aucune des mesures précédentes n’est applicable.
Solutions ou recommandations
• Alpine Linux edge : openssh-server versions 10.6_p2-r0 et supérieures.
• Alpine Linux 3.24 : openssh-server versions 10.3_p1-r2 et supérieures (images 3.24.4 et supérieures).
• Alpine Linux 3.23 : openssh-server versions 10.2_p1-r1 et supérieures (images 3.23.8 et supérieures).
• Alpine Linux 3.22 : openssh-server versions 10.0_p1-r11 et supérieures (images 3.22.8 et supérieures).
• Alpine Linux 3.21 : openssh-server versions 9.9_p2-r1 et supérieures (images 3.21.10 et supérieures).
• Alpine Linux 3.20 : openssh-server versions 9.7_p1-r6 et supérieures.
• Alpine Linux 3.19 : openssh-server versions 9.6_p1-r3 et supérieures.
• Alpine Linux 3.18 : openssh-server versions 9.3_p2-r4 et supérieures.
• Alpine Linux 3.17 : openssh-server versions 9.1_p1-r7 et supérieures.
• Alpine Linux 3.16 : openssh-server versions 9.0_p1-r6 et supérieures.
• Sur Alpine, appliquer la mise à jour avec apk upgrade -U -a, puis redémarrer sshd avec rc-service sshd restart, car la mise à jour du paquet ne remplace pas le démon en cours d’exécution.