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

Clash Verge RevのWindowsサービス権限昇格にどう対処する?

Clash Verge RevのWindowsサービスには権限昇格リスクがあります。GHSA-99qg-xv7m-jf4vでは<=2.5.4が影響対象で、修正済みビルドはv2.5.4+autobuild.0908.bbab52dです。

  • Clash Verge Rev
  • Windowsサービス
  • 権限昇格
  • GHSA-99qg-xv7m-jf4v
  • セキュリティ更新
目次

どのWindows環境が影響を受ける?

Clash Verge RevのGHSA-99qg-xv7m-jf4vが説明するのは、Windowsシステムサービスにおけるローカル権限昇格です。権限の低いローカルユーザーまたはプロセスがサービスのアクセス制限を回避し、LocalSystem権限で動くサービスにコードを実行させる可能性があります。アドバイザリはローカルのリスクであり、ネットワーク越しに直接悪用できるものではないと明記しています。

アドバイザリの影響対象は<= 2.5.4、明示された修正済みビルドはv2.5.4+autobuild.0908.bbab52dです。ここでは+autobuildの接尾辞を省けません。通常のv2.5.4と修正済みビルドを、先頭のバージョン番号だけで同じ安全状態とみなさないでください。

対象はClash Verge RevがWindowsにインストールするシステムサービスです。Mihomoのルール、サブスクリプション、プロキシノードの問題ではなく、macOS、Linux、ほかのClashクライアントにそのまま当てはめるものでもありません。システムサービスはGUIとは別に動作し、Clash Verge Revを終了してもバックグラウンドに残る場合があります。ウィンドウやTUNを閉じただけでは停止したと確認できません。

警告表示がない、プロキシが使える、不審なプロセスが見つからない場合でも、旧サービスが動いていないとは限りません。一方、影響対象のバージョンをインストールしただけで悪用されたとも断定できません。まずサービスの有無と稼働状態を確認し、停止、更新、インシデント対応のどれが必要か判断してください。

バージョンとサービス状態の見分け方

確認された状況判断できること今すべきこと
Windowsで通常のv2.5.4以前を使用し、サービスもインストール済みアドバイザリが示す影響対象に該当まずサービスをアンインストールまたは停止し、修正の根拠を確認
完全なビルド番号がv2.5.4+autobuild.0908.bbab52dアドバイザリがこのビルドを修正済みと明記旧サービスが置き換わったことと、実際のサービス状態も確認が必要
v2.5.5以降というバージョン番号しか分からないv2.5.5のリリースノートだけでは、このGHSAの修正を証明できないメンテナーのセキュリティ説明と実際のサービスコンポーネントを確認し、根拠が足りなければサービスを停止したままにする
Windowsにこのサービスが未インストール、またはアンインストール済み現在このサービスが稼働する入口はない停止状態を維持し、ほかに異常の証拠がないか確認
macOS、Linux、またはほかのクライアントこのWindowsサービスのアドバイザリの対象外それぞれのプロジェクトのセキュリティ情報に基づいて判断

バージョンが不明なとき、まずサービスを止めるには?

このWindows PCにClash Verge Revのサービスをインストールしたことがあり、稼働中のものがアドバイザリに記載された修正済みビルドと確認できない場合は、先にTUNをオフにし、システムサービスを停止またはアンインストールしてください。

プロジェクトの設定画面には「サービスをアンインストール」に相当する操作があります。公式ドキュメントでも、Windowsでは設定メニューの仮想ネットワークアダプターの横にある削除アイコンを使用できると説明しています。場所はバージョンにより変わる可能性があるため、現在の画面表示に従ってください。

アンインストール前に、アプリのバージョン、使用中のモード、TUNとシステムプロキシの状態を記録してください。サービスの操作には通常、管理者権限が必要です。職場や学校の端末では権限のある管理者に依頼し、システムディレクトリの権限変更で承認を回避しないでください。

