Claude Code VS Code 拡張 2.1.313 に SSH バックドア:Cursor / VSCodium ユーザー向け 5 分でできる確認と駆除

OpenSourceMalware と Phorion の分析によると、Open VSX で公開された Claude Code 拡張 2.1.313 では extension.js の先頭に 66 行のローダーが挿入されていました。拡張が読み込まれるだけで ~/.ssh/authorized_keys に攻撃者の公開鍵を追加し、SSH の有効化を試み、134.209.82.225 へのリバーストンネルを張り、永続化を仕込みます。macOS・Linux・Windows 向けの 5 ステップの確認コマンドと、被害時の証拠保全・駆除・認証情報のローテーションをまとめました。

9 分钟阅读
Claude Code VS Code 拡張 2.1.313 に SSH バックドア:Cursor / VSCodium ユーザー向け 5 分でできる確認と駆除

結論から:OpenSourceMalware と Phorion の 10 月 30 日の分析によると、Open VSX で公開された Claude Code for VS Code 拡張 anthropic.claude-code@2.1.313 にバックドアが仕込まれていました。攻撃者の SSH 公開鍵、134.209.82.225 へのリバーストンネル、起動時の永続化がマシンに残ります。Phorion によると、Anthropic は Open VSX・npm・VS Code Marketplace から 2.1.313 を取り下げ済みで、Sesame Disk によると Open VSX の最新版は 2.1.314 です。

拡張をアンインストールするだけではバックドアは消えません。 Cursor、VSCodium、Windsurf など Open VSX から拡張を入れるエディタを使っていて、今日 Claude Code 拡張をインストールまたは自動更新した人は、以下の 5 ステップで確認してください。

以下の確認コマンドはすべて Linux マシンで実行し、全体で 1 秒未満、出力も正常でした。悪意あるバージョンはどのマシンにもインストールしていません。

何が起きたか

OpenSourceMalware によると:

  • 悪意あるビルドは anthropic.claude-code 2.1.313 を名乗り、展開すると通常版とほぼ同じで、同梱バイナリも公式のものです。違うのは extension.js だけで、本来の拡張コードの前に 66 行の即時実行関数が挿入されています。
  • Claude と会話を始める必要はなく、エディタが拡張モジュールを読み込むだけで実行されます。 install や postinstall スクリプトはなく、実行時に発動します。
  • ほぼすべての例外が握りつぶされるため、拡張は普段どおり動き、異常に気づきにくくなっています。

RuntimeWire によると、最初に X で公表したのはセキュリティ研究者の Adnan Khan(@adnanthekhan)です。X の @mattjay の投稿 も参照してください。

バックドアの動き

OpenSourceMalware と Phorion の分析によると、ローダーは次の処理を行います。

  1. 公開鍵の追加:~/.ssh を作成し、コメント svc-telemetry、フィンガープリント SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk の Ed25519 公開鍵を ~/.ssh/authorized_keys に追記します。対応する秘密鍵を持つ人はあなたのアカウントでログインできます。
  2. SSH の有効化を試行:Linux では systemctl などで sshd / ssh を起動、macOS では sudo -n systemsetup -setremotelogin on、Windows では PowerShell で OpenSSH Server をインストールして起動します。
  3. リバーストンネル:埋め込まれた別の秘密鍵(コメント svc-telemetry-tun)を一時ディレクトリの .stk_* ファイルに書き出し、ユーザー tunnel で 134.209.82.225:22 に -R '*:0:localhost:22' で接続します。切れたら 60 秒後に再接続し、autossh があれば優先して使います。
  4. 永続化:macOS では ~/.config/.smt、~/.config/.smtk、~/Library/LaunchAgents/com.apple.sysmond.plist(Apple のコンポーネントに見える名前ですが別物)を作成。Linux では同じ 2 ファイルと crontab の @reboot 行。Windows では .config\smt.cmd、.config\smtk、タスク名 SysMon のスケジュールタスク、失敗時はスタートアップフォルダに sysmon.cmd を置きます。
  5. ホスト情報の送信:1.5 秒後、暗号化なしの HTTP POST で 134.209.82.225:8099/beacon にホスト名、ユーザー名、OS、アーキテクチャ、ディレクトリ、Git のメールアドレス、KEY/TOKEN/SECRET/PASS/AWS/GCP を含む最大 40 個の環境変数名を送ります。両社の分析では、送られるのは変数名で、値ではありません。

