CursorのClaude Code拡張機能バックドア:確認と復旧

Cursorのマーケットプレイスで配布された改変版Claude Code拡張機能の影響を確認します。対象バージョンと導入期間、SSHキー、常駐化の痕跡を調べ、適切な権限で公式の除去スクリプトを実行します。除去結果の限界を確認し、影響端末からアクセスできた認証情報を失効させてから、確認済みの配布元から再インストールします。

目次
CursorのClaude Code拡張機能バックドア:確認と復旧

対象期間中にCursor経由でClaude Code拡張機能 2.1.312 または 2.1.313 を導入した場合は、作業再開前に端末を確認してください。悪意のある痕跡が見つかった端末は隔離し、バックドアの痕跡を除去します。その端末からアクセスできた認証情報は、信頼できる別の端末で失効・更新してください。拡張機能の更新だけでは、バックドアが継続して動作する仕組みは除去できません。

自分の環境は対象ですか?配布元・バージョン・プラットフォーム・時刻を確認

インストールや自動更新の記録を、次の表にある配布元、バージョン、プラットフォーム、期間と照合してください。これらの条件が一致する場合は、影響の有無を調査します。該当する痕跡が見つかった場合も、導入時刻にかかわらず調査が必要です。2026-11-02時点で、Cursorのセキュリティ通知は次の範囲を挙げています。

確認項目公表された対象範囲
拡張機能Cursor VS Code Extension Marketplaceで配布された Anthropic.claude-code
バージョン悪意のある変更が加えられた 2.1.312 と 2.1.313
プラットフォームmacOSとWindows
インストールまたは更新の期間2026-10-29の約02:27–13:35 PDT
同じ期間をUTCで表した場合2026-10-29の約09:27–20:35 UTC

Cursorによると、これらの改変済みパッケージはAnthropicが開発したものではありません。調査では、手動でインストールした記録だけでなく、自動更新で導入された可能性も確認してください。現在のバージョン表示だけでは、対象期間にどのバージョンが存在したかは判断できません。事件後に更新されている可能性があるため、当時の導入記録と合わせて確認します。

影響が疑われるCursorは閉じたままにしてください。導入記録を確認するか、拡張機能を読み込まずに、ディスク上の package.json などのメタデータを調べます。バージョン、プラットフォーム、配布元、導入時刻を記録してください。

拡張機能の確認に claude --version を使わないでください。Anthropicのドキュメントでは、拡張機能には独自のCLI、つまりコマンドラインツールが同梱されると説明しています。ターミナルでは、別途インストールしたCLIが動作している可能性があります。

Microsoftによる独立した分析では、Microsoft Visual Studio Marketplaceとnpmからの配布は、この事件の影響を受けていないと確認されています。バージョン番号だけで、正規のパッケージと改変されたコピーを見分けることはできません。

Linuxについては別に判断する必要があります。Phorionの分析はLinux向けのコードを確認していますが、Cursorが確認した配布範囲はmacOSとWindowsです。Linuxで一致する痕跡が見つかった場合は調べてください。ただし、Linuxでの配布が確認されたとは扱わず、macOS用の除去スクリプトも実行しないでください。

公式コマンドでSSHキーを確認する

影響を受けたアカウントで確認し、導入履歴や常駐化の証拠と合わせて結果を判断してください。常駐化とは、バックドアが継続して動作したり、再び起動したりするための仕組みです。該当するマーカーが見つかると、svc-telemetry key found と表示されます。

以下はCursorが公開したコマンドです。見つからないというメッセージだけでは、端末が一度も影響を受けていない証拠にはなりません。

macOS:Bashで確認

影響を受けたユーザーとして、ターミナルで次を実行してください。

grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"