プロジェクトのドキュメントには、GUIを閉じてもサービスプロセスは自動終了しないと明記されています。アンインストール後にPCを再起動し、Windowsの「サービス」管理ツールで該当するClash Verge Revのサービスが再び動いていないことを確認してください。似た名前の別のネットワークサービスを誤って止めないでください。サービスの識別ができない、またはアンインストールに失敗する場合は、その端末で機密情報を扱うのを一旦やめ、管理者にインストールパスを調べてもらってください。

旧サービスを日常利用から外す

  1. 現状を記録

    アプリの完全なバージョン文字列、TUNとシステムプロキシの状態、サービスのインストール状況が分かる画面情報を保存してください。サブスクリプションのアドレスやログ内の秘密情報は公開しないでください。

  2. TUN を無効にする

    Clash Verge Revで仮想ネットワークアダプターモードをオフにし、サービスのアンインストール中にその動作方式へ依存しないようにします。ただし、これだけでサービスが停止するわけではありません。

  3. サービスのアンインストール操作を使用

    設定で「サービスをアンインストール」に相当する項目、または仮想ネットワークアダプター横の削除操作を選び、システムの案内に従って管理者権限を許可します。正体の分からない実行ファイルを手作業で削除しないでください。

  4. 再起動して確認

    Windowsを再起動し、サービス管理ツールで該当サービスが停止していることを確認します。まだ動いている場合はTUNをオフのままにし、管理者に対応を依頼してください。

  5. 基本的な通信を確認

    一時的に通信が必要なら、このサービスに依存しない動作確認済みのシステムプロキシ、または信頼できる別の方法を使い、実際のHTTPSリクエストを一度行ってください。

実際のビルドと稼働中のサービスをどう確認する?

Clash Verge Revの「このアプリについて」またはバージョン情報で完全な文字列を記録し、先頭の2.5.4だけを書き写さないでください。GHSAの修正済みビルドと照合するときは、主バージョン、+autobuild接尾辞、末尾の識別子まで一致している必要があります。短いバージョンしか表示されないなら、情報が足りないためサービスを停止したままにします。

続いてWindowsの「サービス」管理ツールで該当サービスの有無と稼働状態を調べ、実行ファイルのパスが現在のClash Verge Revのインストール先を指すことを確かめます。プロジェクトのドキュメントではサービスを独立プロセスと説明しているため、GUIを更新または終了しただけでは、旧コンポーネントがバックグラウンドに残っていない証明になりません。バージョン確認のためにサービスのローカル通信インターフェースへ接続したり、テストリクエストを送信したりしないでください。

Clash Verge Rev v2.5.5の公式Releaseには、サービスのインストール、動作、互換性に関する複数の修正が記載されています。しかし、そのページにはGHSA-99qg-xv7m-jf4vの修正と明記されていません。「v2.5.5はより新しい安定版」という理由だけで、アドバイザリが示す正確な修正の根拠に代えることはできません。メンテナーが後で新しい修正済みバージョン範囲を公開した場合は、その公式情報で判断を更新してください。

「このアプリについて」にv2.5.4だけが表示され、ビルドの接尾辞がない

まず影響対象として扱い、完全なビルドまたはインストール元を確認できるまでシステムサービスを停止したままにします。

アプリは更新済みだが、サービスが旧インストール先を指している

TUNをオンにせず、プロジェクトの公式なサービスのアンインストールまたは修復手順で旧コンポーネントを処理してください。

サービス管理ツールに該当サービスが見つからない

その結果を記録し、リスク確認のために旧サービスを再インストールしないでください。

サービスのパスが不明、または署名が一致しない

そのコンポーネントの使用を中止し、管理者またはセキュリティツールに調査を委ねてください。通常の更新として扱わないでください。

サービスを使い続けるには、どのビルドに更新すべき?

現時点でGHSAに記載されているv2.5.4+autobuild.0908.bbab52dを、明確に照合できる修正済みビルドとして扱います。インストーラーはclash-verge-rev/clash-verge-revプロジェクトの公式配布経路からのみ入手し、完全なファイル名、システムアーキテクチャ、配布ページに記載された照合情報を確認してください。