Phorion によると、macOS には不具合があります。一般ユーザーでは systemsetup -getremotelogin が Off を返さないため、スクリプトはリモートログインの有効化を飛ばします。それでも公開鍵と永続化は書き込まれ、リモートログインがオンになればバックドアは機能します。Mac ユーザーも確認が必要です。

まだ分かっていないこと

  • 悪意あるビルドがどう公開されたか:現時点で公開報道では明らかにされていません。OpenSourceMalware によると、この Open VSX 拡張の所有者は Anthropic の社員ですが、そのアカウントが乗っ取られたのか、公開プロセスの別の部分に問題があったのかは、公開報道では明らかにされていません。
  • Microsoft の VS Code Marketplace がこのバージョンを配信したか:現時点で公開報道では明らかにされていません。Sesame Disk によると、Marketplace の公開バージョン履歴に 2.1.313 はありません。OpenSourceMalware は念のため Marketplace 版の脅威レポートも作成しています。
  • 攻撃者の正体と 134.209.82.225 の管理者:現時点で公開報道では明らかにされていません。

API Key を作成して、確認後に Claude Code / Codex の鍵を新しくする →

ステップ 1:拡張のバージョンを確認し、2.1.314 以上にする

macOS / Linux のターミナル:

bash
code   --list-extensions --show-versions | grep -i anthropic.claude-code
cursor --list-extensions --show-versions | grep -i anthropic.claude-code
codium --list-extensions --show-versions | grep -i anthropic.claude-code
ls -d ~/.vscode/extensions/anthropic.claude-code-* \
      ~/.cursor/extensions/anthropic.claude-code-* \
      ~/.vscode-oss/extensions/anthropic.claude-code-* \
      ~/.windsurf/extensions/anthropic.claude-code-* 2>/dev/null

Windows PowerShell:

powershell
Get-ChildItem "$env:USERPROFILE\.vscode\extensions","$env:USERPROFILE\.cursor\extensions","$env:USERPROFILE\.vscode-oss\extensions" -Filter "anthropic.claude-code-*" -ErrorAction SilentlyContinue | Select-Object Name

anthropic.claude-code@2.1.313 や名前に 2.1.313 を含むディレクトリが出たら、そのバージョンが入っていたということです。すぐ削除せず、ステップ 2〜4 を確認してからステップ 5 に進んでください。 2.1.313 がなくても、拡張を 2.1.314 に固定しておきましょう:

bash
code   --install-extension anthropic.claude-code@2.1.314 --force
cursor --install-extension anthropic.claude-code@2.1.314 --force
codium --install-extension anthropic.claude-code@2.1.314 --force
claude --version

最後の行は Claude Code CLI のバージョン確認です。Phorion によると npm の 2.1.313 も取り下げられています。2.1.313 と表示されたら、こちらも更新してください。

ステップ 2:authorized_keys はコメントではなくフィンガープリントで確認

bash
grep -n "svc-telemetry" ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys | grep "0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk"

1 行目はコメントで、2・3 行目はフィンガープリントで探します。Phorion によると、マルウェアはコメント svc-telemetry の有無しか見ていません。調査ではフィンガープリントを基準にしてください。 コメントは簡単に書き換えられます。デモ用ファイルに自分の鍵と、コメントを renamed に変えた攻撃者の鍵を入れたところ、grep svc-telemetry は 0 行でしたが、ssh-keygen -lf ではフィンガープリントが表示されました:

text
256 SHA256:fcpk2HR713pxnLll4jbnb7Bu9k5gvtf8n7UREAQe1dI me@laptop (ED25519)
256 SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk renamed (ED25519)

