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

Clash Party内蔵Sub-Storeのリスクにはどう対処する?

Clash Party 内蔵の Sub-Store のリスク報告は 2.11.4–2.37.1 が対象です。バックエンドのバージョンを確認して無効にし、2.38.0 以降へ更新し、アクセスを本機のみに制限します。異常が疑われる場合は証拠を保全し、危険なバージョンを有効にしないでください。

  • Clash Party
  • Sub-Store
  • セキュリティ更新
  • ローカルAPI
  • CORS
目次

内蔵のサブスクリプション管理ツールにリスクが報告されたら、使い続ける必要があるかを確認してください。クライアントとバックエンドは別々に更新されるため、アプリの更新だけでは判断できません。インポート済みの設定は通常そのまま使え、管理サービスを停止しても現在のノードが消えるわけではありません。

Clash Party 内の Sub-Store バックエンドは安全対策の版を個別に確認する

Sub-Storeはサブスクリプションの編集、変換、管理を行うツールで、Mihomoのコアではありません。停止後はClash Partyにインポート済みのProfileで、ポリシーグループ、システムプロキシ、TUNが引き続き使えるか確認してください。通常は影響を受けず、止まるのはSub-Store画面でのサブスクリプション処理です。

Clash Party は内蔵バックエンドを個別に更新できるため、クライアントの版だけでは Sub-Store の安全性を判断できません。Clash Party #2134 は v2.0.2 環境の利用者報告で、貢献者は Sub-Store の更新を勧めていますが、管理者が確認したリスクの結論はありません。

Sub-Store issue #634 の公開報告は Node バックエンド 2.11.4~2.37.1 を対象とし、2.38.0 の公開説明で問題を閉じています。2026 年 9 月 23 日の確認時点の安定版は 2.41.0 で、この版または確認済みの後続安定版へ更新してください。修正であらゆる通信が認証されるわけではなく、版だけで端末が影響を受けていないとも証明できません。

v2.0.2 のソースは内蔵 Sub-Store を既定で有効にしています。動作中かどうかは本機のスイッチと待ち受けアドレスで確認します。ページを開かない、入口を隠す、サブスクリプションを消す、通知が出ない、といったことでは停止を証明できません。版が不明なら次の節に沿って停止し、本機の実際のアドレスで確認してください。

公開報告で説明されているローカルSub-Storeへのリクエスト経路
  1. 信頼できないWebページブラウザで開いた外部ページがクロスオリジンリクエストを送る
  2. ブラウザのオリジン確認旧版Nodeバックエンドはデフォルトで広すぎるオリジンを許可
  3. ローカルのSub-Store APIClash Partyが起動する独立したフロントエンド/バックエンドサービス
  4. スクリプト処理機能サブスクリプション処理のコンテキストでスクリプト操作が実行される可能性

2.38.0ではデフォルトのオリジン範囲が絞られ、一部のスクリプト操作も制限されました。ただしCORSはAPI認証ではありません。LANアクセスも無効にし、バージョンを確認できない場合はSub-Store自体を停止してください。

版が不明なら「設定 > Sub-Store」で有効化と LAN アクセスを切る

Clash Party で Sub-Store が動作していてバックエンドのバージョンが不明なら、信頼できない Web ページを閉じ、公開された悪用コードを探したり実行したりしないでください。「設定 > Sub-Store」を開き、スイッチが表示されている間に「LAN アクセスを許可」をオフにしてから「Sub-Store を有効にする」をオフにし、内蔵のフロントエンドとバックエンドを停止します。すでに無効なら、隠れたスイッチを変更するためだけにサービスを再度有効にしないでください。

「LAN アクセスを許可」がオンなら 0.0.0.0 で待ち受け、LAN 内の端末から直接アクセスできます。オフなら 127.0.0.1 を使います。報告には Web ページからローカルのループバックアドレスへアクセスする場合も含まれるため、LAN アクセスを無効にするだけでは更新の代わりになりません。アプリを再起動し、既存の Profile で実際の HTTPS リクエストを行って、通常のプロキシが使えることを確認してください。

実際のバックエンドバージョンと待受アドレスを記録する