このコマンドが探すのは、1つのファイル内にある特定のコメントだけです。-s オプションを指定しているため、ファイルが存在しない場合や、ファイルを読み取れない場合のエラー表示も抑制されます。画面に「見つからない」と出ただけでは、一致がなかったのか、読み取り自体に問題があったのかを区別できません。ファイルを読めない場合は原因を解消し、導入履歴や他の常駐化の痕跡も含めて判断してください。

Windows:PowerShellで確認

影響を受けたユーザープロファイルを対象に、Cursorの確認コマンドを実行してください。

$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ }
if ($files -and (Select-String svc-telemetry $files)) { "svc-telemetry key found" } else { "No key found; machine not impacted" }

管理者用の共有ファイルを調べる際にアクセスエラーが出た場合は、読み取れる状態にして確認してください。管理者権限を得るために別のアカウントでPowerShellを開いた場合、$HOME が指すのはその別アカウントのホームです。その場合も、Cursorが動作していた元のユーザープロファイルが調査から抜けないようにしてください。

マーカーが見つかった場合は端末を隔離し、キー自体を照合します。Cursorは、攻撃者のアクセスを許可するために追加されたキーのフィンガープリントを次のように公開しています。

SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk

macOSでは、次のOpenSSHのフィンガープリント確認コマンドで各エントリを照合できます。これは読み取り専用で、ファイルを変更しません。

ssh-keygen -lf "$HOME/.ssh/authorized_keys" -E sha256

ファイルの解析に失敗した場合は、フィンガープリントを確認できていない状態です。コメントだけが異なる場合も、キーが別物だとは判断しないでください。通知に掲載されたキーの内容を使って照合します。除去スクリプトは、悪意のあるキーが既存の行の末尾に追加されている場合も考慮しています。攻撃者のキーと正規のキーが同じ行に並んでいる可能性があるため、一致した行を無条件に丸ごと削除しないでください。

常駐化の痕跡を調べ、証拠を保存する

端末の除去作業が完了したと判断する前に、以下のファイルと自動起動の設定を調べてください。これらは調査の手掛かりです。名前が一致したものを、内容を確認せずにすべて削除するための一覧ではありません。

対象Cursorの通知にある痕跡
macOSのファイル~/.config/.smt、~/.config/.smtk、~/Library/LaunchAgents/com.apple.sysmond.plist
macOSの自動起動ラベルが com.apple.sysmond のLaunchAgent
Windowsのファイル%USERPROFILE%\.config\smt.cmd、%USERPROFILE%\.config\smtk
Windowsの自動起動スケジュールされたタスク SysMon。代替の起動スクリプトは %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd
一時ファイルmacOSでは $TMPDIR/.stk_<10 hex>、Windowsでは %TEMP%\.stk_<10 hex>
ネットワーク134[.]209[.]82[.]225 への接続。TCP 22 のSSHと、ポート 8099 のHTTP /beacon を含みます

接尾辞の <10 hex> はファイル名のパターンを示しています。山括弧そのものが名前に含まれるという意味ではありません。自動起動の項目を削除する前に、設定された実行内容と関連するファイルを確認してください。

チームで管理する端末では、インシデント対応の手順に沿って証拠を保存します。拡張機能のパッケージ、関連するキーのファイル、自動起動の設定、端末のログを残してください。悪意のあるコードの実行やバックドアの設置を示す証拠がある端末は隔離します。エディターを閉じるだけでは、独立して動くスクリプトは除去できません。

Phorionによると、挿入されたコードはNodeがモジュールを読み込んだ時点で実行されます。通常の activate コールバックが呼ばれるより前です。このコードの実行に、Claudeへのプロンプト送信は必要ありません。

Cursorは攻撃者のサーバーを停止させたと報告しています。報告された接続経路は中断されますが、端末内の痕跡が消えるわけではありません。SSHの有効化が失敗していても、キーの追加、常駐化ファイルの作成、端末情報の収集まで失敗したとは判断できません。

Cursorの除去スクリプトを実行し、結果と範囲を確認する