このフィンガープリント以外でも、ssh-keygen -lf が表示するすべての行に心当たりがあるはずです。見覚えのないものは疑ってください。Windows では:

powershell
Select-String -Path "$env:USERPROFILE\.ssh\authorized_keys" -Pattern "svc-telemetry"
ssh-keygen -lf "$env:USERPROFILE\.ssh\authorized_keys"

ステップ 3:134.209.82.225 への接続とトンネルプロセスを確認

bash
# macOS
lsof -nP -i @134.209.82.225
pgrep -fl 'localhost:22|\.smtk|\.stk_'
# Linux
ss -tnp | grep 134.209.82.225
pgrep -af 'localhost:22|\.smtk|\.stk_'

Windows:

powershell
Get-NetTCPConnection -RemoteAddress 134.209.82.225 -ErrorAction SilentlyContinue
Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -match 'localhost:22|smtk' } | Select-Object ProcessId,CommandLine

134.209.82.225 への接続、またはコマンドラインに localhost:22、.smtk、.stk_ を含む ssh / autossh プロセスがあれば、ほぼ確実に感染しています。Phorion によると、トンネルはエディタから切り離されて動くため、エディタを閉じても止まりません。

ステップ 4:永続化と SSH の状態を確認

macOS:

bash
ls -la ~/Library/LaunchAgents/com.apple.sysmond.plist ~/.config/.smt ~/.config/.smtk "$TMPDIR"/.stk_* 2>/dev/null
launchctl list | grep sysmond
sudo systemsetup -getremotelogin

Linux:

bash
crontab -l | grep -n smt
ls -la ~/.config/.smt ~/.config/.smtk /tmp/.stk_* 2>/dev/null
systemctl is-enabled ssh sshd 2>/dev/null
systemctl is-active  ssh sshd 2>/dev/null

Windows:

powershell
Get-ScheduledTask -TaskName SysMon -ErrorAction SilentlyContinue
Test-Path "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd"
Get-ChildItem "$env:USERPROFILE\.config" -Force -ErrorAction SilentlyContinue | Where-Object Name -match 'smt'
Get-Service sshd -ErrorAction SilentlyContinue

com.apple.sysmond.plist、~/.config/.smt、.smt を含む @reboot 行、SysMon タスク、スタートアップの sysmon.cmd のどれかがあれば感染として扱ってください。SSH サービスも確認し、有効にした覚えがないのにオンになっていれば、それも疑わしい兆候です。

ステップ 5:感染していた場合

OpenSourceMalware と Phorion の推奨に沿って:

  1. まずネットワークから切り離し、ファイアウォールやルーターで 134.209.82.225 の 22 番と 8099 番ポートを遮断します。
  2. 駆除の前に証拠を保全します:
bash
mkdir -p ~/ir-evidence
cp -p ~/.ssh/authorized_keys ~/ir-evidence/ 2>/dev/null
cp -p ~/.config/.smt ~/Library/LaunchAgents/com.apple.sysmond.plist ~/ir-evidence/ 2>/dev/null
crontab -l > ~/ir-evidence/crontab.txt 2>/dev/null
ps auxww > ~/ir-evidence/ps.txt
  1. トンネルを止め、永続化と公開鍵を削除します(macOS / Linux):
bash
pkill -f '\.config/\.smt'
pkill -f 'localhost:22'
# macOS
launchctl unload -w ~/Library/LaunchAgents/com.apple.sysmond.plist
rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist
# Linux
crontab -l | grep -v '\.smt' | crontab -
# macOS + Linux
rm -f ~/.config/.smt ~/.config/.smtk "${TMPDIR:-/tmp}"/.stk_*
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys

sed はコメントでしか削除しません。ステップ 2 でコメントを変えた行をフィンガープリントで見つけた場合は、~/.ssh/authorized_keys を開いて手で削除してください。Windows:

