改ざん版の Claude Code 拡張([email protected])に、SSH バックドアを仕掛ける悪意あるローダーが前置されていた——この検体の挙動を最初に報告したのは研究者 Paul McCarty(OpenSourceMalware)でした。その後、Cursor が公式のセキュリティ通知を出し、この版が自社の VS Code 拡張マーケットプレイス経由で配布されたことを確認しました。Cursor は「この悪意あるバージョンは Anthropic が開発したものではない」と明記しています。配布は2026年10月29日の約11時間(太平洋時間の午前2:27頃〜午後1:35頃)で、影響は最大約5000名、該当ユーザーには Cursor から直接連絡するとしています。

公式 npm の @anthropic-ai/claude-code は別物でクリーンで、他バージョンや公式配布版が影響を受けた証拠はありません。Open VSX・npm にも 2.1.313 の公開記録はありません(Socket のレジストリ調査)。当サイトは特定のベンダーを擁護も非難もしません。開発ツールを騙る/改ざんする攻撃の全体像はサプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説に、関連の事例はBlack October 2026やClaude Code・Codex を狙う AGENTS.md/CLAUDE.md 攻撃にまとめています。この記事は、何が起きたか・実際の影響・公式の確認と修復を、Cursor の通知を軸に中立に整理します。攻撃を再現する手順(PoC)は載せません。

WHAT THE LOADER DOESローダーの動き

正規バンドルの前に、66行のローダーが走る

  1. 起動

    拡張をロードした時点で発火

    正規コードの前に前置された IIFE が先に実行。Claude との会話開始は不要。例外はほぼ握り潰し、拡張は普通に動いて気づかれにくい

  2. 偵察

    ホスト情報を収集

    ホスト名・ユーザー名・OS・アーキテクチャ・ホーム/作業ディレクトリ・Git メール・公開IP・環境変数名を収集

  3. 侵入

    SSH 鍵追加・サービス有効化・逆トンネル

    authorized_keys に svc-telemetry 鍵を追加。SSH 有効化と逆トンネルは管理者権限が要り、大半のホストで失敗する

  4. 常駐

    永続化とビーコン

    LaunchAgent / スケジュールタスクで常駐(約60秒ごとに再接続を試行)。8099/beacon へ HTTP POST(攻撃者サーバは停止済み)

出典: Cursor 公式セキュリティ通知、OpenSourceMalware の検体解析(2026-10-30 確認)。PoC は非掲載

30秒でわかる

  • ・配布は Cursor マーケットプレイスの [email protected](Cursor が確認・削除)。10/29 に約11時間公開、最大約5000人。Anthropic 製ではない(Cursor 明言)。
  • ・多くのホストでは SSH 有効化・ログインは失敗(管理者権限が必要)。ただし鍵追加・永続化・ホスト情報の送信は実行される。攻撃者サーバは停止済み。
  • ・手口は、正規バンドルの前に 66行のローダーを前置。拡張をロードしただけで発火し、例外を握り潰して気づかれにくい。
  • ・確認は Cursor 公式コマンド(svc-telemetry 鍵の有無)。該当すれば公式の修復スクリプト→資格情報ローテ→ホスト再構築。公式 npm はクリーン。

何が起きたか:正規バンドルの前に置かれた66行

展開された拡張は見た目も同梱バイナリも公式版と同じで、違いは extension.js だけです。その先頭に、Node.js の process・fs・os・http・crypto を読み込む自己実行関数(IIFE)が66行ぶん前置され、本来の拡張コードより先に実行されます。配置が巧妙で、ユーザーが Claude との会話を始める必要はなく、拡張モジュールがロードされるだけで発火します。ライフサイクルフック(install / postinstall など)は宣言されておらず、悪意ある動作はパッケージマネージャのフックではなく拡張の実行時に起きます。

ローダーはほぼすべての例外を握り潰すため、途中で失敗しても正規拡張は普通に動いて見え、侵害の兆候が目立ちません。起動直後に、ホスト名・ユーザー名・OS・アーキテクチャ・ホーム/作業ディレクトリ・設定済みの Git メール・公開 IP、そして KEY・TOKEN・SECRET・PASS・AWS・GCP を含む環境変数名を集めます(値ではなく名前を集めるため、通常の DLP では検知しにくい)。

事件の時系列と Cursor の対応

Cursor の通知によると、改ざん版 2.1.313 は太平洋時間の10月29日 午前2:27頃から午後1:35頃まで、同社のマーケットプレイスで公開されていました。この約11時間の間にインストールまたは更新したユーザーが対象です。

INCIDENT TIMELINE事件の時系列(10/29 PT)

