Cursorに入れたClaude Code拡張は無事か、自分と社員のMacを確かめるには

ちさと
ちさと

@chisato_it ・ 1本

サムネイル

10月29日、Cursorの拡張機能マーケットプレイスでClaude Code拡張の改ざん版2.1.312と2.1.313が配られ、入れたMacやWindowsにSSHのバックドア(外から自分のPCへログインするための合鍵)が置かれました。自分のMacに鍵が残っていないかは、コマンド1行で確かめられます。1台の確かめ方から、見つかったときの対処、社員全員に送る連絡文と返事の集め方まで順に書きます。

配られていたのは、日本時間で10月29日18時27分から30日5時35分までの約11時間です。自分で更新した覚えがなくても、自動更新で入っている可能性があります。あなたの会社で、Cursorを使っている人を全員言えますか?

まず1台、svc-telemetryの鍵があるかを確かめる

改ざん版は、SSHでのログインを許す鍵の一覧ファイル ~/.ssh/authorized_keys に、svc-telemetry という名前の鍵を書き足します。Cursorが公開した確認方法は、この名前があるかを見る1行です。

Macは公式の1行で十分です

ターミナルに貼って、Enterを押してください。

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

No key found; machine not impacted と出れば、鍵は置かれていません。私のMac(M1 Max、macOS 15.0)では、authorized_keys 自体がありませんでした。svc-telemetry key found と出たら、このあとの「バックドアが見つかったときの対処」に進んでください。

Windowsは管理者用の鍵ファイルも見る

Windowsでは C:\ProgramData\ssh\administrators_authorized_keys も確かめます。Cursorが公開しているPowerShellの2行です。

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

常駐の痕跡は、タスクスケジューラの SysMon と、スタートアップフォルダの sysmon.cmd です。

鍵が無くても見ておく、バックドアの痕跡

鍵の1行で分かるのは、鍵があるかどうかだけです。改ざん版は、ログインのたびに動く常駐ファイルも置きます。私はPhorionの解析で公開された痕跡をもとに、自分のMacで8項目を確かめました。どれも読むだけのコマンドで全部で数秒、管理者権限なしで7項目まで見られました。

常駐ファイルと一時ファイル

# 常駐ファイル(3つとも「No such file or directory」なら無し)
ls -la ~/Library/LaunchAgents/com.apple.sysmond.plist ~/.config/.smt ~/.config/.smtk

# トンネル用の一時鍵(何も出なければ無し)
ls -a /tmp "$TMPDIR" | grep '^\.stk_'

# 外へ向けたSSHトンネルが動いていないか(何も出なければ無し)
pgrep -lf 'ssh .*-R'

com.apple.sysmond.plist はAppleのファイルに見える名前ですが、改ざん版が置く常駐ファイル(ログイン時に自動で動く設定)です。私のMacでは3つとも「No such file or directory」で、一時鍵もトンネルもありませんでした。

通信先 134.209.82[.]225 への接続も無しでした。ただ、このサーバーはCursorが事業者と協力してすでに止めています。過去に通信したかを知りたいなら、社内のファイアウォールやプロキシのログをこのIPで探してください。

Cursorの拡張フォルダに残る版

ls -d ~/.cursor/extensions/anthropic.claude-code-*

私のMacでは、ここで45個のフォルダが出てきました。1.0.61と、2.1.70から2.1.179までの古い版が、消されずにたまっていたのです。使っている版は2.1.179で、該当版には上がっていませんでした。あなたのCursorには、いくつ残っていましたか?

古い版がこれだけ残るなら、2.1.312か2.1.313のフォルダが見つかれば、一度入った手がかりになります。ただし、フォルダが無くても入らなかったとまでは言えません。鍵と常駐ファイルの確認と合わせて判断してください。

版番号だけでも白黒はつきません。Open VSXに公開された正規の2.1.312は正常で、改ざん版が出回ったのはCursorのマーケットプレイスだけです。見るべきは「Cursor経由で、該当の時間帯に入ったか」です。

リモートログインがオンか

鍵が置かれても、MacのSSHが止まっていれば、その鍵ではログインできません。改ざん版はSSHをオンにしようとしますが、それには管理者権限が要り、多くのMacとWindowsではその権限が無いとCursorは説明しています。

一番早いのは、「システム設定」の「一般」から「共有」を開き、「リモートログイン」がオフかを見ることです。ターミナルの systemsetup -getremotelogin は、一般ユーザーの私では「You need administrator access」で止まりました。代わりに launchctl print system/com.openssh.sshd で、sshdが読み込まれていないことを確かめています。社員に頼むなら、画面を見てもらうほうが確実です。

Cursor版Claude Code拡張で何が起きたのか?

項目
内容
対象
Cursorのマーケットプレイスから入ったClaude Code拡張 2.1.312と2.1.313(macOSとWindows)
時間帯
太平洋時間10月29日2時27分〜13時35分(日本時間29日18時27分〜30日5時35分)
置かれるもの
svc-telemetry の鍵、常駐ファイル、外向きのSSHトンネル
送られた情報
ホスト名、ユーザー名、OS、Gitのメールアドレス、グローバルIP、認証情報らしい環境変数の名前(最大40個)

環境変数は名前だけで、値は送っていないとPhorionは書いています。それでも「このPCにはAWSやGitHubの鍵がある」と相手に伝わります。対象になり得た開発者は、報道では最大約5,000人です。Cursorはマーケットプレイスをいったん止め、ほかの拡張に改ざんが無いことを確かめてから再開しました。

