開発用のPCに入れたエディタの拡張機能は、利用者の権限でファイルを書き換え、コマンドを実行できます。自動更新を有効にしていれば、本人が何も操作しないうちに新しい版に置き換わります。外部の開発会社や協力会社がそれぞれのPCで作業している場合、どの拡張のどの版が入っているかは、把握する仕組みを作らない限り発注側からは見えません。
2026年10月29日、AIのエディタ「Cursor」の拡張機能のマーケットプレイスで、Claude Codeの拡張(anthropic.claude-code)の改ざん版が約11時間にわたって配布されました。Cursorが同じ日に告知を出し、Microsoftも10月30日に分析を公開しています。本記事では、この2つをもとに、入れてしまったPCで何が起きるか、どこを調べるか、拡張の入れ方をどう決めるかを整理します。
何が配布されたのか
Cursorの告知(10月29日、10月30日に更新)によると、改ざんされたのはClaude Code拡張の2.1.312と2.1.313で、配布先はCursorの拡張のマーケットプレイス、対象はmacOS用とWindows用です。告知が示すパッケージのハッシュは、Apple Silicon(darwin-arm64)とWindows(win32-x64)の2種類です。配布されていたのは太平洋時間の午前2時27分ごろから午後1時35分ごろまでで、日本時間に直すと、10月29日の18時27分ごろから10月30日の5時35分ごろまでにあたります。
影響の範囲について、資料は次のように書いています。
- 改ざん版はAnthropicが作ったものではない(Cursor)。Anthropicは、自社のシステムは侵害されていないとMicrosoftに伝えた
- 改ざん版は、MicrosoftのVisual Studio Marketplaceと、npmの
@anthropic-ai/claude-codeからは公開・配布されていない(Microsoft) - ほかの版や公式の配布物が影響を受けた証拠はなく、ほかの拡張の改ざんもない(Cursor)
- 現時点の証拠は、影響がCursorのマーケットプレイスに限られることを示している(Microsoft)
公開の初期には、配布元をOpen VSXと伝える投稿もありました。Phorionは10月30日に影響先の記述をCursorへ訂正しています。編集部が2026年11月6日にOpen VSXの公開APIを見たところ、2.1.313の記録はなく、2.1.312は10月27日の公開でした。Cursorの資料によると、Cursorの拡張はOpen VSXを元にしつつ、Cursor自身の配信の経路(marketplace.cursorapi.com)を通ります。改ざん版がどのようにCursorのマーケットプレイスへ入ったかは、告知に書かれていません。Cursorは検知後に改ざん版を取り除き、マーケットプレイス全体をいったん止め、鍵を交換して作り直したと説明しています。
入れたPCで何が起きるか
改ざん版には、拡張の本来のコードより先に動くJavaScriptが埋め込まれていました。拡張が読み込まれると、次の順に動こうとします。
- 情報の収集: ホスト名、ユーザー名、OS、作業中のディレクトリ、Gitのグローバルなメールアドレス、公開IPアドレスなど。環境変数のうち、名前に KEY・TOKEN・SECRET・PASS・AWS・GCP を含むものを最大40個集める(送るのは変数の名前で、値ではない)
- SSHの鍵の追加:
authorized_keysに、svc-telemetryというコメントの付いた攻撃者の公開鍵を追記し、SSHのサービスを有効にしようとする - 外向きのトンネル: PCから攻撃者のサーバーへSSHで接続し、サーバー側からPCの22番ポートへ入れる逆方向のトンネルを作ろうとする
- 自動起動: OSごとに、再起動後もトンネルを張り直す仕組みを仕込む
- 報告: 集めた情報を攻撃者のサーバーへ送ろうとする
拡張そのものは普段どおり動き続けるため、利用者は気づきにくい作りです。実際に外からPCへ入れるかどうかは、PCの権限やSSHの設定に左右されます。Cursorの告知は、ローカルのSSHのサービスを有効にするには管理者権限が必要で、多くのmacOSとWindowsのPCではこの手順が失敗し、トンネルを通じたログインはできなかったとしています。
ただし同じ告知は、そうしたPCでも鍵の追加、自動起動の仕込み、情報の送信は行われたと書き、対処の手順は進めるよう求めています。macOSを分析したPhorionは、もともとリモートログインを有効にしていたMacや、後から有効にしたMacでは、この失敗に頼れないと指摘しています。攻撃者のサーバーは、Cursorがホスティング事業者と協力して停止させたため、トンネルと情報の送信は今は機能しないとされています。