そのビルドについて検証可能な公式アセットが見つからない場合は、旧サービスをアンインストールした状態を保ち、プロジェクトのメンテナーが独立に照合できる更新を示すのを待ってください。検索広告、ファイル共有、第三者が再パッケージしたファイルは使わないでください。

公式のv2.5.5 Releaseは新しいインストーラーを探す入口になりますが、そのリリースノートには、このGHSAの修正が直接明記されていません。v2.5.5以降の安定版を選ぶ場合は、メンテナーの告知、対応するサービスコンポーネント、修正コミットが含まれるかを別途確かめてください。根拠が不十分な間は、高権限のサービスを再び有効にしないでください。

インストール前に信頼できるProfileとアプリ設定をバックアップし、元のインストーラーの入手元とバージョン記録を保存してください。アプリ更新後は、プロジェクトの公式手順で旧サービスを処理して新サービスをインストールし、実際に稼働するサービスコンポーネントを再確認します。更新プログラムの「完了」表示だけで確認を終えないでください。旧バックアップからサービスの実行ファイルだけをシステムディレクトリにコピーし直してはいけません。

更新時に照合できる根拠を残す

  1. 公式ビルドを確認

    候補パッケージの完全なバージョンをGHSAのv2.5.4+autobuild.0908.bbab52dと照合します。別のバージョンには、独立した公式の修正根拠が必要です。

  2. ダウンロード元を照合

    プロジェクトの公式Releaseで正しいWindowsアーキテクチャを選び、アセット名とページに記載された照合情報を保存します。

  3. 信頼できる設定をバックアップ

    入手元を確認できたProfileと必要な設定だけをバックアップします。診断用に旧インストールの記録は残しますが、再び有効化するために旧サービスを保存しないでください。

  4. インストールしてサービスを処理

    現在のアプリバージョンに対応した公式案内に従ってインストールとサービスの置き換えを行い、旧サービスが以前のパスから動き続けていないことを確認します。

  5. 必要な機能を再び有効にする

    修正の根拠と実際のサービス状態の両方を確認してから、サービスモードまたはTUNを再び有効にしてください。

サービス停止と更新の成功をどう確認する?

当面サービスを使わない場合は、再起動後にサービスが稼働しておらず、TUNもオフのままであることを確認します。そのうえで、サービスに依存しない方法で実際のHTTPSサイトへアクセスしてください。プロキシが使えることは通信の復旧を示すだけで、サービス状態の確認には代わりません。

アドバイザリで明示された修正済みビルドをインストールした場合は、完全なビルド番号、現在のサービスファイルのパス、サービスモードの稼働状態、実際の接続を合わせて確認します。TUNが必要なら、TUNの通信も別に確認してください。TUNが不要なら、テストのためだけにサービスを再インストールする必要はありません。

脆弱性の再現スクリプトを実行したり、低権限アカウントを模擬作成したり、出所不明のWebページからローカルのインターフェースにアクセスさせたりしないでください。ユーザー側の安全な更新確認には、バージョン、入手元、サービス状態、通常の通信リクエストで足ります。侵入の有無は別途、システム上の証拠で判断する必要があります。

攻撃コードを使わない確認チェックリスト

  • アプリの完全なバージョン、インストール元、現在のサービス状態を保存した
  • 旧サービスをアンインストールまたは停止した。再インストールする場合は修正済みビルドの公式な根拠があり、旧パスから動作していない
  • 再起動後のサービス状態が想定どおりで、旧コンポーネントが自動で復活していない
  • TUNは必要であり、修正の根拠を確認した場合に限って有効にした
  • システムプロキシなど、実際に使う通信方法でHTTPSリクエストに成功した
  • ディレクトリ権限の変更、旧サービスの再インストール、PoCの実行で無理に「合格」扱いにしていない

ローカルのプログラムに悪用された疑いがある場合は?

