セキュリティとプライバシー · Clash 技術ブログ

Clash Partyのrule-providersにおけるコマンドインジェクションのリスクへどう対処する?

Clash Party v2.0.3では、悪意のあるrule-providers設定によってコマンドが実行される可能性のある問題が修正されました。本記事では発生条件を限定し、直ちに行う隔離、公式版への更新、PoCを使わない確認、影響が疑われる場合の証拠保全と安全な切り戻しを説明します。

  • Clash Party
  • v2.0.3
  • rule-providers
  • コマンドインジェクション
  • セキュリティ更新
目次

今回のリスクが発生する条件を先に確認する

Clash Party v2.0.3の公式リリースノートでは、「悪意のあるrule-providers設定によって任意のコマンドが実行される可能性がある」セキュリティ問題の修正が明記されています。対応するコミット588aaa6によると、旧版のconvertMrsRulesetはrule-providers.behaviorとルールセットのパスをshellコマンドへ連結していました。

behaviorは実行時設定から取得され、その実行時設定はユーザーが購読するYAMLから提供される場合があります。悪意がある、または改ざんされたサブスクリプションは異常なbehaviorを書き込めます。修正コミットではさらに、Windowsで二重引用符が埋め込まれたルールセットパスも、旧コマンドの引用符境界を壊せたと説明されています。

その後、ユーザーがリソースビューアーで該当するMRSルールセットを開くと、旧実装ではOSのshellがこれらの値を解釈し、現在のClash Partyユーザー権限でコマンドを実行する可能性がありました。

修正ではshell文字列の実行をexecFileの引数配列に置き換え、behaviorをMihomoが対応するdomain、ipcidr、classicalに制限しました。修正対象はClash Partyのルールセット変換経路であり、Mihomoのrule-providers形式自体でも、すべてのClashクライアントに共通する脆弱性でもありません。

上流では、影響を受ける開始バージョン、CVE、GHSA、深刻度、実際の悪用の有無は公表されていません。旧版や不明なサブスクリプションがあるだけで、端末が悪用されたとは断定できません。ただし、実際のバージョンがv2.0.3未満で、設定元が信頼できず、該当するMRSリソースを開いた場合は、本記事に従って直ちに隔離し、更新してください。

適用範囲の早見表

現在の状況そこから判断できること次の手順
実際にClash Party v2.0.3以降を実行しているこの上流修正を含む設定元と実際のバージョンを引き続き確認する
v2.0.3未満で、出所不明のサブスクリプションを使用したこの修正が含まれるとは確認できないため、影響を受ける可能性があるものとして扱うリソースを開くのをやめて更新する
Mihomoコアまたは別のクライアントだけを使用このClash Party実装の影響を受けるとは限らない実際のクライアントの証拠に基づいて判断する
未知のプロセス、警告、設定変更が見つかったセキュリティインシデントとして扱う必要があるネットワークを切断し、証拠を保全して認証情報をローテーションする
明確なポップアップや異常がない旧経路が安全だった証明にはならないバージョンと入手元の確認を完了する

疑わしいProfileとルールセットビューアーを直ちに隔離する

まだバージョンを確認できない場合は、まずClash Partyのルールセットリソースビューアーを閉じ、疑わしいrule-providerをクリックしないでください。疑わしいProfileの自動更新と使用を停止し、自分で保存して入手元を確認済みの設定へ切り替えます。安全に切り替えられない場合は、Clash Partyを完全に終了してください。

疑わしい設定のbehaviorを変更して試行を続けたり、サブスクリプション全体をオンライン診断サイトへアップロードしたりしないでください。サブスクリプションURLにはtokenが含まれる場合があり、ルールセットのアドレス、ノード認証情報、スクリプト内容からもアカウントやネットワーク構成が漏れる可能性があります。

未知のコマンドウィンドウ、不審なプロセス、セキュリティソフトの警告、異常な外部通信、ファイル変更がすでに見つかっている場合は、直ちに端末をネットワークから切断し、後述のインシデント対応へ進んでください。この段階では、アプリを更新するだけで実行済みのコマンドが取り消されたとは確認できません。

