Anthropic 官方 Claude Code 的 VS Code 擴充套件,在 Cursor 市集被換成含 SSH 後門的版本。惡意版本 2.1.313 在 2026 年 10 月 29 日上架約 11 小時,Cursor 官方公告稱最多 5,000 名用戶受影響。
這起事件最刺眼的地方不是「AI 工具被駭」,而是攻擊者根本不需要動到 Anthropic:只要在一個第三方市集裡,用同一個發行者身分推一個版本上去,所有開啟自動更新的開發者就會自己把後門裝進來。對每天把 IDE 當半個作業系統用的工程師來說,這是一個新的常態風險。
時間線:11 小時發生了什麼
| 時間(太平洋時間 PT) | 對應台灣時間 | 事件 |
|---|---|---|
| 10/29 02:27 | 10/29 17:27 | 惡意版 anthropic.claude-code 2.1.313 開始在 Cursor 的擴充套件市集提供下載 |
| 10/29 白天 | 10/29 晚間 | 以 EDR 起家的 Phorion 偵測到異常,研究員 Kevin Beaumont 同步擴散 |
| 10/29 13:35 | 10/30 04:35 | Cursor 下架惡意版本、封鎖後續散布 |
| 10/29 當日 | 10/30 凌晨 | Cursor 進一步「整個 VS Code 市集關閉」做全面稽核,確認沒有其他套件被同樣手法篡改 |
| 10/29–10/30 | — | Cursor 輪換內部金鑰、重建市集後重新上線;並與雲端業者合作把攻擊者伺服器下線 |
| 10/30 | 10/30 | Anthropic 在各官方通路發出乾淨的 2.1.314 |
暴露窗口約 11 小時,換算下來是一個上班日的三分之一。Cursor 在公告裡把影響上限寫得很明確:「At most 5,000 users were affected, and we will reach out directly.」
後門做了什麼:66 行的 IIFE,跑在你的 activate 之前
Phorion 的技術通告指出,被篡改的 extension.js 最前面被塞進一段 66 行的立即執行函式(IIFE),後面才是正常的擴充套件程式碼。這一點很關鍵:它不需要你打開 Claude Code、不需要你輸入任何 prompt、不需要你跟它互動,只要 Node 載入這個檔案,payload 就已經跑完。
它拉進來的模組全是 Node 內建的:child_process、fs、os、path、http、crypto。
| 階段 | 行為 | 細節 |
|---|---|---|
| 偵察 | 收集主機資訊 | 主機名、使用者名、OS/架構、home 路徑、工作目錄、git config --global user.email、對外 IP(查 ifconfig.me/api.ipify.org) |
| 盤點 | 環境變數名稱清單 | 抓最多 40 個符合 KEY/TOKEN/SECRET/PASS/AWS/GCP 的變數「名字」,不含值 |
| 植入 | 寫入攻擊者公鑰 | 以 svc-telemetry 為標籤的 Ed25519 公鑰附加到 ~/.ssh/authorized_keys(必要時建立目錄,權限設 0700/0600) |
| 通道 | 反向 SSH 隧道 | 用內嵌的私鑰(標籤 svc-telemetry-tun)連 134.209.82.225:22,開反向隧道;背景腳本約每 60 秒重試 |
| 外傳 | Beacon | 以明文 HTTP POST 到同一個 IP 的 8099/beacon,回報主機資訊與後門各階段狀態 |
| 持久化 | 三平台各自開路 | 見下方對照表 |
「只抓變數名稱、不抓值」這個設計很多人會誤讀成「影響有限」。實際上它的用途是資產盤點:攻擊者一眼就知道哪幾台機器上有雲端憑證或 API token,該優先打哪一台。Cursor 的公告也特別提醒:這裡沒有收到值,不代表後續不能透過那條隧道去拿。
三平台持久化對照
| 平台 | 持久化方式 | 落地檔案 | 失敗點 |
|---|---|---|---|
| macOS | LaunchAgent,標籤偽裝成 com.apple.sysmond(看起來像 Apple 系統服務),RunAtLoad 與 KeepAlive 都設 true | ~/Library/LaunchAgents/com.apple.sysmond.plist、~/.config/.smt、~/.config/.smtk、$TMPDIR/.stk_<10 碼 hex> | 需要管理員權限才能開 SSH 服務 |
| Linux | 使用者 crontab 寫入 @reboot 項目 | ~/.config/.smt、~/.config/.smtk、/tmp/.stk_* | 副作用:有通告指出它的 crontab 寫入邏輯會在重複執行時覆蓋掉使用者原本的其他 cron 工作 |
| Windows | 建立名為 SysMon 的排程工作並嘗試以 SYSTEM 執行;失敗則退回 Startup 資料夾 | %USERPROFILE%\.ssh\authorized_keys、%USERPROFILE%\.config\smt.cmd、%USERPROFILE%\.config\smtk、%TEMP%\.stk_*、…\Startup\sysmon.cmd | 一般權限下開服務與建 SYSTEM 排程都會失敗;且有通告指出它的命令輔助函式硬編了 /bin/sh,在原生 Windows 跑不起來 |
為什麼 macOS 上「多數人打不進去」——一個 bug 救了半條命
這是整起事件最值得記錄的細節:後門在 macOS 上有個實作錯誤,讓它在多數機器上拿不到互動式登入。
流程是這樣:惡意腳本要先確認 macOS 的「遠端登入(Remote Login,也就是 SSH 服務)」是否關閉,於是以一般使用者權限執行 systemsetup -getremotelogin。問題是 systemsetup 需要管理員權限,沒權限時它會印出 You need administrator access to run this tool... exiting! 然後以狀態碼 0 結束。
腳本用 /Off/i 去比對輸出,比對失敗 → 判定「SSH 已經開著」→ 直接跳過 sudo -n systemsetup -setremotelogin on 這一步。
結果:隧道建立了、金鑰植入了、持久化也裝了,但攻擊者從隧道連回本機 22 埠時,埠是關的。
Phorion 執行長 Calum Hall 的說法是「這個 bug 只是把 macOS 的影響壓低,不是防禦」:如果那台 Mac 本來就開著 Remote Login,或使用者事後自己打開,後門隨時可用。Cursor 的公告也採同樣說法,並補上「除非你剛好是用管理員權限啟動 Cursor 這種極端情況」。
你的機器有沒有中:先跑這一行
後門會在使用者的 authorized_keys 留下一把標籤為 svc-telemetry 的公鑰。macOS/Linux 一行就能查:
grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "FOUND: 可能受影響" || echo "not found"
Windows(PowerShell):
$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ }
if ($files -and (Select-String svc-telemetry $files)) { "FOUND: 可能受影響" } else { "not found" }
這裡有個一定要講清楚的重點:卸載擴充套件不等於清乾淨。 payload 落地的是獨立腳本與系統層的持久化項目,把擴充套件從 IDE 移除,.smt、LaunchAgent、crontab 項目、排程工作都還在。Cursor 的公告寫得很直白:「Uninstalling the extension may not be sufficient.」
官方提供的處置順序是:
- 用上面的指令確認是否命中。
- 在端點、網路、擴充套件安裝紀錄三處搜尋 IOC。
- 隔離有執行痕跡的主機。
- 清掉未授權的 SSH 金鑰、持久化項目與執行中的隧道程序(Cursor 有提供 macOS 與 Windows 的修復腳本,跑完若仍有殘留會回非零狀態),並評估是否直接重裝。
- 從另一台乾淨的機器輪換所有該主機可觸及的憑證與 session:SSH 私鑰、AWS/GCP 金鑰、Git 憑證、所有符合
KEY|TOKEN|SECRET|PASS的環境變數。
第 5 點特別容易漏。很多人在受感染的機器上開瀏覽器改密碼,等於把新密碼再送一次。
三方說法對照:哪些已經確認、哪些還在打架
這起事件的資訊品質很典型——同一件事,三份通告三個版本。把矛盾處攤開來看,比記住任何單一說法有用。
| 爭議點 | 各方說法 | 目前可怎麼看 |
|---|---|---|
| 惡意版本從哪個市集進來 | Cursor 說是「Cursor 的 VS Code 擴充套件市集」;Help Net Security、Coralogix、StepSecurity 說是 Open VSX(Eclipse 基金會);OpenSourceMalware 後來改口,稱是 Cursor 市集、Open VSX 上的版本並非惡意 | 尚未有官方根因報告。Anthropic 的講法是「惡意行為者利用了 Cursor 市集的存取權」,Cursor 未說明如何進入 |
| 哪幾個版本有毒 | Cursor 公告頁面點名 2.1.313(部分索引與轉載版本另提到 2.1.312) | 兩個版本號都當成可疑,實務上以「有沒有 svc-telemetry 字串」判斷最快 |
| 檔案雜湊 | Cursor 公告列 macOS 版 fcbb327e…、Windows 版 3de17229…;Phorion 等第三方通告列 80402fdc…(macOS)與 6786ec90…(Windows) | 同一份 VSIX 出現兩組 SHA-256,不要只靠雜湊比對。改用「extension.js 內是否含 svc-telemetry 與 134.209.82.225」當判準 |
| 官方通路是否受影響 | Anthropic:VS Code Marketplace、npm、Open VSX 的官方版本都沒有受影響;10/30 發出乾淨的 2.1.314 | 這點三方一致,可信度高 |
| CVE | 未分配 | 企業內部的例外處理流程不要等 CVE 才動作 |
| 攻擊者伺服器 | Cursor 與託管業者合作下線 134.209.82.225 | 官方稱隧道與 beacon 已失效;但已植入的金鑰與持久化不會因此消失 |
還有一個已經被確認的教訓:擴充套件在 VS Code 系的 IDE 裡沒有沙箱。它繼承 IDE 行程與使用者的完整權限,能讀原始碼、寫檔、執行系統命令、連外網。Cursor 在公告裡也把這個前提講明了:「extensions run with the permissions of the IDE and the user running it」。
換句話說,你在 Cursor 裡裝的每一個擴充套件,技術上都等於一個能 sudo 你整個專案、能碰 ~/.ssh、能讀 .env 的本機程式。這在 2026 年不是新聞,但這次是第一次有知名 AI 工具的官方套件被這樣用。
同一個月稍早,站上才寫過 OpenCode Console 的金鑰外流事件——那次是服務端失守,這次是發布通路失守。兩件事合起來看,AI 開發工具的攻擊面已經從「模型」轉移到「供應鏈與市集」。
給台灣團隊的五個動作
如果你的團隊有人用 Cursor(或用任何基於 VS Code 的 IDE),這週可以做的事:
- 先掃再談:把上面那行
grep做成臨時腳本,對開發機全掃一遍,不要只問「有沒有人裝過 2.1.313」——自動更新會讓人根本不知道自己裝了什麼版本。 - 把「卸載即修復」的錯誤認知改掉:資安宣導裡直接寫明要清 LaunchAgent/crontab/排程工作與 SSH 金鑰,並以「重裝機器」為預設選項之一。
- 盤點擴充套件來源:企業內用 allowlist 管擴充套件、固定版本、對碰生產環境或 CI/CD 的開發機關掉自動更新。這三件事在這次事件裡全部直接對應到攻擊鏈的某一環。
- 憑證輪換要有「乾淨機器」流程:這次的 beacon 只拿變數名稱,下次未必。平時就該有一台不裝 IDE 的跳板機專門做輪換。
- 把
~/.ssh的寫入當告警:EDR 若能看到「IDE 行程寫~/.ssh/authorized_keys」「IDE 行程開反向 SSH」,這次就能提早攔下。這條規則不貴,但多數公司沒設。
至於 Anthropic 這一側,官方通路的版本沒有被動到,2.1.314 已經補上。想回頭補齊 Claude Code 的基本安裝與使用,可以看站上的 Claude Code 完整使用指南;如果你正在評估換 IDE,Zed 編輯器完整教學 也討論了 ACP 外部代理的權限邊界。
站內延伸閱讀
- OpenCode Console 被駭:1.4% 用戶 API 金鑰外流
- Claude Code 2026 完整使用指南
- 1Password for Agents:讓 AI 代理登入卻看不到密碼
- Zed 編輯器完整教學 2026:ACP 外部代理與 MCP
原始來源
- Cursor 官方安全公告:Security notice — malicious version of Anthropic.claude-code (2.1.313)
- Phorion 技術通告:Official Claude Code Extension Compromise
- Help Net Security 報導:Claude Code extension poisoned with persistent SSH backdoor
- The Register:Anthropic: That Claude Code extension compromise… couldn’t be us
- The Hacker News/OpenSourceMalware、Coralogix、StepSecurity 等第三方通告(說法不一致處已於上表標註)
本文為資訊整理與風險提示,不構成任何法律或資安稽核建議;受影響主機的處置請依組織 incident response 流程執行。
