何が起きたか・対象
GPT-SoVITSの音声分割やノイズ除去などの処理で、画面やAPIから受け取ったファイルパスをコマンド文字列へ連結し、shell=Trueでサーバー上のシェルへ渡していました。シェルがその文字列全体をコードとして解析するため、パス内の記号で追加の命令を動かせる問題です。識別子はCVE-2025-49833〜49836です。
Unix系シェルの無害な説明例として、出力先にdemo-$(id)を指定する場合を考えます。値を引用符付きのコマンド文字列へ埋め込むと、シェルは"demo-$(id)"の中でもidを実行し、その出力を名前へ入れます。これは実際の観測入力ではなく、文字列がコードへ変わる仕組みの例です。公開されたopen_sliceは入力元inpの存在を検査しますが、出力先opt_rootも同じコマンドへ連結するため、入力元の確認だけでは出力先の命令解釈を防げません。
攻撃者が対象UIやAPIへ到達し、処理用パスを指定して開始すると、意図した音声処理に加えて攻撃者の命令も実行され得ました。実行権限はGPT-SoVITSを動かすOSユーザーに従います。説明用に、命令が接続パスワードを含む共有設定ファイルを読み外部へ送れる構成なら、攻撃者が秘密を取得できます。ファイルが存在するかという検査だけでは、シェルによる命令解釈は防げません。
報告・修正・公開の時系列
2025-03-14に報告先を問い合わせ、05-06に再連絡、06-16にCVEを依頼し、06-27に研究資料が公開されました。検証対象は20250228v3です。この時系列だけで正式な修正リリースがあったとは判断できません。
正常ならどう動くはずだったか
正常な起動では、サーバーのPython処理がプロセス起動APIへ、固定のPython実行ファイルと、音声処理スクリプト・入力パス・出力パスを引数の配列として渡します。shell=Falseでシェルを起動しなければ、音声処理プログラムがパスの文字列を受け取ります。値の中の$(id)をシェルがコマンド置換として再解釈する段階がありません。
技術的な原因
open_slice、open_denoise、open_asr、change_labelなどが、画面やAPIで受け取ったパスをコマンド文字列へ連結し、shell=Trueで起動していました。シェルが連結後の文字列全体を解析するため、入力したパスの記号が命令の構造として扱われると、予定した音声処理に加えて攻撃者の命令もサーバー上で動きます。
攻撃が成立する条件と流れ
攻撃者が対象のUIやAPIへ到達し、処理に渡すパスなどを指定して音声処理を開始します。その入力がコマンド文字列へ入り、シェルに解釈されることが条件です。一部経路ではファイルの存在確認もありますが、存在するファイルを指すかと、シェルへ渡す文字列の解釈が安全かは別の検査です。
確認された事実と、想定される影響
研究資料は、GPT-SoVITSの実行ユーザーの権限で任意コマンドが動くと報告しています。説明用の被害例では、命令が共有された設定ファイルを読み、攻撃者のサーバーへ送信できると、攻撃者は接続パスワードなどを入手します。
書き込み権限がある場合は、アプリのファイルを変更し、後の処理が変更後のファイルを読み込むと動作を変えるおそれがあります。読める秘密、書ける場所、外部送信の可否が被害範囲を決めます。実際の攻撃活動や、コンテナ外への脱出が確認された報告ではありません。
実際の修正・対応方針
参照する開示資料では正式な修正リリースを確認できません。一般的な対策では、固定した実行ファイルのパスと引数の配列をプロセス起動APIへ渡し、shell=Falseなどでシェルを使わずに起動します。
入力パスは音声処理プログラムが受け取る一つの引数となり、シェルが命令の区切りとして読む経路をなくせます。さらに、対象が文字列のパスであることを確認し、入力側に実行ファイルや処理モードを自由に選ばせません。先頭-をオプションとするツールでは、対応する--区切りなどで対象名と区別します。これらは一般策であり、製品の各経路へ実装済みとは記述しません。
利用者・運用者が確認すること
未信頼者がUIやAPIへ到達できる公開を避け、修正とロードする版を確認できる構成を使います。実行ユーザーの権限や共有ファイルも制限し、問題が起きた場合に読み取られたり書き換えられたりする対象を減らします。
開発者への教訓(教材としての考察)
公開されたopen_sliceやopen_denoiseは、受信したパスをmy_utils.clean_pathへ渡した後、コマンド文字列へ連結しています。パス整形用の関数を呼んだことと、シェルのコードへ安全に埋め込めることは別です。存在確認を行う値と、実際にシェルへ渡す全ての値も照合する必要があります。
出典・確認範囲
- [1] Command injection in GPT-SoVITSGitHub Security Lab / 確認日 2026-10-29
修正済みリリースと実悪用は確認できません。