Cursor 経由の Claude Code 拡張 2.1.313 に、SSH のバックドアが入っていた

2026 年 10 月 29 日 (米国時間)、Cursor のマーケットプレイスで入手できた Claude Code の VS Code 拡張に、SSH のバックドアを仕込んだ版が混ざっていました。Cursor は同じ日付でブログにセキュリティの通知を載せ、日本時間の 10 月 30 日には X でも告知しています。脅威情報サイトの OpenSourceMalware も解析記事を公開しました。

この記事では、Cursor の通知を軸に、次の 3 点を整理します。

  • 自分が該当するかを、何で判断するか
  • 該当するかもしれないとき、何を確認するか
  • 該当したとき、どの順番で何をするか

Cursor の通知に無い内容は OpenSourceMalware の解析で補い、どちらの情報かを本文で分けて書きます。FIXIT が実機で再現した結果ではなく、2026 年 10 月 31 日時点の公開情報の整理です。

FIXITFIXIT

Cursor で Claude Code の拡張を使ってるんだけど、自分も危ないの?

DodaiDodai

まず該当するかを決めます。版と経路と時間帯の 3 つで判定できます。

該当するかの判定|版・経路・時間帯の 3 条件

Cursor の通知が示す対象は、Anthropic.claude-code の 2.1.313 を、Cursor のマーケットプレイスから、2026 年 10 月 29 日の太平洋時間 2 時 27 分ごろから 13 時 35 分ごろまでの間にインストールまたは更新した場合です。日本時間では、10 月 29 日の 18 時 27 分ごろから 10 月 30 日の 5 時 35 分ごろまでにあたります。

確認すること該当する条件
版Anthropic.claude-code の 2.1.313
経路Cursor のマーケットプレイス
時間帯10 月 29 日の太平洋時間 2 時 27 分ごろから 13 時 35 分ごろまで

Cursor によると、影響を受けた利用者は最大 5,000 人で、該当する利用者には Cursor から直接連絡します。連絡が届いていなくても、条件に当たる覚えがあるなら、次の章の確認をしてください。

VS Code・Open VSX・npm の扱い

Cursor の通知は、見つかった版以外の版や、公式の配布に影響が出た証拠は無いとしています。Cursor の X の投稿には、Cursor のマーケットプレイスから入れたほかの拡張には影響しない、ともあります。OpenSourceMalware の解析は、npm の @anthropic-ai/claude-code パッケージ、Open VSX の拡張、Microsoft の VS Code 向けの拡張は悪性ではないと報告しています。

Anthropic 側では、技術スタッフの Felix Rieseberg 氏が 10 月 30 日に X で投稿しています。Anthropic のシステムや社員の端末が侵害されたのではなく、悪意のある者が Cursor のマーケットプレイスへのアクセスを使い、改ざんした拡張を公開した、という説明です。Anthropic の公式の配布経路の版には影響が無く、影響を受けるのは Cursor の利用者だけだとしています。

Open VSX にも悪性の版が出ていたと伝えた報道がありました。OpenSourceMalware は Cursor から連絡を受け、悪性の拡張の出どころは Cursor のマーケットプレイスで、Open VSX ではないと解析記事に追記しています。Open VSX で公開されている版の一覧にも、2026 年 10 月 31 日時点で 2.1.313 はありません。

ただし、どれも「証拠は無い」「悪性ではない」「影響は無い」という書き方です。どの経路で入れたかをはっきり覚えていないなら、次の章の確認をしてください。

拡張は何をしたか

Cursor の通知が挙げている動作は、次のとおりです。

動作内容
情報の収集ホスト名、ユーザー名、OS、アーキテクチャ、ホームディレクトリ、環境変数の名前、作業ディレクトリ、Git に設定したメールアドレス、公開 IP
鍵の追加svc-telemetry というラベルの攻撃者の公開鍵を authorized_keys に追加
SSH の有効化端末の SSH サービスを有効にしようとする。多くの macOS・Windows の端末では管理者権限が無く、失敗する
逆向きの接続攻撃者のサーバーへ、逆向きの SSH トンネルを開こうとする
常駐macOS は LaunchAgent。Windows は SYSTEM で動かそうとするスケジュールタスクで、うまくいかないときはスタートアップのスクリプトを使う。約 60 秒ごとに接続をやり直す
攻撃者への報告ホストの情報とバックドアの状態を、ポート 8099 の /beacon へ HTTP POST で送る

SSH が起動しなくても、鍵と常駐は残る

Cursor の通知によると、SSH サービスの有効化には管理者権限が要ります。多くの macOS・Windows の端末ではこの手順が失敗し、攻撃者はトンネルを通ってログインできなかった、というのが Cursor の説明です。そのうえで、その場合でも拡張は攻撃者の鍵を追加し、常駐を仕込み、ホストの情報を攻撃者へ送っていると書き、対処の手順は SSH の状態にかかわらず実行するよう求めています。

