11年間見逃されていた重大な脆弱性:GNU InetUtils telnetdの認証バイパス問題
セキュリティの世界では、長年にわたって存在しながら発見されなかった脆弱性が突如として明らかになることがあります。今回発見されたGNU InetUtils telnetdの脆弱性CVE-2026-24061は、まさにそのような事例です。この脆弱性は約11年間にわたって存在し続け、悪用されればリモートから認証なしでroot権限を取得できるという極めて深刻なものです。本記事では、この脆弱性の技術的詳細、影響範囲、そして対策について詳しく解説します。
この記事のポイント
- CVSSスコア9.8/10.0の最高レベルの重大脆弱性
- GNU InetUtils 1.9.3から2.7までの全バージョンが影響を受ける
- 環境変数を操作するだけでroot権限でのログインが可能
- すでに21のIPアドレスから悪用の試みが観測されている
脆弱性の概要:11年間の潜伏期間
CVE-2026-24061は、2015年3月19日のコードコミットで導入され、同年5月12日にリリースされたGNU InetUtils 1.9.3から存在していました。発見者はセキュリティ研究者のKyu Neushwaistein(Carlos Cortes Alvarez)氏で、2026年1月19日に報告されました。
この脆弱性がこれほど長期間発見されなかった理由はいくつか考えられます。まず、telnetプロトコル自体がSSHに置き換えられ、多くの環境で使用されなくなったことがあります。セキュリティ研究者の注目も、より広く使用されているソフトウェアに向けられる傾向があります。また、脆弱性の性質上、特定の条件下でのみ発生するため、通常のテストでは見つけにくかったという側面もあります。
しかし、telnetdは依然として多くのレガシーシステムや組み込み機器で使用されています。特に、古い産業制御システムやネットワーク機器では、telnetが唯一のリモートアクセス手段である場合も少なくありません。
技術的な仕組み:なぜ認証をバイパスできるのか
この脆弱性の本質は、ユーザー入力の不適切な処理にあります。telnetdサーバーは接続時に、クライアントから送信されるUSER環境変数を受け取り、それを /usr/bin/login バイナリに渡します。ここで重要なのは、loginコマンドが通常root権限で実行されることです。
問題は、攻撃者がUSER環境変数に「-f root」という値を設定できることです。loginコマンドには -f オプションがあり、これは「認証をスキップして指定されたユーザーとしてログインする」という意味を持ちます。通常、このオプションはPAM(Pluggable Authentication Modules)や他の認証済みプログラムからのみ使用されることを想定しています。
攻撃の流れは以下のようになります。telnetクライアントが -a(または --login)パラメータとともにサーバーに接続し、USER環境変数を「-f root」に設定します。telnetdはこの値をそのままloginコマンドに渡します。loginコマンドは「-f root」を、「rootユーザーとして認証なしでログイン」というオプションとして解釈します。結果として、攻撃者はパスワードを入力することなく、root権限のシェルを取得できます。
実際の攻撃状況と脅威インテリジェンス
脅威インテリジェンス企業GreyNoiseのデータによると、この脆弱性の公開後24時間以内に、21のユニークなIPアドレスからの悪用試行が観測されました。攻撃元は香港、米国、日本、オランダ、中国、ドイツ、シンガポール、タイなど、世界各地に分散しています。これらのIPアドレスはすべて、過去に悪意のある活動と関連付けられています。
この急速な悪用の試みは、攻撃者コミュニティがいかに迅速に新しい脆弱性情報を取り込み、悪用し始めるかを示しています。脆弱性が公開されてから数時間で、自動化されたスキャンツールが更新され、インターネット全体で脆弱なシステムの探索が始まります。
特に懸念されるのは、この脆弱性の悪用が非常に簡単であることです。高度な技術や特殊なツールは必要なく、標準的なtelnetクライアントと環境変数の設定だけで攻撃が可能です。これは、スクリプトキディレベルの攻撃者でも悪用できることを意味します。
影響を受けるシステムの特定
GNU InetUtils 1.9.3から2.7までのバージョンを使用しているすべてのシステムが影響を受けます。多くのLinuxディストリビューションでは、inetutilsパッケージとして提供されています。影響を受けるかどうかを確認するには、まずシステムでtelnetdが実行されているかどうかを確認し、次にinetutilsのバージョンを確認する必要があります。
重要なのは、telnetdがデフォルトでは有効になっていないシステムが多いことです。しかし、管理者が明示的に有効にしている環境や、レガシーアプリケーションの要件でtelnetが必要な環境では、この脆弱性は深刻な脅威となります。
また、組み込みシステムや IoTデバイスでは、telnetがデフォルトで有効になっている場合があります。これらのデバイスはしばしばファームウェアの更新が困難であり、脆弱な状態が長期間続く可能性があります。
実践してみよう
システムがこの脆弱性の影響を受けるかどうかを確認し、適切な対策を講じるためのコマンドを紹介します。
# telnetdが実行中かどうかを確認
systemctl status telnet.socket 2>/dev/null || service telnetd status 2>/dev/null
# inetutilsのバージョンを確認(Debian/Ubuntu)
dpkg -l | grep inetutils
# inetutilsのバージョンを確認(RHEL/CentOS)
rpm -qa | grep inetutils
# telnetdサービスを無効化
sudo systemctl stop telnet.socket && sudo systemctl disable telnet.socket
# ファイアウォールでtelnetポートをブロック
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
sudo ip6tables -A INPUT -p tcp --dport 23 -j DROP
# xinetd経由でtelnetが有効になっていないか確認
grep -r telnet /etc/xinetd.d/ 2>/dev/null
これらのコマンドを実行することで、システムの状態を把握し、必要な対策を講じることができます。特にtelnetdを使用していない場合は、サービスを完全に無効化することを強く推奨します。
セキュリティTips
-
SSHへの移行: telnetは暗号化されていないプロトコルであり、認証情報が平文で送信されます。可能な限りSSHに移行し、telnetdを完全に廃止してください。移行が困難な場合でも、VPNやトンネリングを使用して通信を保護することを検討してください。
-
ネットワークセグメンテーション: telnetを使用せざるを得ないレガシーシステムがある場合、それらを専用のネットワークセグメントに隔離してください。ファイアウォールルールで、telnetアクセスを特定の管理端末からのみに制限することで、攻撃対象領域を最小化できます。
-
loginバイナリの修正: 緊急の回避策として、loginコマンドが
-fパラメータを受け付けないよう修正することができます。ただし、これはシステムの他の機能に影響を与える可能性があるため、十分なテストを行ってから本番環境に適用してください。 -
侵入検知システムの設定: IDS/IPSに、この脆弱性を悪用する試みを検知するルールを追加してください。具体的には、telnet接続時のUSER環境変数に「-f」が含まれるパケットをアラートまたはブロックする設定が効果的です。
まとめ
CVE-2026-24061は、レガシープロトコルに潜む脆弱性がいかに危険であるかを改めて示しました。11年間も発見されなかったこの脆弱性は、「古いからといって安全とは限らない」という教訓を私たちに与えています。
この脆弱性への対応は単純明快です。telnetdを使用していない場合は今すぐ無効化し、使用している場合は最新のパッチを適用するか、SSHへの移行を計画してください。攻撃者はすでにこの脆弱性を悪用し始めており、対応の遅れは致命的な結果を招く可能性があります。
レガシーシステムのセキュリティは、しばしば見落とされがちですが、このような事例は、すべてのシステムコンポーネントを定期的に見直すことの重要性を強調しています。あなたの組織でも、この機会にtelnetの使用状況を確認し、必要な対策を講じてください。


コメント