Claude Code拡張機能の改ざんによりmacOSにSSHバックドアが設置
Phorionは、Cursor Marketplaceで配布されていた公式「Claude Code for VS Code」バージョン2.1.312および2.1.313において、永続的なSSHアクセスをインストールするバックドアを発見しました。
英語の原文から自動翻訳されました。
Phorionのセキュリティ研究者らは、Cursor Marketplaceを通じて配布されている公式「Claude Code for VS Code」拡張機能に影響を与えるサプライチェーン攻撃を確認しました。悪意のあるバージョンである2.1.312と2.1.313では、読み込み直後にmacOS、Linux、Windows環境へ永続的なSecure Shell(SSH)バックドアを注入します。
この事案は、高い権限で実行され、システム設定を静かに変更しうる拡張機能が存在する開発者ツールエコシステムのリスクを浮き彫りにしています。これらの特定のバージョンを使用している組織は、すべてのインストールを潜在的な侵害として扱い、インシデント対応手順を開始する必要があります。
何が起きたか
今回の攻撃は、VS Code互換の拡張機能を独自マーケットプレイスで提供しているエディタ「Cursor」を利用する開発者を標的としています。Phorionは、Claude Codeバージョン2.1.312および2.1.313のバンドルにペイロードが注入されていることを発見しました。このコードは拡張機能の標準的なアクティベーションロジックよりも先に実行されるため、ユーザーがツールとやり取りをしなくてもマルウェアが動作してしまいます。Cursorはこの後、該当バージョンをマーケットプレイスから削除しました。
ペイロードの主目的は、被害者のマシンへの長期的なインタラクティブなアクセスを確立することです。これは、SSH鍵を設置し、IPアドレス134.209.82.225にある攻撃者管理サーバーへのリバーストンネルを作成することで達成されます。マルウェアには主要なデスクトップオペレーティングシステムすべて向けのロジックが含まれていますが、分析は実装の詳細や他のプラットフォームに見られるバグを考慮し、macOSに焦点を当てています。
拡張機能は統合開発環境(IDE)およびユーザーの権限で動作するため、バックドアはローカルソースコード、ファイル、開発者ツールへの即時アクセス権を取得します。このレベルのアクセスにより、攻撃者は機密情報を収集し、IDEを閉じた後も永続性を維持することが可能になります。
仕組み
感染は、ミニファイされたextension.jsファイルの先頭に追加された即時実行関数式から始まります。このスクリプトは標準的なNode.jsモジュールをインポートし、ファイルシステムを操作したりシェルコマンドを実行したりします。最初のアクションは、~/.sshディレクトリの存在を確認し、攻撃者が制御するEd25519公開鍵をauthorized_keysファイルに追記することです。この鍵にはコメントとしてsvc-telemetryが付与されていますが、検出にあたってはコメントではなく鍵の指紋(fingerprint)に頼るべきです。
次に、スクリプトはSSHデーモンの有効化を試みます。macOSでは、systemsetup -getremoteloginを使用してRemote Loginの状態を確認します。しかし、ここには重大なバグが存在します。このコマンドはステータスの読み取りに管理者権限を必要とするため、標準ユーザーとして実行すると「Off」と返す代わりにエラーメッセージを返します。その結果、スクリプトは有効化ステップをスキップしてしまいます。もしRemote Loginがすでに有効になっていた場合、バックドアは意図通りに動作しますが、そうでない場合はユーザーが手動で有効化するまで受信アクセス経路は破綻したままとなります。
アクセスを維持するため、マルウェアは攻撃者サーバーへのアウトバウンドなリバースSSHトンネルを確立します。これには、一時ディレクトリに保存されているsvc-telemetry-tunというラベル付きの埋め込み秘密鍵が使用されます。トンネルは、攻撃者サーバー上の動的に割り当てられたポートからのトラフィックを、被害者のlocalhostのポート22へ転送します。これにより、オペレーターは事前に仕込まれた公開鍵を使ってマシンへ接続し戻ることができます。接続はautosshまたはリトライループによって維持され、ネットワークの中断があっても永続性が保たれます。
主要な詳細
- 影響を受けるバージョン: Cursor Marketplace上の「Claude Code for VS Code」バージョン2.1.312および2.1.313。
- 攻撃者インフラ: コマンドおよびビーコンは、IPアドレス134.209.82.225のポート22および8099へ送信されます。
- 永続化メカニズム: macOSでは、マルウェアは再起動後も生き残るために
~/Library/LaunchAgents内にcom.apple.sysmond.plistという名前のLaunchAgentを作成します。 - 偵察データ: ペイロードはホストメタデータ(ホスト名、OS、
KEY、TOKEN、AWSなどのパターンに一致する環境変数名など)をビーコン送信します。 - macOSのバグ:
systemsetupコマンドのエラー処理の不備により、管理者権限なしで実行された場合、macOSでのRemote Loginの有効化に失敗します。 - 検出の課題: マルウェアはNode.jsファイルAPIを通じて
authorized_keysを直接変更するため、echoやteeなどのコマンドを探すシェールベースの監視ルールを回避します。
なぜ重要なのか
ソフトウェアエンジニアリングチームにとって、この事案は開発環境におけるサプライチェーンの脆弱性を強調するものです。IDE拡張機能は、効果的に機能するために広範な権限を必要とすることが多い信頼できるコンポーネントです。こうしたコンポーネントが侵害されると、組織の最も機密性の高い資産、すなわちソースコードと認証情報への直接的な経路を提供してしまいます。シークレットを含む環境変数の名前を流出させるマルウェアの能力により、攻撃者はシークレット自体を最初に盗むことなく、高価値のターゲットを優先的に選定できます。
さらに、使用される永続化メカニズムは、典型的な修復手順を生き残るほど洗練されています。単に拡張機能をアンインストールしてもバックドアは除去されません。なぜなら、マルウェアは独立したシステムサービスやcronジョブをインストールするからです。つまり、標準的なパッケージ管理アクションだけではクリーンアップには不十分です。セキュリティチームは、開発者ツールが本番インフラストラクチャと同じレベルの精査を必要とする主要な攻撃ベクトルになったことを理解する必要があります。
対処方法
- インストール済み拡張機能の監査: すべての開発者マシンで「Claude Code for VS Code」バージョン2.1.312または2.1.313を即座に確認し、見つかった場合はアンインストールしてください。
- 永続化アーティファクトの確認: macOSシステムで
~/.config/.smt、~/.config/.smtk、~/Library/LaunchAgents/com.apple.sysmond.plistを検索してください。 - SSH設定の見直し:
~/.ssh/authorized_keys内の未知の公開鍵、特にコメントがsvc-telemetryのものや見慣れないEd25519鍵を調査してください。 - ネットワークトラフィックの監視: IPアドレス134.209.82.225へのアウトバウンドSSH接続や、同じIPのポート8099へのHTTP POSTリクエストを探知してください。
- プロセスログの分析: Endpoint Security Frameworkテレメトリを使用して、SSH設定ファイルへの書き込みやLaunchAgentの作成を行うIDEヘルパープロセスを検出してください。
- 認証情報のローテーション: 影響を受けたマシンが特定された場合、侵害を想定し、それらのデバイスに保存されているすべてのシークレット、APIキー、SSH鍵をローテーションしてください。