SSH が有効になっていない端末だから大丈夫、とは言えません。管理者権限が無くて SSH が起動しなかった端末でも、鍵と常駐が残っていないかを確認してください。

OpenSourceMalware の解析によると、仕込まれた処理は拡張の読み込み時に実行され、Claude との会話を始める必要はありません。Linux 向けの処理も入っており、~/.config に同じファイルを書き、crontab に @reboot の行を足して常駐します。

Cursor の通知が確認のコマンドと削除用のスクリプトを示しているのは、macOS と Windows だけです。改ざんされたパッケージとして挙げているのも、macOS (darwin-arm64) 用と Windows (win32-x64) 用の 2 つです。ほかの環境については書かれていません。Linux や Intel の Mac でも、条件に当たる覚えがあるなら、鍵の確認を同じ要領で行い、crontab に見覚えの無い @reboot の行が無いかも見てください。

注意

Cursor の通知は、攻撃者のサーバーはホスティング事業者と連携して停止され、逆向きの接続と報告はもう機能しない、と書いています。ただし、すでに追加された鍵や常駐は、端末に残っている可能性があります。サーバーの停止は、端末の確認を省く理由にはなりません。

感染の確認|鍵と常駐の場所

Cursor の通知が最初に勧めているのは、authorized_keys に svc-telemetry のラベルの鍵が無いかの確認です。macOS では、次のコマンドを実行します。

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

Windows では、PowerShell で次を実行します。$HOME\.ssh\authorized_keys と C:\ProgramData\ssh\administrators_authorized_keys の 2 つのファイルから、svc-telemetry を探すコマンドです。

$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" }

svc-telemetry key found と表示されたら、その端末は該当しています。Cursor の通知は、その場合は次の章の隔離・削除・入れ替えに進むよう書いています。

鍵のほかに、Cursor の通知が目印として挙げている残り方は次のとおりです。鍵が見つからなかった端末でも、あわせて見ておいてください。

OS確認する場所
macOS~/Library/LaunchAgents/com.apple.sysmond.plist、~/.config/.smt、~/.config/.smtk、$TMPDIR の .stk_ で始まるファイル
Windowsスケジュールタスク SysMon、%USERPROFILE%\.config\smt.cmd、%USERPROFILE%\.config\smtk、%TEMP% の .stk_ で始まるファイル、%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd

プロセスでは、ssh -N -R '*:0:localhost:22' や autossh -M 0 が実行されていないかを見ます。通信では、134.209.82.225 への TCP 22 と、ポート 8099 の /beacon への HTTP POST が目印です。ifconfig.me と api.ipify.org への問い合わせは正規のサービスなので、それだけでは目印になりません。

完全な目印の一覧と、改ざんされたパッケージのハッシュは、Cursor の通知にまとまっています。この記事では全部を写さず、確認の入り口に絞りました。

FIXITFIXIT

鍵が無かったら、安心していいの?

DodaiDodai

鍵だけでは決めません。常駐のファイルとタスクも見ます。1 つでも残っていたら該当です。

該当したときの順番|消す前に隔離する

Cursor の通知が示す手順は、次のとおりです。鍵が見つかった端末は、3 から 5 に進みます。

  1. 前の章のコマンドで、鍵があるかを確認する
  2. 端末、ネットワーク、拡張のインストールの記録から、目印を探す
  3. 実行やバックドアの設置の跡がある端末を隔離する
  4. 削除用のスクリプトで攻撃者の鍵、常駐、動いているトンネルのプロセスを取り除き、端末を作り直すべきかを判断する
  5. その端末から届く認証情報とセッションを、信頼できる別の端末から入れ替える

削除用のスクリプトは、macOS 用が remediate-macos.sh、Windows 用が remediate-windows.ps1 で、Cursor の通知からダウンロードできます。悪性の拡張、常駐、トンネルのプロセス、攻撃者の鍵を取り除くスクリプトです。

  • macOS は、保存したフォルダーで、被害を受けたユーザーとして bash remediate-macos.sh を実行します。root では実行しません
  • Windows は、「管理者として実行」で開いた PowerShell で、保存したフォルダーから powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1 を実行します
  • 実行後に何か残っていると、スクリプトは 0 以外の終了コードを返します

その場合は、端末の作り直しを検討してください。OpenSourceMalware の解析も、既知の痕跡を消せば元どおりに信頼できると考えるより、ホストを作り直すほうが安全だとしています。

拡張を先に消さない

OpenSourceMalware の解析は、拡張が読み込まれていた場合は、先に端末をネットワークから切り離し、調査のための記録を残してから、拡張と常駐を消すよう書いています。

