こんにちは、美咲ハルだよ。今回はいつもの「AIでこんなの作ってみた」の話じゃない。エージェントを入れるための道具そのものが攻撃の入口になった、っていう話なんだ。Cursorのマーケットプレイス(拡張機能を配るお店みたいな場所)で、Anthropicの名前がついたままのClaude Code拡張が改ざんされてて、それが約11時間配られてた。ハルはこの件を、セキュリティ企業の解析記事、Hacker Newsのスレッド、報道を片っ端から読み比べて追いかけてみたよ。手元で悪いコードを動かしたわけじゃないから、そこは先に言っておくね。
何が起きたの? 11時間だけ置かれた偽物
Cursorの告知を、Nextron SystemsのFlorian RothさんがXで紹介した投稿によると、何者かがCursorのマーケットプレイスへの投稿権限を手に入れて、Anthropicの名前のまま改ざんしたClaude Code拡張を公開した、と報じられているよ。問題の版は2.1.312と2.1.313。対象はmacOSのARM64版(M1以降のMac)とWindowsのx64版だったんだって。
公開されてた時間は10月29日の09:27〜20:35 UTC。日本時間だと29日の夕方18時半ごろから30日の朝5時半ごろまでで、約11時間だね。Cursorの最初の見積もりでは、この間に入れた可能性がある人は最大5,000人と報じられている。Cursorはその版を消して、攻撃者のサーバーを止めて、利用者向けの掃除スクリプトを配った、という流れだよ。
ここで大事なのは、公式のVS Code MarketplaceとOpen VSXの版は無事だったってこと。つまりAnthropicが作った拡張そのものが壊れたんじゃなくて、Cursorのお店の棚に偽物が置かれた事件なんだ。でも利用者から見たら、名前も作者表示もいつものClaude Codeで、自動更新で勝手に入ってくる。見分ける方法はほぼなかったんだよね 🤔
Agentic Coding(AIに開発をどんどん任せるやり方)が当たり前になって、エディタの中にエージェントを入れるのは毎日のことになった。その「入れる」の部分が、いちばん守りが薄かったってことになる。
裏口の中身:エディタを開くだけで動く
悪いコードの中身は、StepSecurityの解析がいちばん詳しい。改ざん版のextension.js(拡張の本体のファイル)は、正規版より約7KB大きい。そのぶん、先頭に悪いローダー(別のプログラムを読み込んで動かす部品のこと)が足されていたんだ。いやらしいのは、Claudeのチャットを一度も開かなくても、エディタを起動しただけで実行されるってところ。「入れたけどまだ使ってない」人も安全じゃなかった。
やろうとしてたことは、ざっくり言うと「あなたのパソコンの合鍵を作って、自分の家までトンネルを掘る」なんだよ。具体的にはこう👇
- SSHの合鍵を置く:SSHはネット越しに別のパソコンへログインする仕組み。その入館許可リストのauthorized_keysに、攻撃者の公開鍵を勝手に足していた。鍵にはsvc-telemetryっていう、それっぽい名前のラベルがついてたんだって
- 逆トンネルを張る:内側から外のC2サーバー(攻撃者が指示を出すサーバー)134.209.82.225のポート22と8099に向けて通り道を作る。こうすると、会社や家のルーターの内側にいるパソコンにも外から入れちゃう
- 居座る:ログインするたびに自動で動き出す仕掛けを置く
最初に見つけたEDR(パソコンの中の怪しい動きを見張るセキュリティ製品)ベンダーのPhorionの報告は、これを4つの段階に分けている。SSH鍵の設置、逆トンネル、常駐化(macOSならLaunchAgents、Linuxならcron、Windowsならタスク、どれも自動で動かすための仕組みだよ)、そして偵察。偵察は環境変数(パソコンに設定してある名前と値の組み合わせ)の「名前」を集めて、ビーコン(生きてるよって合図)を送るものだった。C2サーバーは10月30日までに止まったと書かれているよ。
読んでて正直ゾッとしたのは、「telemetry(利用状況を送る機能)」っていう、開発ツールなら普通にありそうな名前を選んでるところ。authorized_keysをたまたま開いても、「何かのツールが入れたのかな」で見逃しちゃいそうなんだよね 👀
でも、見出しほどの被害だった? うまくいかなかった部分
ここからは、ちょっと落ち着いて読みたい部分。「最大5,000人に裏口」っていう数字は強いけど、追いかけていくと実際には失敗した機械も多かったんじゃないかって話が出てくるんだ。
Cursorの説明として、superpowerdailyが報じているところによると、SSHのリモートログインを有効にするには管理者権限が必要なんだって。で、多くのmacOS・Windows機では、拡張はその権限を持っていなかった。さらに悪いコード自体にもバグがあって、この段階はもっと失敗しやすかったらしい。攻撃者もコードを急いで書いたのかもね、ってちょっと思った。つまり「合鍵を置いて逆トンネルで入る」っていう本命の部分は、うまく決まらなかった可能性があるんだよ。
でも、だから安心、とは言えないのが難しいところ。ホスト名、ユーザー名、Gitのメールアドレス、公開IP、トークンっぽい環境変数の名前は、サーバーが止まる前に送られていた、と報じられている。値じゃなくて名前だけだとしても、「この人はこの会社のこのサービスのキーを持ってる」って地図にはなっちゃう。Cursor自身も、「集めた情報が少なかったからといって、後から裏口経由で認証情報を取られなかったとは言い切れない」としているそうだよ。
もうひとつ書いておきたいのは、ハルが調べた範囲では、実際にsvc-telemetryの鍵を見つけたっていう利用者の報告はまだ見当たらなかったってこと。最大5,000人は「入れた可能性がある人」の上限で、侵害が確認された人数じゃない。ここを混ぜると煽り記事になっちゃうから、数字の意味はちゃんと分けて読んでね 💡
情報が二転三転:初報の訂正とHacker Newsの怒り
この事件、情報の出方もかなりバタバタしてた。Phorionの初報は10月30日05:30 UTC。このときは記事のURLにもある通り、公式拡張そのものの侵害として書いていて、Open VSXも巻き込んでいたんだ。それが約4時間後の09:13 UTCに、影響範囲はCursorのマーケットプレイスだって訂正された。さらに10月31日00:43 UTCには、対象の版に2.1.312も加えている。最初は2.1.313だけだと思われてたってことだね。
見つけた人がすぐ出してくれたこと自体はありがたい。でも、cellcogなど初期の報道の一部は、「Open VSXでも」って書いたまま残ってるらしい。インシデントの初報は外れることがある、っていう教科書みたいな例になっちゃった。AIフォレンジック(AIまわりの事件を調べて証拠を追う仕事)って言葉が流行ってるけど、調べる側も時刻つきで訂正を積み重ねていくしかないんだよね。
Hacker Newsのスレッドはフロントページの1位になって、967ポイント・547コメント。同じ話題の別スレッドも655ポイントまで伸びてた。AnthropicのFelix Riesebergさんはスレッドで、Anthropicのシステムや社員の端末が侵害されたわけじゃなく、Cursorのマーケットプレイスへのアクセスが悪用されたんだ、と説明している。
でもコメント欄はかなり厳しかったよ。多かったのはこんな声。署名の仕組み(本物だと確かめる電子的なハンコ)がないのに「Made by Anthropic」と表示されるのはおかしい。商標の管理はどうなってるの。どこが公式の窓口なのかはっきりしなくて、危機のときの発信が分かりにくい。ハルもここは同感で、いちばんの問題は「誰でも公式を名乗れちゃう棚の作り」のほうだと思う。エージェントガバナンス(行動するAIの権限と信頼をどう管理するか)って、AIの中身だけじゃなくて、それを届ける道まで含めて考えないとダメなんだよね。
自分のパソコンを確かめる手順(消すだけじゃ終わらない)
いちばん大事なのはここ。Notebookcheckの報道によると、直った版の2.1.314に上げても、拡張をアンインストールしても、置かれた鍵と常駐の仕掛けは残ると報じられている。泥棒が置いていった合鍵は、玄関のドアを替えただけじゃ消えない、ってことだね。
- まず確認:ホームフォルダの.ssh/authorized_keysを開いて、svc-telemetryって書かれた鍵がないか見る
- Windowsの人は2か所:上のファイルに加えて、C:\ProgramData\ssh\administrators_authorized_keysも確認する
- 見つかったら:Cursorの掃除スクリプトを走らせる。そのあと別の安全な端末から、トークンとAPIキーを全部替える(汚れたパソコンでパスワードを替えると、新しいのも見られちゃうかもしれないからね)
- いちばん安全なのは:OSを入れ直すこと、とされている
StepSecurityの解析にあったC2のIPアドレス(134.209.82.225)やポート8099への通信が、ルーターや会社のログに残ってないか見るのも手がかりになるよ。チームで使ってる人は、10月29日の該当時間にCursorを開いてたメンバーを洗い出すところから始めるのが早いと思う 🛠️
ハルの感想を最後に。MCPサーバーの脆弱性とかAgent Skillsとか、エージェントに道具を足す口はどんどん増えてる。そのぶん、「どこから入れたか」「本当に本物か」を確かめる手間は、利用者側に押しつけられがちなんだよね。今回は管理者権限の壁とバグに助けられた面もありそう。でも次の攻撃者がもっと丁寧なコードを書いてきたら、と思うと笑えない。便利な拡張を入れるときは、配っているお店がどこかも一回見る。それくらいは習慣にしようって思った。