海外では「Anthropicがハッキングされた」という見出しも出ましたが、裏付けはありません。AnthropicのFelix Rieseberg(フェリックス・リーゼバーグ)さんは、自社のシステムや社員のPCの侵害ではなく、悪意ある者がCursorのマーケットプレイスへのアクセスを使って改ざん版を公開したと説明しています(StepSecurityの記事より)。攻撃者がどうやってAnthropic名義の枠に載せたのかは、10月31日時点で公表されていません。

バックドアが見つかったときの対処

鍵か常駐ファイルが1つでも見つかったら、そのMacは影響を受けたものとして扱ってください。Cursorは、拡張のアンインストールだけでは足りないおそれがあるとしています。常駐ファイルが拡張とは別に動き続けるからです。

  1. Wi-Fiを切り、LANケーブルも抜いて、ネットから外す
  2. Cursorの告知に添付された remediate-macos.sh を、そのMacを使っていたユーザーで実行する(rootでは実行しない)。Windowsは remediate-windows.ps1 を「管理者として実行」で開いたPowerShellから実行する
  3. Claude Code拡張の該当版をアンインストールする
  4. 別の信頼できるPCから、そのユーザーで使えた認証情報とセッションを替える
  5. Macを初期化して作り直すかを決める

そのMacで、APIキーを環境変数に入れていませんでしたか?替える順番は、名前が送られた環境変数が先です。Phorionは、名前に KEY TOKEN SECRET PASS AWS GCP を含むものを優先するよう書いています。対象のMacで次を流すと、値は出さずに名前だけが並びます。

env | cut -d= -f1 | grep -E 'KEY|TOKEN|SECRET|PASS|AWS|GCP'

続けて ~/.ssh の秘密鍵、GitHubのトークン、クラウドのCLIに保存された認証情報も替えます。作業は必ず別のPCで行ってください。対象のMacで新しいパスワードを打つと、それも見られるおそれがあります。リモートログインがオンだったMacは、作り直す前提で動くのが安全です。

社員全員に送るCursor拡張の確認依頼

全社に頼むのは、鍵の1行だけで十分です。常駐ファイルまで頼むとコマンドが4本に増え、貼り間違いと問い合わせが増えます。痕跡の確認は、Claude Code拡張を使っていた人の分だけ、担当者が席で見るほうが早く終わります。

連絡文は、〇〇の部分を埋めればそのまま送れます。

件名:【至急・5分】Cursorを入れている方へ、パソコンの確認のお願い(〇月〇日〇時まで)

株式会社〇〇 各位

情報システム担当の〇〇です。

10月29日の夜から30日の早朝(日本時間)にかけて、Cursorの拡張機能の配布元で、
Claude Code拡張の偽物(バージョン2.1.312と2.1.313)が配られました。
入ってしまったパソコンには、外から入り込むための鍵が置かれた可能性があります。

Cursorを一度でも入れたことがある方は、次の確認をお願いします。5分で終わります。
Cursorを入れていない方も、「入れていない」と一言だけ返信してください。

■ Macの方
1. Command + スペースを押し、「ターミナル」と入力してEnterを押します
2. 次の1行をコピーして貼り付け、Enterを押します

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

3. 表示された英文1行を、そのままコピーします

■ Windowsの方
スタートメニューで「PowerShell」と入力して開き、次の2行を貼り付けてEnterを押します。

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

■ 返信の書き方(このメールに返信してください)
名前 / Mac か Windows / 表示された英文1行
例:山田 / Mac / No key found; machine not impacted

■ 「svc-telemetry key found」と出た方
・その場でWi-Fiを切り、LANケーブルも抜いてください
・ファイルを消したり設定を変えたりせず、すぐ〇〇(電話 〇〇)に連絡してください

期限:〇月〇日(〇)〇時
分からないところは、画面の写真を送ってもらえれば大丈夫です。

返信を「名前、端末、英文1行」に絞ったのは、届いたものを表に貼るだけで集計できるからです。Cursorを入れていない人にも返信を求めるのは、「入れていない」と「まだ見ていない」を分けるためです。黙っている人がどちらなのか、あとから見分けられなくなります。

Cursorの確認結果は、1枚の表で集める

返事はスプレッドシート1枚にまとめます。列は6つで足ります。

名前
端末
Cursor
鍵の結果
確認日時
対応
山田
Mac
入れている
No key found
10/31 14:05
完了
佐藤
Windows
入れていない
対象外
10/31 14:20
完了
鈴木
Mac
不明
返信なし
翌朝、席で確認

先に社員名簿を貼って、全員の行を作っておいてください。返信が来た人から埋めれば、期限の時点で残った空欄が、そのまま声をかける相手の一覧になります。空欄の人にはチャットで1回送り、それでも返事が無ければ翌朝に席へ行って、その場で1行を流してもらいます。「大丈夫でした」のような英文以外の答えも、同じ扱いです。

MDM(社用PCをまとめて管理するツール)があるなら、同じ1行を配信して結果を回収できます。1台を複数人で使っているMacは、アカウントごとに確かめてください。鍵のファイルはユーザーごとに別です。

埋まった表は、確認日時ごと残しておきます。取引先から「御社は大丈夫でしたか」と聞かれたとき、この表がそのまま答えになります。

次にCursorの拡張機能を入れる前に

今回の改ざん版は、Anthropic名義の拡張として、いつもの更新と同じ形で届きました。入れる側が見た目で見抜くのは難しく、効くのは誰がどの拡張を入れているかをすぐ言える状態です。今回の表に「入れている拡張」の列を足せば、次に同じ知らせが来たとき、確認を頼む相手を最初から絞れます。

まず1台、確かめてください。鍵の1行は数秒で終わります。