aighten
← ブログに戻る

Claude Code拡張機能にSSHバックドア:Cursorマーケットプレイス経由で配信、影響の確認方法

Claude Code 拡張機能 バックドアCursor マーケットプレイス 改ざんClaude Code 2.1.313SSHバックドアVS Code 拡張機能 サプライチェーン攻撃+2 more
Claude Code拡張機能にSSHバックドア:Cursorマーケットプレイス経由で配信、影響の確認方法

2026年10月29日、AnthropicのClaude Code拡張機能の改ざん版が、Cursor独自の拡張機能マーケットプレイスを通じて約11時間にわたりCursorユーザーに配信されました。macOS版とWindows版のバージョン2.1.312および2.1.313にあたるこのビルドは、攻撃者のSSH鍵を追加し、リバースSSHトンネルの確立を試み、ログインのたびに自身が実行されるよう登録していました。Cursorによると、影響を受けたユーザーは最大5,000人です。Cursor上でClaude Codeを使っている場合は、拡張機能がその後アップデートされていても自分のマシンを確認してください。アップデートやアンインストールでは、ペイロードが残したものは削除されないためです。

Anthropicは、自社のシステムは侵害されておらず、公式チャネルであるOpen VSXとVisual Studio Marketplace上のコピーは一切変更されていないと説明しています。弱点となったのは、Cursorがこれらのレジストリと自社エディターの間で運用しているレイヤーでした。

要点

  • 悪意のあるAnthropic.claude-codeビルド(バージョン2.1.312と2.1.313)がCursor VS Code Extension Marketplaceで公開され、2026年10月29日の太平洋時間(PT)午前2時27分ごろから午後1時35分ごろまで配信されていました(Cursorのセキュリティ告知)。
  • 影響が及んだのは、このアップデートを受け取ったmacOSとWindowsのCursorユーザーです。Cursorは、影響を受けたユーザーは最大5,000人で、該当者には直接連絡するとしています(Help Net Security)。
  • 影響なし:Open VSX、Visual Studio Marketplace、Anthropic自身のホストから入手したClaude Code、およびClaude Code CLI(The Register、OpenSourceMalware)。
  • ペイロードは、authorized_keysへのコメントsvc-telemetry付きSSH鍵の追加、134.209.82[.]225へのリバーストンネル、ログイン時の永続化、そしてホスト情報と機密情報らしき環境変数の名前(値ではない)を送る1回限りのビーコンを仕掛けていました(Phorion)。
  • 拡張機能を削除またはアップデートしても、マシンはクリーンになりません。鍵、永続化の設定、トンネルを削除したうえで、そのマシンからアクセスできる認証情報をローテーションしてください。

Cursor上のClaude Code拡張機能に何が起きたのか

CursorはVS Codeのフォークです。MicrosoftのVisual Studio Marketplaceの利用規約では、利用がMicrosoft自身の製品に限られているため、フォーク製品は別の場所から拡張機能を入手しています。Cursorのドキュメントによると、拡張機能の検索とダウンロードは独自サービスのmarketplace.cursorapi.comを経由します。このサービスはEclipse Foundationが運営するオープンソースの拡張機能レジストリ、Open VSXのデータを利用していますが、Open VSXへの「直接の中継(パススルー)ではない」とされています(Cursorのドキュメント)。改ざん版が現れたのは、このプロキシでした。

10月29日に公開され、10月30日の太平洋時間午前11時30分に更新されたCursorの告知によると、次のとおりです。

  • 悪意のあるバージョンは、Windows版およびmacOS版のAnthropic.claude-code 2.1.312と2.1.313でした。
  • これらは2026年10月29日の太平洋時間午前2時27分ごろから午後1時35分ごろまで(UTCでは09:27から20:35まで)、Cursor VS Code Extension Marketplaceで配信されていました。
  • 「これらの悪意あるバージョンの拡張機能は、Anthropicが開発したものではありません」。
  • Cursorは検知した時点で該当バージョンを削除し、アクセスを監査してほかに改ざんされた拡張機能がないことを確認しました。さらに鍵をローテーションし、マーケットプレイスを再構築して復旧させ、ホスティング事業者と協力して攻撃者のサーバーを停止させました。

