結論から: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-code2.1.313 を名乗り、展開すると通常版とほぼ同じで、同梱バイナリも公式のものです。違うのはextension.jsだけで、本来の拡張コードの前に 66 行の即時実行関数が挿入されています。 - Claude と会話を始める必要はなく、エディタが拡張モジュールを読み込むだけで実行されます。 install や postinstall スクリプトはなく、実行時に発動します。
- ほぼすべての例外が握りつぶされるため、拡張は普段どおり動き、異常に気づきにくくなっています。
RuntimeWire によると、最初に X で公表したのはセキュリティ研究者の Adnan Khan(@adnanthekhan)です。X の @mattjay の投稿 も参照してください。
バックドアの動き
OpenSourceMalware と Phorion の分析によると、ローダーは次の処理を行います。
- 公開鍵の追加:
~/.sshを作成し、コメントsvc-telemetry、フィンガープリントSHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htkの Ed25519 公開鍵を~/.ssh/authorized_keysに追記します。対応する秘密鍵を持つ人はあなたのアカウントでログインできます。 - SSH の有効化を試行:Linux では
systemctlなどでsshd/sshを起動、macOS ではsudo -n systemsetup -setremotelogin on、Windows では PowerShell で OpenSSH Server をインストールして起動します。 - リバーストンネル:埋め込まれた別の秘密鍵(コメント
svc-telemetry-tun)を一時ディレクトリの.stk_*ファイルに書き出し、ユーザーtunnelで134.209.82.225:22に-R '*:0:localhost:22'で接続します。切れたら 60 秒後に再接続し、autosshがあれば優先して使います。 - 永続化: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を置きます。 - ホスト情報の送信: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 のターミナル:
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:
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 に固定しておきましょう:
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 はコメントではなくフィンガープリントで確認
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 ではフィンガープリントが表示されました:
256 SHA256:fcpk2HR713pxnLll4jbnb7Bu9k5gvtf8n7UREAQe1dI me@laptop (ED25519)
256 SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk renamed (ED25519)
このフィンガープリント以外でも、ssh-keygen -lf が表示するすべての行に心当たりがあるはずです。見覚えのないものは疑ってください。Windows では:
Select-String -Path "$env:USERPROFILE\.ssh\authorized_keys" -Pattern "svc-telemetry"
ssh-keygen -lf "$env:USERPROFILE\.ssh\authorized_keys"
ステップ 3:134.209.82.225 への接続とトンネルプロセスを確認
# 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:
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:
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:
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:
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 の推奨に沿って:
- まずネットワークから切り離し、ファイアウォールやルーターで
134.209.82.225の 22 番と 8099 番ポートを遮断します。 - 駆除の前に証拠を保全します:
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
- トンネルを止め、永続化と公開鍵を削除します(macOS / Linux):
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:
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
- このマシンから触れるすべての認証情報をローテーションします。SSH 秘密鍵、Git / GitHub トークン、AWS / GCP の鍵、
.env内のトークン、Claude Code と Codex で使う API Key などを、別のクリーンなマシンから再発行します。Phorion によると、SSH が有効になっていた、または SSH ログに127.0.0.1/::1からsvc-telemetry鍵でのログインがある場合、攻撃者がすでに侵入した可能性があり、このステップは必須です。 - 拡張の自動更新を止め、OS の再インストールも検討してください。OpenSourceMalware によると、侵入後は既知のファイルだけがすべてとは限らず、再インストールのほうが確実です。
当サイトの Key を使っている場合は、コンソールで古い Key を削除して新しく作成し、グローバルの ~/.claude/settings.json と ~/.codex/config.toml の値を更新してください。
API Key を作成して、漏れた可能性のある鍵を置き換える →
今後の予防
- 拡張のバージョンを固定し、自動更新をオフにします。エディタの
settings.jsonに追加:
{
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
}
新バージョンが出たら 1〜2 日待ち、セキュリティコミュニティの動きを見てから更新しましょう。
- Claude Code は公式 CLI でのインストールを優先し、拡張マーケットプレイスへの依存を減らします:
curl -fsSL https://claude.ai/install.sh | bash
claude --version
インストールとサードパーティ API の設定は Claude Code サードパーティ API 接続ガイド を参照してください。
- 拡張・プラグイン・MCP の権限の境界を理解する:エディタ拡張はあなたと同じ権限で動き、ローカルファイル、ターミナル、認証情報を読めます。Codex Plugin・Skill・MCP・Internet Access の境界 と Codex 自動化と Playwright MCP のセキュリティガイド が参考になります。
- 自分のプロジェクトも定期的に監査する:Cloudflare security-audit skill で Claude Code にセキュリティ監査をさせる 方法があります。
- 鍵をすべてのプロセスから見える環境変数に置きっぱなしにしないこと。鍵の差し替え方は Codex API Key の設定 を参照してください。