影響対象のバージョンと稼働中のサービスは、悪用可能な条件があることを示すだけで、誰かがSYSTEM権限を取得した証明ではありません。未知の高権限プロセス、セキュリティソフトの警告、不審なスケジュールタスク、資格情報の改変など、時系列で裏付けられる異常もある場合は、端末への侵入の可能性として対応してください。

まず端末をネットワークから切り離し、旧サービスの使用をやめます。完全なバージョン、サービスのパス、異常の開始時刻、警告、不審なプロセスを記録してください。元のログと設定は保全し、共有用には機密情報を伏せたコピーを作ります。「クリーンアップ」のために見覚えのないファイルをすぐ削除しないでください。影響範囲を調べる証拠かもしれません。

Windowsまたは組織が認めるセキュリティツールでスキャンし、管理者に永続化の仕組みや高権限の活動を調べてもらいます。サブスクリプションtoken、ノードのパスワード、ブラウザーセッション、クラウドの資格情報が漏れた可能性がある場合は、別の信頼できる端末から旧資格情報を無効化して再発行してください。端末の完全性を確認できなければ、信頼できるインストールメディアからシステムを再構築し、安全と確認した設定だけを復元します。

更新に失敗したとき、旧サービスを有効にせず通信を戻すには?

修正済みビルドを端末にインストールできない、サービスが起動しない、またはTUNが動かない場合は、旧サービスを停止したままにします。Clash Verge Revのサービスを使わない方法とシステムプロキシ、または入手元を確認した別のクライアントで必要な通信を復旧してください。システムプロキシはすべてのアプリを対象にするわけではないため、復旧後は実際の用途で確かめます。

通信がまだできない場合は、システムプロキシが稼働中のローカルポートを指しているか確認し、次に現在のProfileとノードを調べます。TUNを戻すために旧バックアップからサービスファイルをコピーしたり、アドバイザリの影響対象ビルドへ戻したり、サービスディレクトリのアクセス権限を緩めたりしないでください。

更新時の不具合をプロジェクトに報告するときは、OSバージョン、CPUアーキテクチャ、アプリの完全なビルド番号、サービス状態、最初のエラー、機密情報を伏せたログを添えてください。GHSAの修正を明確に裏付けられない新しいインストーラーしか入手できないなら、その高権限サービスを当面インストールせず、メンテナーの説明を待ってください。

安全なロールバックの完了基準

  • 影響対象またはバージョン不明のシステムサービスは再稼働していない
  • TUNはオフで、基本的な通信またはシステムプロキシを実際のリクエストで確認済み
  • 信頼できるProfileを保全し、旧サービスの実行ファイルをバックアップから戻していない
  • インストール失敗の原因と完全なビルド番号を記録し、公開する報告から機密情報を除いた
  • 今後サービスを再び有効にする前にも公式の修正根拠を確認する

アプリの更新をサービスの修正と取り違えないため、何を記録すべき?

Clash Verge Revのプロジェクト文書では、高権限サービスはGUIとは独立したバックグラウンドプロセスとされています。今後の更新ごとに、アプリの完全なビルド番号、サービスのインストール有無、サービスファイルの実際のパス、TUNの有効状態、対応する公式Releaseまたはセキュリティアドバイザリを記録してください。主バージョン番号だけでは通常のv2.5.4とアドバイザリで指定された修正済みビルドを区別できません。

GHSAにはWindowsでのローカル権限昇格の影響範囲と明確な修正済みビルドが示されています。一方、v2.5.5 Releaseには新しいバージョンとサービス関連の変更が記載されているものの、そのGHSAへの直接の言及はありません。両者が示す内容を混同せず、「新しいバージョンをインストールした」ことをそのまま「アドバイザリの修正を確認済み」と書かないでください。

今後、上流がGHSAの修正済みバージョン範囲を更新したり、サービス専用のセキュリティ説明を公開したりした場合は、新しいプロジェクトの一次資料で再確認してください。管理対象PCではサービス更新を管理者承認のソフトウェア更新手順に組み込み、アンインストール済みの旧サービスが自動で再導入されていないか定期的に確認するとよいでしょう。

参考資料