2.1.314 への更新だけでは足りない

Cursor は X の投稿で、すべての利用者に Claude Code for VS Code の 2.1.314 へ更新するよう求めています。一方で Cursor の通知は、拡張の削除だけでは足りない場合があると書いています。バックドアは拡張とは別に動く常駐のスクリプトを置き、そのスクリプトが拡張を消した後も動き続けるためです。更新とは別に、鍵と常駐の確認と削除をしてください。

入れ替える範囲|端末から届く認証情報

Cursor の通知は、被害を受けた端末から届く認証情報とセッションを、信頼できる別の端末から入れ替えるよう勧めています。

拡張が集めたのは環境変数の「名前」です。Cursor の通知は、収集が限られていても、その後にバックドアを通して認証情報に触れられた可能性は否定できない、と書いています。OpenSourceMalware の解析によると、集めたのは名前に KEY・TOKEN・SECRET・PASS・AWS・GCP を含むものを最大 40 個までで、値は最初の送信には含まれていません。

では、何を入れ替えるのか。Cursor の通知は、一覧までは書いていません。ここからは、FIXIT の考え方です。

  • その端末のユーザーで読める SSH の秘密鍵、クラウドのアクセスキー、API キー、個人用のアクセストークンを、入れ替えの候補にする
  • 端末にログインしたままのブラウザーのセッションと、Git のホスティングサービスの認証を、同じ扱いにする
  • 追加された攻撃者の鍵が authorized_keys に残っていないかを、削除用のスクリプトの実行後にも確認する

端末の中に何が置かれていたかは、持ち主にしか分かりません。入れ替えの対象は、その端末で触れたものを思い出して挙げます。

発注側が確認すること

開発を外注している側、保守を委託している側は、委託先の端末の状態を自分では見られません。確認は、質問の形で依頼します。

  • 委託先の担当者が、Cursor で Claude Code の拡張を使っているか
  • 2.1.313 を入れた覚えがあるか。ある場合は、鍵と常駐の確認をしたか
  • 自社から委託先へ渡している認証情報は何か。入れ替えが必要なものはあるか
  • 委託先の端末から、自社の本番環境に入れる経路があるか

渡している認証情報の棚卸しは、事故の有無にかかわらず、一度やっておくと判断が早くなります。確認の結果は、口頭で済ませず文書で残してもらってください。

補足

被害の有無は、持ち主の端末の記録を見ないと分かりません。委託先から「問題ありません」とだけ返ってきたときは、何を見てそう判断したのかを聞いてください。

まだ分かっていないこと

2026 年 10 月 31 日の時点で、公開情報からは分からないことがあります。

  • 攻撃者が Cursor のマーケットプレイスに改ざんした拡張を公開できた経緯は、Cursor の通知にも、Anthropic の社員の投稿にも書かれていません
  • Anthropic の見解として確認できたのは、前述の社員の X の投稿です。Anthropic のニュースのページやステータスページ、Claude Code の GitHub のセキュリティアドバイザリーには、この件の発表は見当たりません
  • OpenSourceMalware の解析は、解析した拡張が悪性であることは示せても、Anthropic の公式の配布の基盤が侵害されたかどうかまでは解析結果だけでは示せない、と書いています

分かっていないことは、推測で埋めません。続報は、Cursor の通知と各社の発表で確認してください。

FIXIT の運用|拡張も依存先として扱う

エディターの拡張は、コードの依存関係と同じように、外から入ってくるプログラムです。今回の版も、正規の拡張 ID のまま配布されていました。

FIXIT の考え方は、次のとおりです。

  • 拡張を、依存関係と同じ棚卸しの対象に入れる
  • 端末に置く認証情報は、短い期限で入れ替えられる形にしておく

AI 駆動開発では、エージェントが端末のファイルやシェルを広く扱います。端末に置かれた認証情報が増えるほど、1 台が侵害されたときに攻撃者が届く範囲も広がります。

次の一歩|まず鍵の有無を確認する

今日やることは、1 つに絞れます。Cursor で Claude Code の拡張を使っているなら、authorized_keys に svc-telemetry の鍵が無いかを確認してください。鍵が無く、常駐のファイルも無ければ、該当しない可能性が高いです。見つかったら、消す前に端末をネットワークから切り離してください。

チームの端末や委託先まで確認したいなら、渡している認証情報の棚卸しと、入れ替えの手順づくりが次の作業です。端末と開発体制の見直しは、情報セキュリティコンサルタントでご相談いただけます。隣の話題として、サプライチェーンのセキュリティ評価、AI 駆動開発のセキュリティ、脆弱性の事案への対応の記事もあわせて読めます。個別のご相談はお問い合わせからお寄せください。