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

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

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

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

サブスクリプションのアドレスがグループチャット、スクリーンショット、変換サイトに渡ると、単にアドレスを見られるだけでは済みません。完全なリンクで設定を繰り返しダウンロードされる可能性があります。リンク、ノードの認証情報、サイトのアカウントのどれが漏れたかを区別し、それぞれの旧情報を無効にしてから、各端末とバックアップのコピーを確認します。

サブスクリプションが流出したら、古いリンクを無効にする

サブスクリプション提供元の管理画面でリセットまたは失効の操作を探し、旧 URL の token を無効にします。自分で操作できる項目がなければ提供元へ連絡してください。公開メッセージを削除しても、相手が保存済みのコピーは回収できません。その中のノード認証情報は次の節に沿って個別に確認します。

サービスの管理画面、または自分で管理するローカル環境で確認します。古いアドレスが無効と表示されるか、元の構成を返さなくなっている必要があります。完全な内容をまだダウンロードできる場合、失効処理は完了していません。古いリンクを検索エンジン、見知らぬ変換サービス、公開のサポートチケットに再送信しないでください。

完全な YAML も公開した場合、その中の UUID、パスワード、秘密鍵が引き続き使える可能性があります。サブスクリプションの token を変更しても、古いノードの認証情報は無効になりません。Web サイトのアカウントのパスワードと Dashboard secret も、それぞれ別に対処する必要があります。

構成全体、Web アカウント、コントローラーの認証情報が流出した場合の対処

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

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

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

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

サービスの管理画面では、操作が「サブスクリプションをリセット」「サブスクリプションのアドレスを更新」「リンクを失効」などの名前になっている場合があります。操作後、新しいリンクをパスワードマネージャーに保存します。古いアドレスは 401、403、404、無効という表示を返すか、元の構成を返さなくなっている必要があります。確認するのはステータスと構成がまだ返されるかどうかだけにし、応答内容を公開ログに書き込まないでください。

メイン端末で古いサブスクリプションの登録を削除し、新しいアドレスを追加して手動で更新します。更新日時が新しくなり、ポリシーグループとノード一覧が正常に読み込まれたら、その設定を有効にします。この端末で新しいリンクから更新できることを確認してから、ほかのパソコン、スマートフォン、ルーター、WebDAVの同期コピーを順に置き換えます。一台だけ更新すると、別の端末の定期処理が古いtokenへアクセスし続けます。

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

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

チャット、リポジトリ、ログ、同期先に残ったコピーを削除する

流出した日時、場所、情報の種類を記録し、完全なリンクを再転送しないでください。投稿、サポートチケットの添付ファイル、スクリーンショット、コード断片を削除し、さらなる拡散を抑えます。

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

コピーを削除しても、古いtokenが再び安全になるわけではありません。新しいメンバーによる誤使用や、検索エンジン・コラボレーションツールでの機密情報の長期表示を防ぐためです。Gitにコミットした場合は、まず認証情報を変更または失効させます。最新ファイルの変更だけでは履歴の内容は消えません。履歴を削除するかはリポジトリの手順と漏えいした内容に応じて判断し、履歴の書き換えを失効処理の代わりにしてはいけません。

見落としやすい保存場所

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

サブスクリプション変換サイトは何を取得できるのか

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

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

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

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

サポートチケット、ログ、スクリーンショットの機密情報を隠す方法

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

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

ターミナルのコマンド、スクリーンショット、ブラウザーのアドレスバーに完全な token のコピーを残さず、流出した URL をオンラインの YAML チェッカーに貼り付けないでください。

公開サポートチケットに適した記述例
客户端: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 などの項目を検索し、スクリーンショットと QR コードも目視で確認してください。
退職またはデバイスの交換
以前のデバイスの認証を解除してローカル設定を消去し、コピーの行方を確認できない場合はサブスクリプションをリセットする。

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