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

Clash のサブスクリプションリンクが漏えいした場合は?Token のリセット、ログの匿名化、変換サイトのリスク

サブスクリプションの URL が公開された場合、クライアント上の表示名を変えても意味はありません。まず古い token を無効にし、スクリーンショット、ログ、変換サイトに残ったコピーを削除してください。

  • サブスクリプションの安全管理
  • Token
  • プライバシー
  • ログの機密情報を除去する
目次

漏えいしたものが、サブスクリプションリンク、設定本文、コントローラーの鍵のどれかを先に確認する

サブスクリプションリンクは、一般的なダウンロードアドレスではありません。URL 内の token だけでノード設定全体を繰り返し取得できる場合があります。公開チャット、スクリーンショット、サポートチケット、オンライン変換サイトへ貼り付けた場合は、通信量に異常が出るまで待たず、認証情報の漏えいとして対処してください。

公開された範囲も確認する必要があります。サブスクリプション URL だけなら、通常はリンクをリセットすることで以後のダウンロードを止められます。完全な YAML も公開された場合、サーバーアドレス、UUID、パスワード、秘密鍵がすでに含まれている可能性があり、サブスクリプションの token だけを変えても、その古い設定は無効になりません。Dashboard の secret とサービスサイトのアカウントパスワードは別の認証情報なので、それぞれ変更する必要があります。

公開された内容と対応範囲

公開された内容第三者が取得できる可能性があるもの必須の対応
完全なサブスクリプション URL設定を継続的にダウンロードまたは更新されるサブスクリプションリンクをリセットまたは失効させ、すべてのクライアントを更新する
元の YAML または QR コードファイル内にすでに含まれるノードの認証情報提供元へ連絡し、ノードの認証情報を変更する必要があるか判断してもらう
サービスサイトのアカウントプラン、デバイス、支払い、サブスクリプションを管理する権限パスワードを変更し、セッションからログアウトして、利用可能な二要素認証を有効にする
external-controller secretポートへ到達できる場合に Mihomo を制御するsecret を変更し、待ち受け範囲とファイアウォールをさらに制限する

まず以前の認証情報を無効にしてから、投稿とスクリーンショットを削除する

漏えいを発見したら、最初にサブスクリプションサービス自身の管理画面を開き、「サブスクリプションをリセット」「サブスクリプションアドレスを更新」「リンクを失効」などの操作を探します。管理画面に該当項目がなければ、すぐサービス提供元へ連絡し、以前の URL を無効にするよう依頼してください。公開メッセージを削除するだけでは不十分です。ボット、ブラウザーキャッシュ、第三者がすでにリンクを保存している可能性があります。

リセット後、新しいリンクはまずパスワードマネージャーへ保存し、すぐすべてのデバイスへ送らないでください。クライアント一台で新しいアドレスから更新できることを確認し、その後サービスの管理画面または管理されたローカル環境で以前のアドレスを確認します。以前のアドレスは 401、403、404、無効を示すメッセージのいずれかを返すか、元の設定を返さない状態である必要があります。完全な内容をまだダウンロードできる場合、失効処理は終わっていません。ターミナルコマンド、スクリーンショット、ブラウザーのアドレスバーへ、完全な token の二つ目のコピーを残さないでください。

緊急対応の順序

  1. 必要最小限の証拠を保存する

    漏えいした時刻、場所、公開された種類を記録し、完全なリンクは転送しない。

  2. 以前の URL を失効させる

    サービスの管理画面でリセットする。自分で操作できる項目がなければ提供元へ連絡する。

  3. 以前の URL が無効になったことを確認する

    ステータスと設定がまだ返るかどうかだけを確認し、レスポンス本文を公開ログへ書き込まない。

  4. デバイス一台を更新する

    新しいリンクが正常だと確認してから、ほかのクライアントを置き換える。

  5. 公開されているコピーを削除する

    投稿、サポートチケットの添付、スクリーンショット、コードスニペットを取り下げ、それ以上の拡散を抑える。

コピーした経路を一通り確認する。元のリンクは一か所だけに残っているとは限らない

トラブルシューティング時の行動を振り返ります。curl コマンドをターミナルのスクリーンショットへ含めなかったか、URL を Git リポジトリ、チャット履歴、クラウドメモ、ブラウザーのブックマーク、CI 変数、オンライン YAML チェッカーへ入れなかったかを確認してください。token を含むクエリパラメーターが、Web サーバーのアクセスログや Shell 履歴に残る場合もあります。

これらのコピーを消去する目的は、以前の token を再び安全にすることではありません。新しいメンバーによる誤使用を防ぎ、検索エンジンやコラボレーションツールに機密情報が長期間表示されるのを避けるためです。Git へコミットした内容は最新のファイルを直すだけでは不十分です。リポジトリの手順に従って履歴を消去し、認証情報を変更してください。履歴の書き換えは、どの方法でも失効処理の代わりにはなりません。

見落としやすい保存場所

  • グループチャット、フォーラム、サポートチケットの添付ファイル
  • スクリーンショット内のアドレスバー、QR コード、ターミナルコマンド
  • Git commit、Issue、CI ログ、環境変数
  • Shell 履歴、クリップボード同期、クラウドメモ
  • オンラインのサブスクリプション変換、YAML 検証、速度テストページ
  • 以前のスマートフォン、コンピューター、アンインストール済みクライアントのバックアップ

完全な設定が外部へ漏れた場合は、ノードの認証情報を単独で利用できるかも確認する