約11時間公開 → 検出・削除 → 再構築

  1. 2:27

    改ざん版 2.1.313 が公開(PT 午前2:27頃)

    Cursor の VS Code 拡張マーケットプレイスに、Anthropic 製ではない改ざん版が公開される

  2. 〜13:35

    検出まで約11時間(PT 午後1:35頃まで)

    この間にインストール/更新したユーザーが対象。影響は最大約5000名

  3. 対応

    即削除・マーケットプレイス全停止・鍵ローテ・再構築

    他拡張の改ざんが無いか監査し、鍵をローテしてマーケットプレイスを作り直し再開

  4. 封じ込め

    攻撃者サーバを停止・影響ユーザーに直接連絡

    ホスティング業者と連携しサーバをオフライン化。逆シェルとビーコンは機能しない

出典: Cursor 公式セキュリティ通知(2026-10-30 確認)。時刻は太平洋時間(PT)

Cursor は検出後ただちに拡張を削除して以降の配布をブロックし、万全を期して VS Code マーケットプレイスを全面的に停止。他の拡張が改ざんされていないか監査し、鍵をローテーションしてマーケットプレイスを再構築したうえでサービスを再開しました。さらにホスティングプロバイダーと連携して攻撃者のサーバをオフライン化し、同サーバへの接続をブロックしています。これにより、逆シェルとホスト情報の POST は機能しません。

実際の影響:ログインは大半で失敗、でも鍵と永続化は残る

ここが見落とされやすい点です。バックドアは SSH を中核にしますが、ローカルの SSH サービスを有効にするには管理者権限が必要で、ほとんどの macOS / Windows ホストでは悪意ある拡張にその権限がありません。そのため SSH 有効化と逆トンネル経由のログインは失敗します(Cursor を管理者権限で起動していた極めて稀なケースを除く)。つまり「誰でも即座に乗っ取られた」わけではありません。

WHAT SUCCEEDED VS FAILED実際に何が起きたか

ログインは大半で失敗。だが鍵と永続化は入る

大半のホストで失敗

それでも実行される

大半のホストで失敗: SSH サービスの有効化(管理者権限が必要)

それでも実行される: authorized_keys への攻撃者鍵(svc-telemetry)の追加

大半のホストで失敗: 逆トンネル経由の攻撃者ログイン(権限不足で成立せず)

それでも実行される: 永続化(LaunchAgent / スケジュールタスク)のインストール

大半のホストで失敗: = Cursor を管理者起動した極稀な場合を除き、入られてはいない

それでも実行される: ホスト情報の外部送信。その後に資格情報へ到達された可能性は残る

出典: Cursor 公式セキュリティ通知(2026-10-30)。鍵・永続化・情報送信は実行されるため、見つかれば必ず修復する

一方で、攻撃者の SSH 鍵(svc-telemetry)の追加・永続化の仕組みのインストール・ホスト情報の外部送信は実行されます。収集された情報が限定的でも、その後にバックドア経由で資格情報へ到達された可能性は否定できません。だから「ログインされていないから大丈夫」ではなく、痕跡があれば必ず修復が必要です。

逆トンネルそのものの狙いは、NAT やファイアウォールの内側にいる開発者マシンへ外から入ることにあります。被害者側から外へつながせ、攻撃者は自分のサーバのポートに入るだけで被害者の SSH に届く、という設計です(下図)。今回はその入口(SSH 有効化)が多くの環境で成立せず、さらに攻撃者サーバも停止されたため、トンネルは実際には機能していません。

REVERSE SSH TUNNEL逆トンネルの狙い

被害者から外へつながせ、内側に入る設計

  1. 被害者が外向きに接続

    FW は内→外を許すので、ssh -R で C2(134.209.82.225) へ自分からつなぐ想定。NAT の内側でも成立しうる

  2. C2 側に待受ポートが開く

    -N -R '*:0:localhost:22' でリモートにポートを割り当て、被害者のポート22へ転送(StrictHostKeyChecking=no)

  3. ただし SSH 有効化に失敗

    ローカル SSH サービスの有効化は管理者権限が要り、大半のホストで失敗。攻撃者サーバも停止済み

  4. 常駐だけは残る

    約60秒ごとに再接続を試みる永続化が入るため、鍵・永続化の除去が必要

出典: Cursor 公式通知・OpenSourceMalware(2026-10-30)。仕組みの図示で、攻撃の再現手順は載せない

配布元は Cursor マーケットプレイスだけ

配布元として確定しているのは Cursor のマーケットプレイスです。一方、Open VSX の変更フィードにも npm の公開時刻記録にも 2.1.313 は存在しません(隣接する 2.1.312・2.1.314 は記録あり。90秒で削除された版ですら記録は残る、と Socket)。Microsoft 公式の VS Code Marketplace も影響を受けた証拠はありません。公式 npm @anthropic-ai/claude-code は別物でクリーンで、Anthropic の中核インフラが破られた証拠もありません。

WHAT IS / ISN'T AFFECTED対象と対象外