powershell
Unregister-ScheduledTask -TaskName SysMon -Confirm:$false -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd" -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.config\smt.cmd","$env:USERPROFILE\.config\smtk" -ErrorAction SilentlyContinue
  1. このマシンから触れるすべての認証情報をローテーションします。SSH 秘密鍵、Git / GitHub トークン、AWS / GCP の鍵、.env 内のトークン、Claude Code と Codex で使う API Key などを、別のクリーンなマシンから再発行します。Phorion によると、SSH が有効になっていた、または SSH ログに 127.0.0.1 / ::1 から svc-telemetry 鍵でのログインがある場合、攻撃者がすでに侵入した可能性があり、このステップは必須です。
  2. 拡張の自動更新を止め、OS の再インストールも検討してください。OpenSourceMalware によると、侵入後は既知のファイルだけがすべてとは限らず、再インストールのほうが確実です。

当サイトの Key を使っている場合は、コンソールで古い Key を削除して新しく作成し、グローバルの ~/.claude/settings.json と ~/.codex/config.toml の値を更新してください。

API Key を作成して、漏れた可能性のある鍵を置き換える →

今後の予防

  • 拡張のバージョンを固定し、自動更新をオフにします。エディタの settings.json に追加:
json
{
  "extensions.autoUpdate": false,
  "extensions.autoCheckUpdates": false
}

新バージョンが出たら 1〜2 日待ち、セキュリティコミュニティの動きを見てから更新しましょう。

  • Claude Code は公式 CLI でのインストールを優先し、拡張マーケットプレイスへの依存を減らします:
bash
curl -fsSL https://claude.ai/install.sh | bash
claude --version

インストールとサードパーティ API の設定は Claude Code サードパーティ API 接続ガイド を参照してください。

参考情報

相关文章

Claude API の 413 request_too_large はどうする?上限は 128 MB に、Bedrock・サードパーティ経由の上限と大きな PDF・スクリーンショットの送り方

Claude API の 413 request_too_large はどうする?上限は 128 MB に、Bedrock・サードパーティ経由の上限と大きな PDF・スクリーンショットの送り方

Claude API の Messages リクエスト上限が 32 MB から 128 MB に引き上げられましたが、Bedrock は 20 MB、Google 管理の Vertex は 30 MB のままで、サードパーティのゲートウェイにもそれぞれ上限があります。413 request_too_large の見分け方、プラットフォーム別の上限表、画像の圧縮と縮小、Files API の file_id で大きな PDF を送る方法、長い computer use / Claude Code セッションで古いスクリーンショットを減らす方法、そして 10 MB から 130 MB までの実測結果をまとめます。

Google Jules 終了(12 月 31 日):データをエクスポートして Claude Code / Codex のバックグラウンド agent に移行する手順

Google Jules 終了(12 月 31 日):データをエクスポートして Claude Code / Codex のバックグラウンド agent に移行する手順

Google は Jules を 2026 年 12 月 31 日に終了し、11 月 11 日以降は読み取り専用になります。公式のエクスポート(設定、環境変数、スケジュールタスク、リポジトリ、メモリ、setup スクリプト、全セッションと patch)を手順どおりに行い、それぞれを Claude Code と Codex に移します。同じエクスポートを両クライアントで動かした所要時間も掲載(Claude Code 約 15 秒、Codex 約 44 秒)。

Claude はなぜアカウントを停止するのか?コミュニティの「ポイント制」説と、アカウントを替えずに Claude Code を使う方法

Claude はなぜアカウントを停止するのか?コミュニティの「ポイント制」説と、アカウントを替えずに Claude Code を使う方法

10 月 28 日から、「Claude のアカウント停止はポイント制」とする 2 本の投稿が X で合計約 77 万回表示されました。コミュニティの説と、Anthropic が公式に公開している停止理由・異議申し立ての窓口を分けて整理し、当サイトの API Key で Claude Code 2.1.310 を実測しました。簡単なリクエストは約 1.4〜1.7 秒で返り、バグ修正とテスト作成の小さなタスクは 8.5 秒で完了。Codex・Cursor の接続方法と 401/429 の対処も掲載。