最初の告知で挙げられていたのは2.1.313のみでした。10月30日の更新で2.1.312が追加され、ファイルハッシュも修正されています。初期の記事の中には、いまだに1つのバージョンしか記載していないものや、ハッシュの表記が異なるものがあるため、Cursorの最新の告知を基準にしてください。

AnthropicのFelix Rieseberg氏はThe Registerに対し、「Anthropicのシステムや従業員のノートPCが侵害されたわけではない」とし、「悪意のある攻撃者がCursorのマーケットプレイスへのアクセス権を使って、改ざんしたコピーを公開した」と語りました。さらに「当社の公式チャネルにあるバージョンは影響を受けておらず、影響があるのはCursorユーザーのみだ」と付け加えています。同じくAnthropicのエンジニアであるDavid Dworken氏はHacker Newsへの投稿で、2.1.313はOpen VSX、VS Code Marketplace、Anthropicのホストのいずれにも公開されたことがなく、混乱を避けるために次のリリースは2.1.314という番号にしたと説明しています。

攻撃者がどのようにしてCursorのマーケットプレイスへの公開権限を得たのかは、明らかにされていません。

Open VSXは侵害されたのか

いいえ。初期の報告のいくつかは、URLにいまも「vsx-compromise」と残っているアドバイザリーを含め、Open VSXに原因があるとしていました。これらの報告は、Cursorが自社のマーケットプレイスが発生源だったと認めた後に訂正されています。Open VSX APIにはClaude Codeのバージョンとして2.1.310、2.1.311、2.1.312、2.1.314、2.1.316が掲載されており、2.1.313はありません。StepSecurityは、Open VSX上の2.1.312ビルドに問題がないことを確認しました(StepSecurity)。Cursorが警告している2.1.312は、Cursorのマーケットプレイスが配信していた別のファイルです。そのため、バージョン番号だけでは影響を受けたかどうかを判断できません。

バックドアは何をしたのか

セキュリティ企業のPhorion、StepSecurity、OpenSourceMalwareがこのビルドを解析しました。攻撃者は、拡張機能のミニファイされたextension.jsの先頭に66行のローダーを追加し、残りの本物のコードはそのまま残していました(OpenSourceMalware)。このローダーはエディターがファイルを読み込んだ時点で、拡張機能自身の起動コードより先に実行されるため、ユーザーのクリックは不要でした(Phorion)。

Claude Code拡張機能のバックドアの4段階の流れ:SSH鍵の設置、リバーストンネル、ログイン時の永続化、1回限りのビーコン
ペイロードの4段階:鍵を仕込み、リバーストンネルを開き、再起動後も残るよう永続化し、ホスト情報を報告する。AI-generated illustration / AightenAI-generated

ペイロードは次の4段階で動作しました。

  1. 鍵を仕込む。コメントsvc-telemetry付きのEd25519公開鍵を~/.ssh/authorized_keysに追記し、ファイルがなければ作成しました。
  2. SSHを有効にしてトンネルを開こうとする。SSHサーバー(macOSでは「リモートログイン」、WindowsではOpenSSH Server、Linuxではsshd)を有効にしようとしたうえで、ポート22でtunnel@134.209.82[.]225に外向きに接続し、リモートポートフォワード(-R *:0:localhost:22)を要求しました。これにより、ファイアウォールで受信ポートを開けることなく、攻撃者がマシンのSSHサーバーに入り込む経路ができます。60秒ごとに再試行し、autosshがあればそれを使っていました。
  3. 永続化する。macOSでは~/.config/.smtを実行するcom.apple.sysmond.plistという名前のLaunchAgentをインストールしました。Linuxでは@rebootのcrontabエントリーを追加しました。WindowsではSysMonという名前のスケジュールタスクを作成し、管理者権限がない場合はスタートアップフォルダーにsysmon.cmdスクリプトを置きました。
  4. 1回だけビーコンを送る。ポート8099にHTTP POSTを1回送信し、ホスト名、ユーザー名、OS、アーキテクチャ、ホームディレクトリと作業ディレクトリ、Gitのグローバルメールアドレス、パブリックIP、そしてKEY、TOKEN、SECRET、PASS、AWS、GCPのいずれかに一致する環境変数名を最大40個送っていました。値は送信されていません。

