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 の自動使用を制限することも有効である。
この脆弱性が示すのは、信頼される開発ツール間の相互作用から生じ得る、複雑なセキュリティ・リスクの事例である。
OpenSSH の脆弱性は、ProxyCommandで展開されるユーザー名の制御文字 (改行など) に対する、不十分なサニタイズに原因があります。bash などの一部のシェルが、構文エラー後であっても継続的に実行する挙動と組み合わさり、改行以降に挿入した悪意あるコマンドが実行される問題が生じています。さらに、Gitのサブモジュール再帰クローンで改行入りユーザー名が渡る実運用シナリオが示され、%r トークン展開やツール間の文字列処理の扱いが脆弱性を誘発していると、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、OpenSSH で検索も、ご参照ください。
You must be logged in to post a comment.