配布元は Cursor マーケットプレイス。他レジストリに記録なし

確定(配布元)

影響の証拠なし/別物

確定(配布元): Cursor マーケットプレイスの 2.1.313(Cursor が確認・削除)

影響の証拠なし/別物: Open VSX(変更フィードに 2.1.313 無し・Socket)

確定(配布元): 最大約5000人に影響しうる(10/29)

影響の証拠なし/別物: npm @anthropic-ai/claude-code(公開記録なし・別物)

確定(配布元): この版は Anthropic 製ではない(Cursor 明言)

影響の証拠なし/別物: 他バージョン・公式配布版が影響を受けた証拠なし/MS 公式 Marketplace も未実証

出典: Cursor 公式セキュリティ通知、Socket のレジストリ記録検証(2026-10-30 確認)

確認と修復:Cursor 公式のコマンドとスクリプト

まず Cursor の拡張一覧で版を確認し、2.1.313 が入っていないかを見ます。Cursor は影響の有無を判定する確認コマンドを公開しています(svc-telemetry という攻撃者鍵のコメントを探すもの)。

# macOS(Cursor 公式の確認コマンド)
grep -qs svc-telemetry ~/.ssh/authorized_keys \
  && echo "svc-telemetry key found" \
  || echo "No key found; machine not impacted"

Windows は PowerShell で ~\.ssh\authorized_keys と C:\ProgramData\ssh\administrators_authorized_keys を svc-telemetry で検索します。鍵が見つかれば影響を受けています。その場合は痕跡のあるホストを隔離し、Cursor が配布する修復スクリプト(remediate-macos.sh / remediate-windows.ps1)を実行します。これらは悪意ある拡張・永続化・実行中のトンネル・攻撃者鍵を削除し、残っていれば non-zero で終了します。あわせて、被害ホストから到達できる認証情報とセッションを信頼できる別環境からローテーションしてください。拡張のアンインストールだけでは不十分です(永続化スクリプトは拡張削除後も動きます)。最も確実なのはホストの再構築です。

DETECT & REMEDIATE確認と修復(Cursor 公式)

svc-telemetry 鍵を確認し、修復スクリプトを実行

  1. 1.svc-telemetry 鍵の有無を確認

    authorized_keys に svc-telemetry のコメントが付いた鍵が無いか。あれば影響あり(Cursor が確認コマンドを公開)

  2. 2.痕跡のあるホストを隔離

    鍵・常駐・トンネルの痕跡が見えるホストをネットワークから切り離す

  3. 3.Cursor の修復スクリプトを実行

    remediate-macos.sh / remediate-windows.ps1 が鍵・永続化・トンネルを除去。残れば non-zero で終了

  4. 4.資格情報をローテ・必要なら再構築

    被害ホストから到達できる認証情報とセッションをクリーンな環境から更新。ホスト再構築が最も確実

出典: Cursor 公式セキュリティ通知の確認手順・修復スクリプト(2026-10-30)。IOC 以外の攻撃再現手順は載せない

主な侵害の痕跡(IOC)は次のとおりです(権威ある最新版は Cursor の通知を参照)。

種別 指標
パッケージ [email protected]
VSIX SHA-256 darwin-arm64 432ccdee…b5ab62/win32-x64 3de17229…66edd081
C2 / 通信 134.209.82.225(SSH 22・HTTP 8099)、http://134.209.82.225:8099/beacon、127.0.0.1:8099/beacon
SSH 鍵コメント svc-telemetry/鍵指紋 SHA256:0Z6R+DF…4htk/トンネル鍵指紋 SHA256:KOAU57+…MVyDQ/-N -R '*:0:localhost:22'・autossh -M 0
ファイル/常駐 ~/.config/.smt・~/.config/.smtk・$TMPDIR/.stk_<hex>・~/Library/LaunchAgents/com.apple.sysmond.plist/Windows は SysMon タスク・sysmon.cmd

まとめ

この記事の結論

  • ・配布は Cursor マーケットプレイスの [email protected](10/29 に約11時間・最大約5000人・Cursor が確認/削除)。この版は Anthropic 製ではなく、公式 npm・他版はクリーン。
  • ・多くのホストで SSH 有効化とログインは失敗(管理者権限が必要)。だが鍵追加・永続化・ホスト情報送信は実行されるため、痕跡があれば必ず修復する。攻撃者サーバは停止済み。
  • ・確認は Cursor 公式コマンド(svc-telemetry 鍵)。該当すれば隔離→公式修復スクリプト→資格情報ローテ→(確実にするなら)ホスト再構築。
  • ・教訓:マーケットプレイス公開は「公開後」に検知が走ることがある。承認済み拡張リスト・版固定・自動更新の制限・authorized_keys 変更の監視で、導入元と版を自衛的に点検する。

参照ソース