OpenSSH の脆弱性 CVE-2025-61984 が FIX:ProxyCommand 経由での RCE と PoC 公開

OpenSSH Vulnerability Exploited Via ProxyCommand to Execute Remote Code – PoC Released

2025/10/07 CyberSecurityNews — OpenSSH に存在する、新たなコマンド・インジェクションの脆弱性 CVE-2025-61984 と、PoC エクスプロイトが公開された。この脆弱性を悪用する攻撃者は、被害者のマシン上でリモート・コード実行を達成する可能性がある。この脆弱性 CVE-2025-61984 により、過去に報告された同様の欠陥 CVE-2023-51385 に対する修正が回避される。具体的に言うと、ProxyCommand 機能で特別に細工されたユーザー名が処理される際に、基盤となるシステム・シェルとのインタラクションが悪用される。

この脆弱性の核心は、OpenSSH におけるサニタイズの不備にあり、ユーザー名内の改行などの制御文字が適切に処理されていない。したがって攻撃者は、改行の直後に悪意あるコマンドを配置したユーザー名を作成し、SSH の ProxyCommand 機能を介してシェルに受け渡すことが可能になる。

OpenSSH では、数多くの危険なシェルメタ文字がフィルタリングされるが、特定のシェルで構文エラーを引き起こす可能性のある文字までは、フィルタリングしていないケースがある。したがって bash/fish/csh などのシェルが ProxyCommand を処理する際に、最初の行で仕組まれた構文エラーにより、その行のコマンドは失敗してもシェルは終了せず、次の行にある悪意のペイロードが実行される。その結果として、通常のコマンド実行防止策が事実上回避され、リモート・コード実行 (RCE) の危険性が生じる。

Git サブモジュールを悪用した攻撃シナリオ

脆弱性 CVE-2025-61984 における現実的な悪用シナリオで用いられるのは、リポジトリ内のサブモジュールの URL に対して、改行を含む悪意の複数行ユーザー名と改行文字を埋め込んだ Git リポジトリである。

それが再帰的にクローン (git clone –recursive) されると、Git が SSH 経由でサブモジュール取得のための接続を試み、特定のコンフィグ下で ProxyCommand が作動し、改行を含むユーザー名がシェルに渡され、RCE に至る可能性がある。

このエクスプロイトが成立するには、被害者のマシン上で次の2つの条件が満たされる必要がある。1つは、構文エラー後も実行を継続する Bash などのシェルである。もう1つは、SSH コンフィグ・ファイル ( ~/.ssh/config ) 内での ProxyCommand の指定により、%r トークンを用いてリモートユーザー名を取り込むことだ。

なお、Teleport などのツールでも、脆弱なパターンの生成が確認されており、攻撃対象領域が拡大するおそれがある。ただし、zsh は構文エラーで直ちに終了するため、この手法の影響を受けない。

緩和策

すでに OpenSSH プロジェクトは、バージョン 10.1 でパッチをリリースし、この問題に対処している。具体的には、ユーザー名内の制御文字を禁止することで、この欠陥を排除している。すべてのユーザーに対して強く推奨されるのは、この最新バージョン以降へのアップグレードである。

なお、迅速なアップデートが不可能なシステムでは、いくつかの緩和策を講じることが可能だ。まず、SSH コンフィグで、ProxyCommand ディレクティブ内の %r トークンを一重引用符 (‘%r’) で囲むことで、シェルによる特殊文字の解釈を停止できる。さらに、Git をコンフィグして、サブモジュールに対する SSH の自動使用を制限することも有効である。

この脆弱性が示すのは、信頼される開発ツール間の相互作用から生じ得る、複雑なセキュリティ・リスクの事例である。