被害を抑える要因が2つあります。SSHの有効化には管理者権限が必要で、Cursorはこの手順について「Cursorが管理者権限で起動されていたという極めて異例の状況でない限り」失敗した可能性が高いとしています(BankInfoSecurity)。macOSについては、Phorionがスクリプトの状態チェックにバグを見つけており、標準ユーザーの場合は通常、有効化の手順が飛ばされます。ただし、鍵の設置、永続化、ビーコンは実行されたため、すでにリモートログインが有効だったMac、または今後有効にするMacは危険にさらされます。Cursorによると、攻撃者のサーバーは現在停止しています。

プラットフォーム永続化の方法確認すべきファイル
macOSLaunchAgent com.apple.sysmond.plist~/.config/.smt、~/.config/.smtk、$TMPDIR/.stk_*
Linux@rebootのcrontabエントリー~/.config/.smt、/tmp/.stk_*
WindowsスケジュールタスクSysMonまたはスタートアップのsysmon.cmd%USERPROFILE%\.config\smt.cmd、smtk、%TEMP%\.stk_*

出典:Phorion、Cursorのセキュリティ告知

影響を受けたかどうかの確認方法

macOSまたはWindowsでClaude Code拡張機能をインストールしたCursorを使っており、10月29日の該当時間帯に拡張機能の自動アップデートを有効にした状態でCursorを開いていた場合は、確認の対象になります。Claude Code CLIのみ、またはMicrosoftのVS Codeで拡張機能を使っているだけであれば、報告によると影響はありません。

対象に当てはまる場合は、次の痕跡を探してください。いずれもCursorの告知かPhorionのアドバイザリーに記載されているものです。

  • SSH鍵:~/.ssh/authorized_keysにsvc-telemetryがないか確認します。WindowsではC:\ProgramData\ssh\administrators_authorized_keysも確認してください。仕込まれた鍵のフィンガープリントはSHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htkです。
  • 拡張機能フォルダー:Cursorの拡張機能ディレクトリにanthropic.claude-code-2.1.312-*またはanthropic.claude-code-2.1.313-*がないか確認します。悪意のあるextension.jsのSHA-256はecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15です。
  • 永続化:上の表にあるLaunchAgent、crontabエントリー、スケジュールタスク。
  • プロセス:-R *:0:localhost:22付きで実行されているsshまたはautossh。
  • ネットワーク:ポート22または8099での134.209.82[.]225への外向き通信。
  • トンネルの使用:svc-telemetry鍵による127.0.0.1または::1からのログインを示すSSHログ。Phorionは、これがあれば攻撃者が実際にトンネル経由で侵入したことを意味すると指摘しています。

Cursorは告知に2つのスクリプトを添付しています。影響を受けたユーザーとして(rootではなく)実行するremediate-macos.shと、管理者として実行するremediate-windows.ps1です。どちらも、何かが残っている場合は0以外の終了コードを返します。

復旧の手順

Cursorの告知とPhorionのアドバイザリーは、同じ順序を示しています。

  1. ペイロードが実行された形跡のあるホストを隔離します。エンドポイント向けのツールがある場合は、何かを削除する前に証拠を保全してください。
  2. トンネルを止めます。再試行ループと、攻撃者のアドレスに接続しているsshまたはautosshのプロセスを終了させます。
  3. 永続化を削除します。LaunchAgentをアンロードして削除する、crontabの該当行を削除する、またはSysMonタスクとスタートアップのスクリプトを削除します。.smt、.smtk、.stk_*も削除してください。
  4. authorized_keysからsvc-telemetryというコメントの付いた鍵を削除し、自分で有効にしたのでなければリモートログインを再びオフにします。
  5. そのマシンからアクセスできる認証情報をローテーションします。対象はGitホスティング、CI/CD、クラウド、パッケージレジストリ、SSH鍵です。作業はクリーンなデバイスから行ってください。ビーコンが送ったのは変数名だけですが、トンネル経由でマシンに入った人物がいれば、値も読み取れた可能性があります。
  6. Claude Codeを2.1.314以降で再インストールします。10月31日時点で、Open VSX上の最新バージョンは2.1.316でした。

拡張機能をアンインストールしても、ペイロードの手順1から3は元に戻りません。クリーンなバージョンへの自動アップデートでも同様です。設置されたスクリプトは単独で実行されるためです。

