
WarpのレガシーSSHバックグラウンドコマンド処理におけるOSコマンドインジェクション(CVE-2026-48732)を示す概念実証です。脆弱なコマンド構築と修正されたコマンド構築のローカルシミュレーションを含みます。
このリポジトリは、Warp の従来の SSH バックグラウンドコマンド処理に存在する、高深刻度の OS コマンドインジェクション脆弱性 CVE-2026-48732 の Proof of Concept (PoC) です。
影響を受ける Warp バージョンでは、SSH セッションから報告されたリモートの作業ディレクトリ (cwd) を使ってヘルパーコマンドを構築していました。このパスに含まれるシングルクォートがエスケープされていなかったため、攻撃者が制御するリモートホスト、リポジトリ、またはディレクトリ名によって、引用符で囲まれた cd 引数から抜け出し、被害者が認証済みの SSH アカウント権限でリモートホスト上のシェル構文を追加実行できる可能性がありました。
発見者: saku0512 (GitHub)
このプロジェクトは、教育目的および倫理的なセキュリティテスト目的でのみ提供されています。
作者は、このツールの誤用、損害、または違法行為について一切責任を負いません。コンピューターシステムへの不正アクセスは違法です。このソフトウェアを使用することで、明示的にセキュリティテストの許可を得ている環境でのみ使用することに同意したものとみなされます。
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H)>= v0.2023.03.21.08.02.stable_00v0.2026.05.06.15.42.stable_01 以降脆弱な従来の SSH バックグラウンドコマンド処理では、リモートの作業ディレクトリをシングルクォートで囲む際に、パス中のシングルクォート文字をエスケープしていませんでした。
command_str.push_str(&format!("cd '{current_directory_path}' && "));
たとえば、current_directory_path に次のような値が含まれている場合:
/tmp/warp-cve-2026-48732'; touch /tmp/warp_cve_2026_48732_confirmed; echo '
生成されるシェルコマンドは次のようになります。
cd '/tmp/warp-cve-2026-48732'; touch /tmp/warp_cve_2026_48732_confirmed; echo '' && pwd
この結果、挿入された touch コマンドは、シェルによって別個のコマンドとして解釈されます。
修正では、パスをシングルクォートで囲まれたシェルコンテキストに配置する前に、埋め込まれたシングルクォートをエスケープしています。
Python 3 がインストールされていることを確認してください。この PoC は脆弱なコマンド構築をローカルでシミュレートするものであり、Warp や SSH には接続しません。
python3 --version
同梱のスクリプトを実行します。
python3 poc.py
想定される出力には、生成された脆弱なコマンドと、マーカーファイルが作成されたことを示す成功メッセージが含まれます。
[!] SUCCESS: /tmp/warp_cve_2026_48732_confirmed was created.
マーカーファイルを確認し、コマンドが正常に実行されたことを検証します。
ls -l /tmp/warp_cve_2026_48732_confirmed
ファイルが存在する場合、ローカルシミュレーションにおいてコマンドインジェクションの挙動が確認できたことになります。
検証後は、マーカーファイルを削除してください。
rm -f /tmp/warp_cve_2026_48732_confirmed
修正済みのコマンドビルダーを実行します。
python3 poc.py --mode fixed
修正済みシミュレーションでは埋め込まれたシングルクォートがエスケープされるため、マーカーファイルは作成されないはずです。
Warp を修正済みリリースへ速やかに更新してください。
この修正では、従来の SSH ヘルパーコマンドを構築する前に、リモートパス中の埋め込まれたシングルクォートをエスケープします。これにより、攻撃者が制御するパステキストが引用符で囲まれたシェル引数から抜け出すことを防ぎます。