必要な証拠を保存してから、Cursorの通知にリンクされたスクリプトを使ってください。ダウンロードしたファイルは実行前に内容を確認し、エディターを閉じておきます。

スクリプトは、改変された拡張機能のディレクトリ、トンネルのプロセス、作成されたファイル、常駐化の仕組み、攻撃者の認証用キーを対象にします。APIの認証情報は別途失効させてください。スクリプトの除去結果だけで判断せず、端末でどのような活動があったかも確認します。

macOSでの除去

CursorのmacOS用除去スクリプトをダウンロードします。保存したフォルダーから、影響を受けたユーザーごとに実行してください。sudo は付けません。

bash remediate-macos.sh
echo "Exit status: $?"

スクリプトはrootとしての実行を拒否します。対象は com.apple.sysmond のLaunchAgent、一致するプロセスとファイル、svc-telemetry を含む拡張機能のパッケージです。攻撃者のキーは、テキストの完全一致で除去します。

Windowsでの除去

CursorのWindows用除去スクリプトをダウンロードします。Run as Administrator(管理者として実行)でPowerShellを開き、保存先のフォルダーから次を実行してください。

powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1
$LASTEXITCODE

スクリプトは登録済みのユーザープロファイルを順に処理します。悪意のあるタスクの実行内容、一致するプロセス、拡張機能のディレクトリ、作成されたファイル、プロファイル内の認証用キーが対象です。

除去後は、C:\ProgramData\ssh\administrators_authorized_keys が存在する場合に、別途もう一度確認してください。攻撃者のキーが残っていれば、管理者が該当する不正なエントリだけを削除します。正規のキーは保持してください。

終了コードがゼロ以外、または incomplete と表示された場合は、追加の対応が必要です。報告された失敗を解消し、該当する確認をもう一度実行してください。

終了コード 0 を、端末全体の安全性が確認されたという意味で扱わないでください。この値が示すのは、スクリプト自身の確認項目について、残っている問題を報告しなかったということだけです。独自に指定した拡張機能の保存先も、公表された痕跡と照合してください。ローカルのSSHサービス設定は別に確認し、意図した構成と一致することを確かめます。

痕跡が再び現れた場合、予期しないSSHアクセスがある場合、またはその後の活動を説明できない場合は、隔離を継続してください。認証情報を端末に戻す前に、インシデント対応担当者にシステムの再構築が必要か判断してもらいます。

影響端末からアクセスできた認証情報を失効・更新する

影響端末からアクセスできた認証情報は、信頼できる端末から失効させてください。Claude Codeとは関係のない認証情報も含めます。除去またはシステムの再構築が完了するまで、新しい認証情報を影響端末に配置しないでください。

Cursorが説明しているのは、環境変数の「名前」の収集です。それだけで値の窃取が確認されたわけではありません。認証情報を更新するという推奨には、バックドアを通じて後からアクセスされた可能性も考慮されています。

次の一覧を使い、項目ごとに担当者を決めて対応の完了を記録してください。

認証情報必要な対応
AnthropicのAPIキーClaude ConsoleのAPIキーページで対象キーのメニューを開き、Delete API key を選択してから代わりのキーを作成します。
OpenAIのAPIキーAPIキーの管理画面で対象キーを削除し、代わりのキーを作成します。利用状況に予期しない活動がないか調べてください。
Gitホスティングのトークン個人用アクセストークンなど、端末からアクセスできた認証情報を発行元で失効させます。正規の自動処理で使う認証情報も新しいものに更新します。
SSHクライアントのキー露出した可能性のある秘密鍵を交換します。Gitホスティングや他のサーバーで、古い公開鍵によるアクセス許可を削除してください。
クラウドの認証情報露出したアクセスキーを失効させ、一時セッションには別途対応します。不正なリソース、アクセス権の変更、利用状況を調べてください。
アカウントのセッション対象となるブラウザー、CLI、SSOのセッションを、各サービスまたはID管理者を通じて失効させます。