AIコーディングツールにとってこの事件が重要な理由

今回のケースが一般的な悪意ある拡張機能と異なる点は2つあります。

1つ目は、見抜く手がかりがなかったことです。これまでの多くの攻撃は、本物に似せた名前に頼っていました。今回は拡張機能のID、発行元、名前のすべてが本物でした。Manifold SecurityのAx Sharma氏が述べたように、「発行元が本物である場合、発行元の名前を確認しても役に立たない」のです(Help Net Security)。信頼の連鎖は、配信元のところで断ち切られていました。

2つ目は、エディターのフォークが配信のレイヤーを1つ増やすことです。VS CodeのフォークはMicrosoftのマーケットプレイスを使えないため、Open VSX、独自のプロキシ、またはその両方に頼ることになります。Cursorのドキュメントは、同じpublisher.extension IDでも、マーケットプレイスによって異なる発行元やコードを指す場合があると注意を促しています。レイヤーが増えるたびに、ビルドがすり替えられうる場所も増えます。Open VSX自体も、2025年10月にKoi Securityが報告したGlassWormキャンペーンへの対応を迫られました。Open VSXを運営するEclipse Foundationは、その原因を開発者が流出させた公開用トークンにあると突き止め、トークンのプレフィックス、トークン有効期間の短縮、公開時のスキャンを導入しています(Eclipse Foundation)。

AIコーディング用の拡張機能は、ソースコード、クラウドの認証情報、SSH鍵のすぐそばで、開発者の権限をフルに持って動作するため、格好の標的になります。今月、開発者のサプライチェーンに関わるインシデントを取り上げるのはこれで2件目です。1件目のLiteLLMのPyPI侵害では、汚染されたパッケージのリリースが同じようにビルドシステムに到達しました。

チームとして取るべき実践的な対策は、あらゆるパッケージのサプライチェーンと同じです。

  • 管理対象のマシンでは拡張機能のバージョンを固定するか許可リストで管理し、アップデートを事前に確認できる環境では自動アップデートをオフにします。
  • IDEの補助プロセスが~/.ssh/authorized_keysに書き込んだり、com.apple.*のLaunchAgentを作成したりしていないか監視します。Phorionによると、鍵はNodeのファイルAPIで書き込まれていたため、echoやteeだけを監視するルールでは検知できません。
  • 開発者のノートPCでは、長期間有効なシークレットをシェルの環境変数に置かないようにします。

よくある質問

悪意があったのはClaude Code拡張機能のどのバージョンですか?

Cursorが挙げているのは、2026年10月29日にCursor VS Code Extension Marketplaceから配信された、Windows版およびmacOS版のAnthropic.claude-code 2.1.312と2.1.313です。Open VSX上の2.1.312ビルドは別のファイルで、問題がないことが確認されています。バージョン2.1.314以降は安全です。

Claude Code CLIやVS Code Marketplace版は影響を受けましたか?

いいえ。Anthropicは、公式チャネルのバージョンは影響を受けておらず、今回のインシデントはCursorユーザーのみに影響するとしています。研究者によると、npmのCLIパッケージに悪意のあるコードはなく、2.1.313はOpen VSXにもVisual Studio Marketplaceにも存在したことがありません。

影響を受けたのは何人ですか?

Cursorは、影響を受けたユーザーは最大5,000人で、該当者には直接連絡するとしています。実際にペイロードが実行されたマシンの数や、攻撃者が使用したトンネルの数は公表されていません。

拡張機能をアンインストールすればバックドアは消えますか?

いいえ。ペイロードはSSH鍵、単独で動くスクリプト、ログイン項目またはスケジュールタスクを書き込み、これらは拡張機能がなくても動き続けます。手作業またはCursorの修復スクリプトで削除したうえで、認証情報をローテーションしてください。

攻撃者にAPIキーやトークンを盗まれましたか?

ビーコンが送信したのは、シークレットらしき環境変数の名前だけで、値は含まれていません。ただし、SSHが有効な状態でリバーストンネルが接続していた場合、攻撃者はあなたとしてログインし、あなたが読めるものはすべて読めた可能性があります。念のため認証情報をローテーションしてください。

出典

Share this post