拡張を消しても残るもの
Microsoftの報告がはっきり書いているのは、拡張を削除・更新しても、拡張のフォルダの外に書かれたものは消えないという点です。Cursorの告知も、拡張のアンインストールだけでは足りない場合があると書いています。攻撃者のサーバーの停止も、PCに残った痕跡を消すわけではありません。2つの資料が挙げている主な場所は次のとおりです。
| OS | 自動起動の仕組み | 主な痕跡 |
|---|---|---|
| macOS | 利用者のLaunchAgent | ~/Library/LaunchAgents/com.apple.sysmond.plist、~/.config/.smt、~/.config/.smtk |
| Linux | 利用者のcrontabの @reboot | ~/.config/.smt、~/.config/.smtk |
| Windows | SysMonという名前のタスク(失敗時はスタートアップの sysmon.cmd) | %USERPROFILE%\.config\smt.cmd、%USERPROFILE%\.config\smtk |
Cursorの告知の対象はmacOSとWindowsですが、改ざん版のコードにはLinux向けの処理もあり、痕跡の一覧に載っています。
すべてのOSで共通して、authorized_keys(Windowsでは C:\ProgramData\ssh\administrators_authorized_keys も)の svc-telemetry の鍵と、一時フォルダの .stk_ で始まる名前のファイルが調べる対象です。自動起動の名前は監視のソフトに似せてあり、Microsoftは「名前だけで判断せず、実行する中身を確かめる」よう求めています。
ネットワークの記録では、134.209.82[.]225 のTCP 22番への接続と、同じアドレスの8099番の /beacon へのHTTP POSTが手がかりです。Phorionによると、トンネルを通じたログインはSSHのログに 127.0.0.1 か ::1 からの接続として残るため、トンネルが張られただけか、実際に入られたかの見分けに使えます。
鍵を調べる
Cursorは、対象の時間帯にmacOSかWindowsで2.1.312か2.1.313を入れた、または更新した場合に、次のコマンドで鍵を調べるよう案内しています。macOSでは次のとおりです。
grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"
WindowsではPowerShellで次を実行します。
$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" }
このコマンドは、見つからないときに「machine not impacted」と表示します。ただし、Microsoftは目印がないことだけで判断せず、インストール、プロセス、ネットワーク、自動起動の証拠も見るよう書いています。Phorionも、コメントの文字列だけに頼らず鍵そのものを見ることを勧めています。コメントが書き換えられていても見つかるように、Cursorの告知に載っている公開鍵の本体で探す方法があります。
grep -F 'AAAAC3NzaC1lZDI1NTE5AAAAIDdvylCEJ/k2TpezcTfedrkHyFSK9IZ3vmP6vhY4Ss0P' ~/.ssh/authorized_keys
このコマンドは編集部の提案です。編集部のPC(macOS 26.5.1)で、鍵を入れた検証用のファイルに対して動くことだけを確かめました。Cursorの告知の公開鍵の指紋が SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk と一致することも、ssh-keygen -lf で確かめています。
見つかったときの順番
Cursorは、鍵が見つかったPCは影響を受けたものとして、隔離、削除、資格情報の交換へ進むよう求めています。Microsoftの推奨とあわせると、順番は次のとおりです。
- 対象のPCを特定する: 上の条件に当たるPCを、端末、ネットワーク、拡張のインストールの記録から探す
- 証拠を保全する: 拡張のパッケージ、書き換えられたSSHの認証ファイル、作られた鍵とスクリプト、自動起動の設定を、消す前に保存する(Microsoft)
- 隔離する: 実行や侵入の形跡があるPCをネットワークから切り離す
- 削除する: 攻撃者の鍵、自動起動、動いているトンネルのプロセスを取り除き、PCを作り直すかどうかを判断する
- 資格情報を交換する: そのPCから使える資格情報とセッションを、信頼できる別のPCから交換する
資格情報の交換について、Cursorは、集められた環境変数が名前だけでも、バックドアを通じて後から資格情報に触れられた可能性は否定できないと書いています。Microsoftの報告は、資格情報に触れられた形跡がある場合や、PCの信頼を取り戻せない場合に交換するとしています。編集部は、鍵が見つかったPCではCursorの案内に従って交換することを勧めます。
削除の手順には、Cursorが配布するmacOS用の remediate-macos.sh とWindows用の remediate-windows.ps1 が使えます。macOS用は影響を受けた利用者の権限で(rootではなく)、Windows用は管理者のPowerShellで実行します。これらのスクリプトは改ざん版の拡張のフォルダや痕跡のファイルを消すので、調査が必要な組織では先に証拠を保全してください。Cursorの告知にLinux用のスクリプトはありません。手で鍵を消す場合は、攻撃者の鍵が正規の鍵と同じ行に続いて書かれていることがある点に注意が要ります(macOS用のスクリプトのコメントによる)。
版の番号だけで判断しない
編集部が2026年11月6日にnpmの公開記録、Claude Codeの公式の変更履歴、Open VSXとVisual Studio Marketplaceの公開APIを確認したところ、2.1.312という版は正規のものも存在しました(npmへの公開は10月27日)。2.1.313はこのいずれにもなく、次の正規の版は10月30日の2.1.314です。Cursorの削除スクリプトのコメントにも、改ざん版は本物の版番号のままなので中身で照合する、と書かれています。
つまり「2.1.312が入っているから感染した」「2.1.312だから安全」のどちらも、版の番号だけでは言えません。判断の材料になるのは、Cursorのマーケットプレイスから、上の時間帯に、macOSかWindowsで入れたか更新したか、という入手の経路と時刻です。拡張のフォルダが残っていれば、Cursorの告知は extension.js に 134.209.82[.]225 と svc-telemetry が含まれることを目印に挙げています。ただし、その後に更新や削除をしていればフォルダは残らないので、残っていなくても上の鍵の確認は必要です。VS CodeのMarketplaceから入れた拡張や、npmから入れたCLIは、資料の範囲では対象外です。
拡張の入れ方を決める(編集部の提案)
Microsoftは、Cursorを使う組織向けの対策として、Cursorのセキュリティ強化の手引きにある設定、特に承認した発行元の拡張だけに絞ることと、新しく公開された版のインストールを一定期間遅らせる設定を挙げています。Cursorの資料では、それぞれ次の設定です。
- Allowed Extensions: 設定の
extensions.allowed、チームの管理画面、またはMDMのポリシーAllowedExtensionsで指定します。項目を1つでも入れると許可リストとして働き、"*": trueを足さない限り、ほかの拡張はすべて止まります - Marketplace Install Cooldown: チームの設定の Security & automation で時間を指定します。既定は0(無効)です。個人でも
extensions.installCooldownHoursで設定できます - Require Extension Signature Verification: Enterpriseのチームで、Open VSXの拡張の署名の検証を必須にできます
今回の改ざん版は正規の発行元の名前のままなので、発行元の絞り込みだけでは防げなかった可能性があります(編集部の見方)。Cursorも、待ち時間と署名の検証はほかの対策を補うもので、置き換えるものではないと書いています。
そのうえで、開発を外部に任せている会社や、複数の開発者が自分のPCで作業する組織では、次を決めておくことを提案します。
- AIの開発ツールと拡張の一覧を持つ。 誰のPCにどのエディタと拡張が入っているかを、外部の開発者の分も含めて把握する
- 自動更新を一律に任せない。 新しい版をすぐに入れない待ち時間を設ける。今回の配布は約11時間で止まっている
- 秘密の値を環境変数に常駐させない。 今回送られたのは変数の名前だけでしたが、同じ権限で動くコードは値も読めます。必要なときだけ読み込む管理の仕組みに寄せる
- 事故のときの連絡先を決める。 外部の開発者のPCで痕跡が見つかったとき、誰に連絡し、どの鍵を交換するかを契約の段階で決める
Pythonのパッケージで起きた同種の改ざんは、LiteLLM 1.107.0の改ざん版の記事で調べ方を整理しました。エディタの拡張が入口になった事例は、VS Codeの拡張機能を経由したGitHubの内部リポジトリの侵害の記事でも扱っています。
確認した範囲
2026年11月6日に、Cursorの告知(10月29日、10月30日に更新)と削除用のスクリプト、拡張とセキュリティ強化の資料、Phorionの分析(10月30日、10月31日に更新)を確認しました(資料調査)。Microsoft Security Blogの報告(2026年10月30日)も11月6日に開き直して原文と照合しました。ページに更新の表示はありません。版の公開日は、npm、Claude Codeの変更履歴、Open VSX、Visual Studio Marketplaceの記録で確認しました。Anthropic自身の告知は見つけられませんでした。改ざん版の入手・実行と、Cursorのスクリプトの実行はしていません。
開発環境の権限や外部の開発者を含めた運用ルールの設計は、開発・AI・自動化のご相談からお問い合わせください。
参考資料
- Security notice — malicious version of Anthropic.claude-code (2.1.312 and 2.1.313)(Cursor)
- Inside a malicious Claude Code-branded extension and its persistent SSH backdoor(Microsoft Security Blog)
- Official Claude Code Extension Compromise: Security Advisory(Phorion)
- Cursor の Extensions の資料(配信の経路、Cooldown、署名の検証)
- Cursor の Identity and Access Management の資料(Allowed Extensions)
- Cursor の Security hardening の資料
- Claude Code changelog
- npm registry — @anthropic-ai/claude-code
- Open VSX API — anthropic/claude-code 2.1.312









