Termix DockerイメージからのSSH認証情報漏洩の脆弱性 (CVE-2025-59951)

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認証情報の安全性を確保するために、推奨される緩和策を直ちに適用し、公式パッチを待つ必要があります。


元記事: https://gbhackers.com/termix-docker-image-leaking-ssh/