サブスクリプションの token は「設定を取得できるか」を制御します。ノード内の UUID、パスワード、秘密鍵、その他の認証フィールドは「サーバーへ接続できるか」を制御します。後者を含む内容が公開された場合、攻撃者は新しいサブスクリプションを取得できなくても、サービス提供元がノードの認証情報を変更または無効にするまで以前のノードを使い続けられる可能性があります。

通常、利用者はサーバー側のノード認証情報を自分では変更できません。漏えいした時刻と設定の種類をサービス提供元へ伝え、以前のノードが置き換えられるか、異常なデバイスまたは通信量を確認できるかを問い合わせてください。問題を証明するため元の YAML を再送しないでください。マスキングしたノード名、プロトコルの種類、必要な時刻だけを伝えます。

以前のリンクが無効になったことを確認してから、各デバイスへ対応します。まず主要デバイスで以前のサブスクリプション記録を削除し、新しいアドレスを追加して手動更新してください。新しい更新時刻、ポリシーグループ、ノード一覧を確認したら、現在の設定として選択します。ほかのコンピューター、スマートフォン、ルーター、WebDAV 同期のコピーも一台ずつ置き換えてください。一台だけ更新すると、別のデバイスの定期タスクが以前の token へアクセスし続けます。

ルーター上の OpenClash、サーバーの cron、コンテナ環境は見落とされがちです。サブスクリプションの定期更新ログを確認し、以前の URL に対する 401/403 が出続けていないことを確認します。以前のリンクが無効でも、デバイスから一時間ごとにリクエストされている場合は、まだ消去されていない設定があります。

  • 使用中のすべてのデバイスが新しいリンクで更新できる
  • 以前のリンクから元の設定が返らない
  • サービスの管理画面に、認識できないデバイスや異常な通信量がない
  • 定期タスクのログから以前の token へのリクエストがなくなる
  • 同期またはバックアップによって以前のアドレスが再び上書きされない

元のサブスクリプションリンクを、見知らぬ変換サイトへ渡さない

変換サイトは別形式を出力するため、まずサブスクリプションの URL を読み込み、通常は設定全体もダウンロードする必要があります。つまり、サイト運営者は token、ノードアドレス、ノードの認証情報を確認できる立場にあります。ページで HTTPS が使われていても、保護されるのは転送中の通信だけです。サイトが内容を記録、キャッシュ、再利用しない保証にはなりません。

クライアントへ直接インポートできる場合、先に変換する必要はありません。形式が本当に異なる場合は、サブスクリプションサービス自身が提供する変換機能を優先するか、自分が管理するデバイスでレビュー可能なローカルツールを実行してください。その場合も、出力リンクが推測可能な公開形式でないか、サービスが履歴を保存するか、以前の token をいつでもリセットできるかを確認する必要があります。

変換が必要な場合の選び方

利用方法リスクの評価推奨
クライアントへ直接インポートする元の URL を、自分が使用するクライアントだけへ渡す第一候補
サービス提供元の公式変換機能提供元は元からサブスクリプションを管理しているが、出力リンクと保存規則は確認する必要がある説明を確認したうえで使用する
自分で導入した変換ツールデータを自分の管理下に置けるが、更新とアクセス制御を自分で担う必要があるサービスを保守できる利用者に適している
検索で見つけた無料の変換サイト運営者、ログ、保存期間がいずれも不明確元のリンクを送信しない

ログやスクリーンショットを公開する前に、トラブルシューティングに本当に必要な情報だけを残す

サブスクリプションの更新に失敗した場合、通常共有する必要があるのは、クライアントとカーネルのバージョン、HTTP ステータスコード、Content-Type、エラー原文、発生時刻だけです。URL はドメインとパスの種類を残しても構いませんが、token、query パラメーター、ユーザー名、パスワード、ノードアドレスは伏せてください。YAML エラーは前後の構造だけを抜粋し、実際の値を example.com と REDACTED へ置き換えます。

ログには Authorization、UUID、Dashboard secret、内部ネットワークのアドレスが含まれることもあります。機密情報を除去した後にもう一度全体を読み直し、ブラウザーのアドレスバーだけを隠して済ませないでください。QR コードとターミナル履歴から、同じリンクが再び公開される場合もあります。

公開サポートチケットに適した記述例
客户端:Clash Verge Rev x.y.z
内核:Mihomo x.y.z
订阅域名:example.com
token:REDACTED
HTTP 状态:403
错误:subscription update failed at 10:32

サブスクリプションをパスワードと同じように管理すれば、次回は記憶を頼りに復旧する必要がなくなる

保存する
元のリンクはパスワードマネージャーへ保存し、設定のバックアップを暗号化して、token をファイル名に書き込まない。
同期する
WebDAV、クラウドストレージ、CI では個別の認証情報と最小権限を使用し、共有範囲を確認する。
スクリーンショット
アドレスバー、QR コード、設定の詳細を切り取ってから、サポートチケットへアップロードする。
ログ情報
URL の機密情報除去を有効にする。公開前に token=、Authorization、password、uuid などのフィールドを検索する。
退職またはデバイスの交換
以前のデバイスの認証を解除してローカル設定を消去し、コピーの行方を確認できない場合はサブスクリプションをリセットする。

事故対応が本当に完了したと判断できるのは、以前のサブスクリプションが利用できず、必要なノード認証情報が変更され、正規のすべてのデバイスが新しいリンクを使用し、公開場所と自動タスクから以前の値がなくなった時点です。「投稿を削除した」だけでは完了していません。