Pendant dix ans, taper 300 fois la lettre A suffisait pour pirater des serveurs Linux
Un chercheur a découvert qu’il suffisait de saisir un mot de passe de plus de 256 caractères pour ouvrir, via OpenSSH, des comptes pourtant verrouillés. Cette faille, présente sur des systèmes Linux qui utilisent la bibliothèque musl, vient d’être corrigée.
À notre connaissance, personne ne l’a remarquée pendant plus de dix ans.
Depuis 2016, sur certains serveurs Linux, un compte verrouillé pouvait être ouvert avec n’importe quel mot de passe, à condition qu’il compte entre 257 et 1 024 caractères.
Révélée début novembre par Ozgun Kultekin, chercheur chez Wakefield, la faille porte le doux nom de « *sshole ». Un jeu de mots qui mêle SSH à « hole » (le trou) pour former une grossièreté que nous ne traduirons pas. L’astérisque, qui masque la première lettre, se trouve en plus au cœur même de la faille.
Au-delà de l’humour de Kültekin, la faille fait beaucoup réagir sur Hacker News, parce qu’elle touche OpenSSH, l’outil que des administrateurs et des développeurs du monde entier utilisent pour se connecter à distance à leurs serveurs.
Pour la trouver, le chercheur explique avoir compilé OpenSSH de douze manières différentes, puis soumis chaque version à environ 17 600 tentatives de connexion inhabituelles, générées par des agents d’IA. Une seule configuration réagissait différemment des autres.

Et votre vie numérique devient sereine
Bitdefender Premium Security est une solution de cybersécurité européenne qui vous protège automatiquement contre les pirates et toutes les menaces du web. Profitez de vos activités en ligne en toute tranquillité

Un astérisque qui servait à la fois de verrou et de message d’erreur
Reprenons le problème à son origine. Quand on se connecte avec un mot de passe, le serveur ne le compare pas tel quel. Il le fait passer dans une fonction mathématique qui le transforme en une longue suite de caractères, puis compare ce résultat à celui qu’il a enregistré.
Pour les comptes qui ne doivent jamais accepter de mot de passe, comme le compte administrateur root sur de nombreux systèmes, la convention Unix consiste depuis 1980 à enregistrer un simple astérisque (*), qu’aucun calcul ne peut produire.
Mais en 2012, une décision venue de musl, une bibliothèque logicielle de base utilisée notamment par la distribution Alpine Linux, a compliqué les choses. Depuis cette date, quand sa fonction de calcul échoue, elle renvoie elle aussi un astérisque, et elle échoue justement dès qu’un mot de passe dépasse 256 caractères.

Cela ne posait pas de difficulté, me direz-vous, tant qu’un compte verrouillé ne pouvait correspondre à aucun mot de passe, quel qu’il soit.
C’était sans compter sur l’année 2016, quand OpenSSH a corrigé un autre défaut. Quand on tentait de se connecter à un compte inexistant, le serveur répondait « non » immédiatement, alors qu’un vrai compte demandait quelques millisecondes de calcul, ce qui permettait à un attaquant de repérer les comptes existants en chronométrant les réponses.
Pour effacer cette différence, OpenSSH s’est alors mis à faire le calcul même quand il n’a rien à comparer, y compris pour les comptes verrouillés, en empruntant les paramètres d’un autre compte doté d’un vrai mot de passe. Personne n’avait alors mesuré ce que cela produirait au contact de musl.
Un mot de passe de 257 à 1 024 caractères (OpenSSH refuse les mots de passe plus longs depuis 2016) tapé sur un compte verrouillé passait dans ce calcul, qui échouait et renvoyait un astérisque. Le serveur comparait ensuite ce résultat à celui enregistré pour le compte, qui était lui aussi un astérisque. Les deux étant identiques, la connexion était acceptée.
Les systèmes Alpine en première ligne
Plusieurs conditions doivent être réunies pour que la faille représente un réel danger.
Le serveur doit reposer sur musl. C’est le cas d’Alpine, très utilisée dans les conteneurs Docker, mais aussi d’OpenWrt, de Buildroot ou de Yocto, que l’on retrouve dans de nombreux appareils embarqués. Il ne doit pas passer par PAM, le système de modules d’authentification de Linux, qu’Alpine n’active pas par défaut. La connexion par mot de passe doit aussi être autorisée, ce qu’OpenSSH fait d’origine. Il faut enfin un compte verrouillé par un astérisque et un autre doté d’un vrai mot de passe.
Depuis Alpine 3.16, sortie en 2022, c’est justement ainsi que root est verrouillé. Sur les images Alpine officielles d’AWS et d’Azure, le compte par défaut peut en plus devenir administrateur sans mot de passe.
Debian, Ubuntu, Fedora et les systèmes qui passent par PAM ne sont pas concernés, et le chercheur explique ne pas avoir connaissance d’une exploitation active.
Les administrateurs concernés doivent installer OpenSSH 10.6p2, publiée ce jeudi 5 novembre pour corriger le problème, ou, à défaut, désactiver la connexion par mot de passe.
Toute l'actu tech en un clin d'œil
Ajoutez Numerama à votre écran d'accueil et restez connectés au futur !
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.