Une vulnérabilité a été identifiée dans le serveur telnetd de la collection GNU InetUtils, permettant de se connecter en tant qu'utilisateur quelconque, y compris l'utilisateur root, sans vérification de mot de passe. Aucun identifiant CVE n'a encore été attribué. La vulnérabilité apparaît à partir de la version InetUtils 1.9.3 (2015) et demeure non corrigée dans la version actuelle 2.7.0. Un correctif est disponible sous forme de patchs (1, 2).
Le problème est causé par le fait que pour vérifier le mot de passe, le processus telnetd appelle l'outil «/usr/bin/login», en passant le nom d'utilisateur spécifié par le client lors de la connexion à serveur. L'outil «login» prend en charge l'option «-f», permettant de se connecter sans effectuer d'authentification (cela implique que cette option est utilisée lorsque l'utilisateur a déjà été authentifié). Par conséquent, si l'on parvient à remplacer l'option «-f» par le nom d'utilisateur, il est possible de se connecter sans vérification de mot de passe.
Lors d'une connexion normale, il n'est pas possible d'utiliser un nom d'utilisateur de type «-f root», mais telnet dispose d'un mode de connexion automatique activé par l'option «-a». Dans ce mode, le nom d'utilisateur n'est pas pris à partir de la ligne de commande, mais est transmis via la variable d'environnement USER. Lors de l'appel de l'outil login, la valeur de cette variable d'environnement était remplacée sans vérification supplémentaire et sans échappement des caractères spéciaux. Ainsi, pour se connecter en tant qu'utilisateur root, il suffit de définir la variable d'environnement USER à «-f root» et de se connecter au serveur telnet en spécifiant l'option «-a»: $ USER='-f root' telnet -a nom_du_serveur
Le changement ayant conduit à la vulnérabilité a été ajouté au code de telnetd en mars 2015 et était lié à la solution d'un problème empêchant de déterminer le nom d'utilisateur en mode autologin sans authentification dans Kerberos. Pour résoudre cela, la prise en charge du passage du nom d'utilisateur pour le mode autologin a été ajoutée via une variable d'environnement, mais la vérification de la validité du nom d'utilisateur à partir de la variable d'environnement a été oubliée.
Source : opennet.ru