切り戻せる隔離状態を作る

  1. リソースビューアーを閉じる

    不明なMRSルールセットを再び開かず、いわゆるオンライン脆弱性診断ページも使わない。

  2. 疑わしい設定を停止する

    Profileの自動更新と使用を停止する。通信が必要な場合は、入手元が明確で、更新前に検証済みの設定だけへ切り替える。

  3. 最小限の証拠を保存する

    Clash Partyのバージョン、Profile名、サブスクリプションの入手元、リソースを開いたおおよその時刻、最初の異常を記録し、クリーンアップは実行しない。

  4. 症状に応じてネットワーク切断を判断する

    未知のプロセス、警告、外部通信、ファイル変更が見つかった場合は直ちにネットワークを切断する。侵害の兆候がなければ、リソースビューアーを閉じたまま公式版への更新へ進む。

実際のバージョン、設定元、現在の証拠を記録する

Clash Partyの「About」または更新ページで実際のアプリバージョンを確認し、OSとインストールしたアーキテクチャを記録します。ダウンロードファイル名、古いスクリーンショット、Mihomoコアのバージョンだけで判断しないでください。この修正はClash Party本体に含まれます。

次に、ルールセットの内容を開かず、疑わしいProfileが手動インポート、ローカルファイル、リモートサブスクリプションのどれか、最終更新日時、rule-providersにMRS形式のリソースがあるかを記録します。

記録するのはprovider名、type、behavior、format、機密情報を除いた入手元ドメインまたはパスだけにします。Windowsではパスに異常な二重引用符が含まれていないかにも注意し、ノードのパスワードやサブスクリプションtokenはコピーしないでください。

Clash Partyのログ、OSのセキュリティログ、現在の設定の読み取り専用コピーを保管します。異常の証拠がない場合、正常なmihomo子プロセス、ルールのダウンロード、一時ファイルをすべて侵害と決めつけないでください。明確な警告がある場合も、先にファイルを削除したり再インストールして時系列を上書きしたりしないでください。

更新前の記録チェックリスト

  • Clash Partyの実際のバージョン、OS、CPUアーキテクチャを記録した
  • 疑わしいProfileの入手元と最終更新日時を記録した
  • 該当するMRSルールセットリソースを開いたかどうかを時系列に記録した
  • 公開用コピーからサブスクリプションtoken、ノード認証情報、secret、実際のサーバーアドレスを削除した
  • 元のログと設定を非公開の読み取り専用領域へ保存し、クリーンアップで上書きしていない

公式Releaseからv2.0.3へ更新する

Clash Party v2.0.3は2026年9月20日にリリースされ、公式リリースノートとコミット588aaa6の双方にこの修正が含まれています。最低条件は実際にv2.0.3を実行することです。今後、公式から新しい安定版が提供された場合は、そのコミットが引き続き含まれていることを確認してください。

mihomo-party-org/clash-partyの公式Releaseから、OSとアーキテクチャに合うインストーラーを選びます。Windowsではx64、ia32、ARM64を区別し、macOSではIntelとApple Siliconを区別します。Linuxでは、現在のディストリビューションで使うDEB、RPM、PACMAN形式も選択してください。

更新前に旧プログラムを完全に終了し、現在の設定をバックアップします。検索広告、オンラインストレージ、チャットの添付ファイルから同名のインストーラーを入手しないでください。古いプラグインを残すために、v2.0.3のプログラムファイルを一部だけ上書きすることも避けてください。

インストール後に「About」ページを開き直し、実際のバージョンを確認します。Mihomoコアの更新、サブスクリプションの更新、ルールセットだけの差し替えは、Clash Party本体の更新の代わりにはなりません。

公式版への更新を完了する

  1. OSとアーキテクチャを確認する

    現在の端末に合う公式v2.0.3アセットを選び、ファイル名だけで別のアーキテクチャを推測しない。

  2. 非公開バックアップを保管する

    設定と信頼できるProfileのコピーを保存する。疑わしい設定は読み取り専用の証拠として扱い、新しい環境へ直接復元しない。

  3. 旧プログラムを完全に終了する

    トレイプロセスとClash Party本体が終了したことを確認してから、公式インストーラーで更新する。

  4. 実際のバージョンを確認する

    再起動後、アプリ内でバージョンがv2.0.3以上であることを確認し、更新完了時刻を記録する。

信頼できるサブスクリプションを再取得し、rule-providersを確認する