Anthropicの漏えいが疑われるキーへの対応手順では、キーを削除して新しく作成する操作を説明しています。OpenAIのセキュリティガイドには、APIキーの削除と利用状況の確認が記載されています。

GitHubでは、個人用アクセストークンの設定で対象トークンを削除します。SSHキーと有効なセッションも、それぞれ別に調べてください。

AWSについては、アクセスキーが露出した場合の対応に従います。ロールのセッションには、別の一時認証情報に関する手順を使ってください。

ゲートウェイのキーも同じ一覧に含めます。BetterTokenを使っていた場合は、BetterTokenのAPIキーも対象です。コンソールではキーを作成できますが、新しいキーを作るだけでは露出した認証情報は失効しません。更新作業を完了とする前に、発行元で古いキーが失効したことを確認してください。

端末の認証用ファイルに追加された攻撃者のキーと、自分が外部サービスへの接続に使うSSH秘密鍵は、別の対象です。端末から svc-telemetry を削除しても、外部サービス側に登録された自分のキーのアクセス許可は残ります。露出した可能性がある秘密鍵を交換するとともに、リモートサービス側で古い公開鍵の許可を削除してください。同様に、ローカルの設定値を消しただけでは、発行元が管理する元のAPIキーは無効になりません。

復旧全体を進める際は、認証情報の失効と監査のチェックリストを参照してください。発行元での失効を確認し、正規のアプリケーションが使う認証情報を更新します。そのうえで、信頼できる環境から意図したリクエストが成功することを確認してください。

復旧後に確認済みの配布元から再インストールする

除去が完了した端末、または再構築した端末に、信頼できる現在のリリースをインストールしてください。Cursorは事件の告知で、2.1.314 への更新を求めました。これは、その事件への対応で指定された更新先のバージョンです。

Anthropicのインストールページから、目的の拡張機能の掲載ページへ進んでください。発行者、Anthropic.claude-code という識別子、配布元のレジストリ、インストールされたバージョンを照合します。導入後の拡張機能のバージョンは、Extensionsビューで確認できます。

ログインまたは再起動後に、公表された痕跡をもう一度確認してください。常駐化の痕跡が戻った場合は、端末の使用をやめて調査を再開します。

ターミナルで使うCLIは、拡張機能とは別のパッケージとしてインストールします。Claude Codeのインストールと初回実行のガイドは、そのインストールの確認に役立ちます。ただし、すでに影響を受けた端末を除去・復旧する手順の代わりにはなりません。

次回のインストール前に拡張機能の配布元を検証する

見慣れた拡張機能名でも、提供元のインストールリンクと、実際に使われるレジストリを確認してください。承認したパッケージについて、発行者、識別子、バージョン、プラットフォーム、ダウンロード元を記録します。

Cursorの拡張機能ドキュメントでは、同じ publisher.extension という名前でも、レジストリが違えば発行者やコードが異なる場合があると注意しています。

ハッシュを比較する際は、何をハッシュ化した値なのかを先に確認してください。照合対象のファイル、プラットフォーム、バージョンがそろっている必要があります。VSIXパッケージ全体のハッシュと、その中にある extension.js のハッシュは別のものなので比較できません。既知の悪意あるハッシュの1つに一致しなかった場合も、それだけで正規の配布物だと証明されたわけではありません。

2026-11-02時点で、Cursorはチームの所有者と管理者向けに Marketplace Install Cooldown (hours) を文書化しています。Enterpriseチームでは、インストール前に有効なOpen VSX拡張機能の署名を必須にすることもできます。

これらの管理機能と合わせて、エージェントへの指示やダウンロードした設定も確認してください。AGENTS.mdとClaude Code設定の監査は、実行される指示につながる、この別の入力元を扱っています。

LLM ワークフローを最適化しませんか?

単一 API でモデルを接続し、キーと AI コストを管理できます。

無料で始める