Termix DockerイメージからのSSH認証情報漏洩の脆弱性 (CVE-2025-59951)
公式のTermix Dockerイメージに重大な脆弱性が発見され、ユーザーの機密性の高いSSH認証情報が漏洩する危険性があることが判明しました。この脆弱性により、ネットワークアクセスを持つ攻撃者は、ログインすることなく保存されているホストアドレス、ユーザー名、パスワードを取得可能になります。
脆弱性の仕組み
Termixは、Nginxリバースプロキシの背後でNode.jsバックエンドを実行しています。バックエンドコードは、リクエストがローカルマシンからのものかどうかを判断するためにreq.ip
メソッドを使用します。しかし、NginxとTermixが同じ環境で動作しているため、req.ip
は常にプロキシのIPアドレス(127.0.0.1)を返します。これにより、アプリケーションはすべてのリクエストがlocalhostからのものだと誤認してしまいます。
脆弱性の詳細
- CVE ID: CVE-2025-59951
- パッケージ: Termix (Node.js)
- 影響を受けるバージョン: release-0.1.1-tag から release-1.6.0-tag まで
- パッチ適用済みバージョン: なし
- 深刻度: クリティカル
攻撃の影響と手法
この誤認の結果、認証なしで誰でも/ssh/db/host/internal
エンドポイントを呼び出すことが可能になります。通常、Termixサービスは仮想マシン内に存在しますが、攻撃者はネットワークアセットをスキャンして露出したインスタンスを特定できます。脆弱なエンドポイントに単純なGETリクエストを送信するだけで、サービスに保存されているSSHホストの詳細(アップストリームサーバーへの接続に必要な認証情報を含む)のリストが返されます。
この脆弱性は、release-0.1.1-tag
からrelease-1.6.0-tag
までのすべてのTermix Dockerリリースに影響します。公式イメージまたは公式Dockerfileから構築されたカスタムイメージを使用し、Nginxリバースプロキシをデフォルト設定で使用しているシステムは脆弱です。攻撃者は、http://<IP>:<PORT>/ssh/db/host/internal
にアクセスすることで、完全なSSH設定データを取得し、ネットワーク内での横方向の移動や、さらなる攻撃のための認証情報の収集を行う可能性があります。
緩和策と推奨事項
この問題から保護するためには、バックエンドの検証ロジックを修正し、req.ip
またはデフォルトのプロキシ転送IPの代わりにX-Real-IP
ヘッダーを使用して、アプリケーションがクライアントのIPアドレスを正確に識別するようにする必要があります。管理者には、以下の対策も推奨されます。
- ファイアウォールルールを使用して、管理エンドポイントへのアクセスを制限する。
- Termixを認証ゲートウェイまたはVPNの背後に配置する。
/ssh/db/host/internal
エンドポイントへの予期せぬリクエストがないかログを監視する。- 漏洩した可能性のあるSSH認証情報をすべてローテーションする。
執筆時点ではパッチがリリースされていないため、Termix Dockerイメージのユーザーは、SSH認証情報の安全性を確保するために、推奨される緩和策を直ちに適用し、公式パッチを待つ必要があります。