更新する前に、「設定 > Sub-Store」で内蔵バックエンドとカスタムバックエンドのどちらを使っているか確認します。内蔵モードではClash Partyがローカルbundleを起動します。カスタムモードでは内蔵バックエンドを停止し、ユーザーが入力したURLへ接続します。アプリ内更新は、外部デプロイ側で行う更新、待受制限、認証の代わりにはなりません。

内蔵バックエンドを使う場合は、信頼できないWebページを閉じたことを確認してからSub-Storeを一時的に有効にし、設定欄の「LANからのアクセスを許可」はオフのままにします。Sub-Storeページの「ブラウザで開く」を使い、画面に表示された実際のアドレスを確認してください。どの端末でも同じポートが固定で使われるとは限りません。

Clash Party v2.0.2のソースでは、バックエンドはデフォルトで127.0.0.1:38324から空きポートを探し、使用中なら番号を順に増やします。バックエンドのルートアドレスを開くと、Sub-Storeの応答にあるdata.versionで実際のバージョンを確認できます。記録するのはバージョンとアドレスだけにし、スクリプト引数の送信や悪用テストは行わないでください。

バージョンが2.11.4~2.37.1なら直ちに更新します。2.11.4未満はこの報告の範囲外でも大幅に古いため、現行安定版へ更新してください。ページを開けない、またはバージョンを確認できない場合は無効の状態へ戻し、「不明」を「安全」とみなさないでください。

バックエンドに2.11.4~2.37.1と表示される

公開報告の範囲内です。ローカル限定を維持し、直ちに上流版へ更新します。

バックエンドに2.38.0以降と表示される

#634 の公式説明に示されたバージョン要件は満たしていますが、現行の安定版と接続を待ち受けるアドレスの範囲も確認してください。

Clash Party v2.0.2としか分からない

情報が足りません。同じクライアント版でも異なるSub-Storeバックエンドが動作している可能性があります。

ブラウザのアドレスが127.0.0.1ではない

まずサービスを無効化し、Allow LAN をオフにしてから、設定や接続を待ち受けているほかのプログラムを確認してください。

ページまたはバージョン応答を開けない

サービスを繰り返し公開せず、無効のまま公式の更新経路から再試行してください。

長期保守の記録

記録項目必要な理由確認するタイミング
Sub-Store data.version独立バックエンドが修正の最低ラインに達しているか判断するためアプリ内更新のたび
Allow LANと待受アドレスAPIがLANへ公開されていないことを確認するためネットワークまたは設定の変更後
Clash Partyのバージョン画面と更新経路を把握するためクライアント更新後
公式Releaseとセキュリティ説明ユーザー報告を公式見解として扱わないため新しいバージョンまたは警告を確認したとき

Clash PartyからSub-Storeを更新する

以下の手順は Clash Party の内蔵バックエンドだけが対象です。Sub-Store ページの右上には雲形の「更新を確認」ボタンがあります。

v2.0.2 のソースによると、バックエンドは sub-store-org/Sub-Store、フロントエンドは sub-store-org/Sub-Store-Front-End の公式 latest Release からそれぞれ取得し、完了後に両サービスを再起動します。

最低限の対象は 2.38.0 です。本記事で確認した対象は、2026年9月22日公開の 2.41.0 です。後に別の安定版を選ぶ場合は、公式 Releases で確認してください。

Mihomoコアの更新、サブスクリプションの再取得、同じClash Partyクライアントの再インストールでは、Sub-Storeバックエンドの確認を代替できません。Sub-Storeは独立してダウンロード・実行されるコンポーネントなので、専用ページで更新し、固有のバージョン番号を読み取る必要があります。

アプリ内の公式更新経路だけを使う

  1. ローカル待受を維持する

    Allow LANがオフであることを確認し、信頼できない他のブラウザページも閉じます。

  2. 「更新を確認」をクリックする

    Sub-Store ページの右上にある雲形の「更新を確認」ボタンを押し、ダウンロード、サービスの再起動、完了通知を待ちます。その間はクライアントを終了せず、アプリのディレクトリ内の bundle を手作業で上書きしないでください。

  3. バージョンをもう一度読み取る

    画面に表示された実際のバックエンドアドレスへもう一度アクセスし、data.versionが2.38.0以上であることを確認します。

  4. 更新に失敗したら無効にする

    ダウンロード、再起動、バージョン確認のいずれかに失敗した場合は「Sub-Storeを有効にする」をオフにし、ダウングレードや第三者からのファイルコピーは行わないでください。