更新後すぐに元の疑わしいProfileを再び有効にしないでください。リモートサブスクリプションが改ざんされた可能性がある、または入手元を確認できない場合は、サービス提供者へ公式アドレスを確認し、古いサブスクリプションtokenを無効にして再発行してもらいます。tokenのローテーションは信頼できる端末で実施してください。

新しい設定のrule-providersを確認します。Mihomoのドキュメントでは、一般的なbehaviorとしてdomain、ipcidr、classicalの三種類が挙げられていますが、format: mrsが対応するのはdomainとipcidrだけです。classicalは別の対応形式で使用できますが、MRSと組み合わせないでください。

連結記号、コマンド断片、またはそのformat/behaviorの組み合わせに合わない内容は読み込まないでください。provider URLのドメイン、パス、更新経路、想定形式も確認します。

入手元が明確な新しい設定からだけノードとルールを復元し、疑わしいYAML、キャッシュされたMRSファイル、不明なスクリプトをそのままコピーしないでください。比較が必要な場合は、オフラインの読み取り専用コピーでテキスト差分を確認し、リソースビューアーをクリックして変換を発動させないでください。

rule-providersの確認範囲

確認項目正常な範囲異常時の対応
一般的なbehaviordomain、ipcidr、classicalそのProfileを停止し、推測で値を修正しない
format: mrsdomainまたはipcidrとのみ組み合わせるclassical + mrsは使用せず、提供者へ修正を依頼する
Windowsのパス埋め込まれた二重引用符などの異常な文字を含まない機密情報を除いた証拠を保存し、そのリソースを開くのをやめる
providerの入手元サービス提供者またはプロジェクトが明示したアドレスサブスクリプションを再発行し、ドメインを確認する
MRSキャッシュ信頼できる設定から再ダウンロードする削除前に疑わしいコピーの証拠ハッシュと時刻を保存する
サブスクリプションtoken非公開の設定とクライアント内でのみ使用する信頼できる端末から失効させ、再発行する

PoCを実行せずにv2.0.3と実通信を確認する

セキュリティ確認の第一項目は、実際のClash Partyがv2.0.3以上であることです。第二項目は、入手元が明確でformat/behaviorの組み合わせが正しく、パスに異常のないProfileだけをインポートし、ルールセット一覧を正常に読み込めることを確認することです。フィルターが機能する証明のために悪意のある値を作る必要はありません。

信頼できるProfileで既知のMRSリソースを一つ開き、それがdomainまたはipcidrを使用していること、リソースビューアーにルールが表示されること、アプリが予期しないコマンドインタープリターや未知の子プロセスを起動しないことを確認します。次に、動作確認済みのノードを一つ固定し、サブスクリプション更新、ルール一致、実際のHTTPSリクエストをそれぞれ確認します。

最後にClash Partyを完全に終了して再起動し、バージョンとProfileをもう一度確認します。バージョンが正しいこと、ルールリソースが正常であること、実際のリクエストが成功することの三点がそろって初めて、更新がインストール画面だけで終わっていないと確認できます。

v2.0.3セキュリティ更新の確認チェックリスト

  • 実際に動作するClash Partyのバージョンがv2.0.3以上である
  • 入手元が明確で、format/behaviorの組み合わせが正しく、パスに異常のないProfileだけを復元した
  • 信頼できるMRSリソースを表示でき、PoCや不明なスクリプトは実行していない
  • 予期しないコマンドインタープリター、未知の子プロセス、新しいセキュリティ警告がない
  • サブスクリプション更新、ルール一致、実際のHTTPSリクエストがすべて成功した
  • 再起動後もバージョンと信頼できるProfileが正しいままである

コマンド実行が疑われる場合はセキュリティインシデントとして対処する

ルールリソースを開いた前後に、未知のコマンドウィンドウ、不審なプロセス、異常な外部通信、OSのセキュリティ警告、スタートアップ項目やファイルの変更が見つかった場合は、通常のクライアント更新として扱わないでください。ネットワークを切断して端末の状態を保ち、時系列、プロセス、接続、警告、ファイルパスを記録します。

OSまたは組織が承認したセキュリティツールで、オフラインスキャンまたは完全スキャンを実施します。サブスクリプションtoken、ノード認証情報、WebDAV、GitHub Token、ブラウザーセッションなど、現在のユーザー権限で読み取られた可能性がある認証情報は、別の信頼できる端末から失効させ、再発行してください。

v2.0.3への更新で遮断できるのは旧変換経路だけであり、すでに実行されたプログラムを削除したり、漏えいした認証情報を復元したりはできません。システムの完全性を確認できない場合は、公式メディアからOSとクライアントを再インストールし、確認済みのクリーンなデータだけを復元してください。古いアプリディレクトリ全体をそのまま戻さないでください。

影響が疑われる場合の最低限の対応

  • 端末をネットワークから切断し、Clash Partyと疑わしいProfileを停止した
  • バージョン、設定元、リソースを開いた時刻、警告、異常な接続を記録した
  • 元のログと設定を保全し、公開用コピーは機密情報を削除した
  • 信頼できるセキュリティツールで完全スキャンを実施した
  • 漏えいした可能性のあるtokenとクラウド認証情報を信頼できる端末でローテーションした
  • 完全性を確認できない場合、古いアプリディレクトリを直接復元していない

更新に互換性問題がある場合は機能を切り戻し、危険なバージョンには戻さない

v2.0.3で現在の端末にインストール、起動、プラグイン互換性の問題が起きても、機能を戻すために旧変換経路を含むバージョンへ戻さないでください。まずClash Partyを完全に終了し、疑わしいProfileを停止したまま、検証済みの別の保守中クライアントまたはシステムプロキシで必要な通信を復旧します。

Clash Partyを引き続き使う場合は、信頼できる設定のオフラインバックアップだけを残し、公式の後続安定版と関連issueを確認します。新しいバージョンが正常に起動してから、システムプロキシ、TUN、サブスクリプション更新、ルールリソース表示を一項目ずつ復元し、古いデータディレクトリ全体を一度にコピーしないでください。

問題が特定の第三者ルールセットやサブスクリプションだけで起きる場合は、behaviorを緩めたり旧版のshell実行を再び有効にしたりせず、提供者に設定の修正を依頼してください。上流へ報告するときは、OS、アーキテクチャ、バージョン、最初のエラー、機密情報を除いた再現手順を示し、サブスクリプションtokenや実行可能なpayloadは添付しないでください。

インストール後もバージョンがv2.0.3未満

旧インスタンスの使用を停止し、別のポータブル版や古いインストールディレクトリが起動していないか確認する。

新しいバージョンを起動できない

ログを保存して保守中の代替クライアントを使い、旧変換経路には戻さない。

信頼できるルールセットを表示できない

まずbehaviorと形式を確認し、ルール提供者またはClash Partyへ機密情報を除いた証拠を送る。

プロキシは使えるが未知のプロセスや警告がある

セキュリティインシデントとして扱い、通信できることだけでコマンド実行を否定しない。

今後はサブスクリプションとルールセットを信頼できない入力として扱う

今回の修正から、サブスクリプションはノード一覧だけでなく、rule-providersなどの構造化フィールドもクライアントへ渡すことが分かります。長期的な保守では、サブスクリプション提供者、rule-providerのドメイン、behavior、最終確認日時、現在のClash Partyバージョンを記録してください。

アプリの自動更新を有効にするか、公式Releaseを定期的に確認します。サブスクリプションのドメイン、発行方法、内容構造が変わった場合は、オフラインで比較してから通常のProfileへ戻してください。保守が終了した、または入手元を説明できないルールセットは、クライアント側のフィルターへ依存し続けるより、使用関係を削除する方が確実です。

公式Releaseと修正コミットが、今回の結論における事実の範囲です。今後、上流がGHSA、CVE、影響バージョンの範囲、新しい緩和策を公開した場合は、その公式説明に基づいて判断を更新し、二次情報の見出しから深刻度や影響規模を推測しないでください。

長期保守の記録

記録項目利用目的再確認のタイミング
Clash Partyのバージョンセキュリティ修正を含むか確認するアプリを更新するたび
Profileとサブスクリプションの入手元信頼できない設定の入口を特定するサブスクリプションのアドレスまたは提供者が変わったとき
rule-providersとbehaviorルールセットの種類と変換範囲を制限する設定構造が変わるたび
公式Releaseとコミット二次情報をメンテナーの結論として扱わない新しい警告または安定版が出たとき

参考資料