コミット 038745f は既定の CORS を制限し、一部の Node スクリプト操作を制限して拒否テストを追加しています。Origin のないリクエストは扱いが異なり、Clash Party の独自バックエンド名では一部のスクリプト制限も適用されません。この変更だけで、すべての API 呼び出しが認証されるとは限りません。

今後、セキュリティ勧告や認証の仕組みが変わった場合は、公式の Release、コミット、説明で確認し直してください。

更新後にバックエンドのバージョン、この端末からしかアクセスできないこと、無効化が実際に機能することを確認する

Clash Party を再起動して Sub-Store の画面から実際のバックエンドのアドレスと data.version を読み、新しい版が維持されているか確認します。アドレスは 127.0.0.1 である必要があり、LAN のアドレスや 0.0.0.0 ではいけません。更新成功の表示だけでは不十分です。

次に「Sub-Storeを有効にする」をオフにして、フロントエンドとバックエンドのページへアクセスできなくなったことを確認します。その後、既存のProfileで実際のHTTPSリクエストを一度行います。これにより、無効化スイッチが独立サービスを確実に停止することと、通常のプロキシ処理がSub-Storeの常時稼働に依存しないことを同時に確認できます。

未知のプロセス、接続、認証情報の変更があれば、侵入の可能性として対応する

バージョンが報告範囲内でも、すでに悪用されたことを意味しません。未知のプロセス、不審なネットワーク接続、OSのセキュリティソフトによる警告、設定や認証情報の不審な変更などの証拠がある場合に限り、端末侵害の可能性がある事案として扱います。その段階では、更新で今後の侵入口は塞げても、すでに存在するプログラムを削除したり、漏えいした認証情報を元に戻したりはできません。

まずSub-Storeを無効にして端末をネットワークから切り離し、Clash PartyとSub-Storeのバージョン、待受アドレス、警告が出た時刻、不審な現象を記録します。「クリーンアップ」のためにログ、設定、未知のファイルをすぐ削除しないでください。影響範囲を判断する重要な証拠になる可能性があります。

OS標準または組織が承認したセキュリティツールで完全スキャンを行います。サブスクリプションURL、ノードの認証情報、WebDAV、GitHub Token、その他の鍵をその端末で扱っていた場合は、信頼できる別の端末から古い認証情報を失効させ、再発行してください。ログを共有する前には機密情報を除いたコピーを作成します。完全性を確認できない場合は公式ソースからOSまたはクライアントを再インストールし、安全を確認した設定だけを復元してください。

Sub-Store の更新失敗や互換性の問題がある場合は無効化し、危険なバックエンドを有効にしない

2.38.0以降で特定のサブスクリプション変換やスクリプトが動かなくなっても、機能を戻すために2.37.1以前へダウングレードしないでください。まずSub-Storeを無効にし、動作確認済みのClash Party Profileを引き続き使用します。サブスクリプションを復元する必要がある場合は、信頼できるサービス事業者から元のリンクを再取得するか、更新前の安全なバックアップを取り込みます。

新しいバージョンで、Allow LANがオフ、待受が127.0.0.1に限定されている場合にだけSub-Storeを再度有効にして確認します。第三者スクリプトが制限された古い挙動に依存し続ける場合は、ローカルAPI全体の制限を緩めるのではなく、そのスクリプトの使用を止めてメンテナーへ更新を依頼してください。

切り戻しは可能でもリスクのある版へは戻さない

  1. 独立サービスを停止する

    Sub-Storeを無効にし、フロントエンドとバックエンドが停止したことを確認します。

  2. 利用可能なProfileを復元する

    アプリ内で引き続き動作する設定を使うか、更新前に保存した安全なコピーを取り込みます。

  3. 普段のプロキシ利用を確認する

    動作確認済みのノードを一つ固定し、システムプロキシまたはTUNで実際のリクエストをそれぞれ確認します。

  4. 互換性修正を待つ

    Sub-Storeと関連スクリプトの公式更新を確認し、2.37.1以前のbundleは復元しません。

参考資料