2026 年 10 月 29 日(北京時間 17:27 到次日 04:35,約 11 小時),Cursor 擴展市場裏的官方 Claude Code 擴展被替換成一個 帶 SSH 後門的惡意構建。受影響版本是 2.1.312 和 2.1.313,平臺爲 macOS arm64 和 Windows x64。Cursor 稱最多約 5,000 名用戶下載或自動更新過它。
這不是山寨插件混進了市場。 用戶裝到的包名是官方的 Anthropic.claude-code,界面和功能也和平時一樣,所以很多人並不知道自己裝過。也正因爲如此,只卸載擴展或升級版本還不夠。惡意代碼已經寫入一把 SSH 公鑰、設置了開機自啓的持久化腳本,並把主機信息發給了攻擊者。真正需要收尾的是三件事:清掉 key、清掉持久化、輪換憑據。
核心價值:本文按「會看到什麼 → 做什麼 → 怎麼判斷成功」的順序拆成 5 步。非安全專業的開發者照着做,大約半小時可以完成自查和清理,包括 API易 Key 的輪換。

圖注:惡意窗口約 11 小時,2.1.314 是事件後第一個乾淨版本。
先別慌:Claude Code 擴展被投毒到底發生了什麼
先把事實列清楚。下表的信息全部來自 Cursor 安全公告,以及 Anthropic 員工的公開回應。
| 項目 | 事實 |
|---|---|
| 事件 | Cursor 擴展市場中的 Anthropic.claude-code 被篡改,植入持久化 SSH 後門 |
| 受影響版本 | 2.1.312 和 2.1.313(Cursor 於 10 月 30 日更新公告時補入 2.1.312) |
| 平臺 | macOS(darwin-arm64)、Windows(win32-x64);代碼裏也有 Linux 分支 |
| 暴露窗口 | 太平洋時間 10/29 02:27–13:35,即北京時間 10/29 17:27 – 10/30 04:35 |
| 影響面 | Cursor 稱最多 5,000 名用戶,這是暴露估計,不是確診感染數 |
| 當前狀態 | 惡意版本已下架;市場經過關閉、重建、審計後已恢復;Cursor 稱攻擊者服務器已被託管商下線 |
| 乾淨版本 | 2.1.314 是第一個乾淨版,截至 10 月 31 日最新爲 2.1.316 |
圖注:Cursor 安全公告頁截圖(編輯階段補截圖)。
事件剛出來時流傳的說法有幾處是錯的,下面三點需要糾正:
- 2.1.312 也在受影響名單裏。 Cursor 最初只公佈了 2.1.313,後來補上了 2.1.312。如果你在窗口期內裝的是 Cursor 市場裏的 2.1.312,同樣要排查。
- 只有 Cursor Marketplace 被投毒。 早期有報道說 Open VSX、微軟市場、npm 也受影響,這些說法已經被更正。Socket 審計了註冊表的變更記錄,沒有找到 2.1.313 的發佈或刪除記錄。
- 2.1.313 從未在 Anthropic 官方渠道發佈過。 Anthropic 安全工程師 David Dworken 表示,這個版本從未出現在 Open VSX、VS Code 官方市場或 Anthropic 的任何官方主機上。爲了避免版本號混淆,下一個官方版本直接跳到了 2.1.314。
至於是誰幹的、怎麼拿到發佈權限的,目前沒有答案。Anthropic 方面的 Felix Rieseberg 稱這不是 Anthropic 系統或員工電腦被入侵,而是有人利用 Cursor 市場的訪問權限發佈了篡改版。Cursor 的公告則沒有解釋攻擊者如何獲得發佈權限。Cursor 此前在 10 月開放了 Marketplace 公共提交,但這件事和本次投毒是否有關,官方沒有說明,本文也不做推斷。對開發者來說,與其猜根因,不如先檢查自己的機器。
爲什麼官方 Claude Code 擴展也會被投毒
很多人的第一反應是:官方包名怎麼會有毒?要回答這個問題,先要了解 IDE 擴展的運行方式。擴展以 IDE 的權限運行,能讀寫你的代碼、環境變量和用戶目錄下的文件。而且它在被加載時就會執行代碼,你不需要打開對話框,也不需要主動使用它。
Phorion 的分析顯示,惡意代碼是一段 66 行的立即執行函數(IIFE),插在 extension.js 文件的最前面,後面纔是正常的擴展代碼。擴展模塊一被 Node 加載,這段代碼就會運行,時間早於正常的 activate 回調。被篡改的 extension.js 大小爲 3,692,922 字節,比前一個乾淨版本大約多 7 KB。它不依賴 npm 的 postinstall 鉤子,所以這不是 npm 包投毒,而是 VSIX 安裝包裏的代碼被直接修改。
可以用一個類比來理解:這不是有人把假藥混進藥店,而是官方貨架上一盒正規品牌的藥被換成了摻藥版。名字、包裝、條碼都是真的,只有裏面的藥不對。所以這次事件裏,以往「認準官方發佈者」的經驗不起作用。

圖注:後門鏈路共六步,卸載擴展只能停掉第一步。
圍繞這次事件,常見的誤解有三個:
- 「官方包名就等於官方構建」:這次的包名、發佈身份都是官方的,但構建不是 Anthropic 做的。Open VSX 上同樣有一個 2.1.312,是 10 月 27 日發佈的乾淨版。同一個版本號,來源不同,安全性也不同。
- 「只有 2.1.313 有問題」:Cursor 市場裏的 2.1.312 也是惡意的。
- 「卸載或升級就沒事了」:Cursor 公告原話是,僅卸載擴展可能不夠,因爲 payload 會留下獨立運行的持久化腳本。
Claude Code 擴展後門 5 步自查與清除
下面 5 步按順序做。前三步是檢查,第四步是清理,第五步是收尾。每一步都寫明要做什麼,以及怎麼判斷這一步算完成。

圖注:5 步流程,第五步憑據輪換不能省略。
① 查擴展版本與來源。 打開 Cursor 的擴展面板,搜索 Claude Code,看版本號和發佈者。然後在終端裏查看 ~/.cursor/extensions/ 目錄(Windows 下是 %USERPROFILE%\.cursor\extensions\),看有沒有名稱裏帶 anthropic.claude-code-2.1.312 或 2.1.313 的文件夾。即使你現在已經是新版本,舊版本目錄殘留也說明你可能在窗口期內裝過。
② 查 svc-telemetry 公鑰。 macOS 和 Linux 下運行 grep -n svc-telemetry ~/.ssh/authorized_keys。Windows 下要同時檢查 %USERPROFILE%\.ssh\authorized_keys 和 C:\ProgramData\ssh\administrators_authorized_keys 兩個文件。惡意代碼判斷的是文件裏有沒有 svc-telemetry 這個字符串,所以只看註釋不夠保險。建議再運行 ssh-keygen -lf ~/.ssh/authorized_keys 列出所有公鑰指紋,與攻擊者指紋 SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk 逐一比對。
③ 查持久化與隧道進程。 不同系統檢查的位置不同:
- macOS:
~/Library/LaunchAgents/com.apple.sysmond.plist、~/.config/.smt、~/.config/.smtk,以及臨時目錄下的.stk_*文件。這個 LaunchAgent 名字僞裝成 Apple 系統組件,實際上是用戶級啓動項。 - Windows:運行
schtasks /query /tn SysMon查計劃任務;檢查啓動文件夾下的sysmon.cmd,以及%USERPROFILE%\.config\smt.cmd、%TEMP%\.stk_*。 - Linux:運行
crontab -l,查找帶@reboot且指向~/.config/.smt的條目。 - 所有平臺:檢查是否有
ssh或autossh進程的參數裏帶-R '*:0:localhost:22'。
| 步驟 | 做什麼 | 驗收標準 |
|---|---|---|
| ① 擴展來源 | 查擴展面板與 ~/.cursor/extensions/ |
無 2.1.312 / 2.1.313 目錄,當前版本 ≥ 2.1.314 |
| ② 公鑰 | 搜索 svc-telemetry 並比對指紋 |
兩類 authorized_keys 中都沒有匹配項 |
| ③ 持久化 | 查 plist / SysMon / cron / 隧道進程 | 文件不存在,沒有帶 -R 參數的 ssh 進程 |
| ④ 清除 | 運行 Cursor 官方腳本並升級 | 腳本以 0 狀態退出,再複查①②③均爲空 |
| ⑤ 憑據 | 輪換 Git、CI、雲、SSH、API Key | 舊憑據已停用,調用日誌無異常 |
④ 中招就運行官方腳本清除。 只要②或③中有任何一項命中,就按 Cursor 公告處理。macOS 用戶下載 cursor.com/static/security/claude-code-extension/remediate-macos.sh,以受影響用戶身份(不要用 root)運行 bash remediate-macos.sh。Windows 用戶下載 remediate-windows.ps1,用「以管理員身份運行」打開 PowerShell,執行 powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1。腳本只從 Cursor 官網獲取,不要用來路不明的「一鍵清除」工具。腳本會移除惡意擴展、持久化機制、隧道進程和攻擊者公鑰;如果還有殘留,會以非 0 狀態退出。清理後把擴展升級到 2.1.314 以上,截至 10 月 31 日可以直接裝 2.1.316。
⑤ 輪換憑據。 需要輪換的包括 GitHub / GitLab token、CI/CD token、雲廠商 Access Key、SSH 私鑰、npm / PyPI token,以及你配置在這臺機器上的 API易 apiyi.com Key。輪換操作要在一臺可信的機器上進行。如果 SSH 日誌顯示隧道確實被使用過,Phorion 的建議是重建主機,這比逐項清理更安全。
爲什麼大多數人沒被登錄,但 Claude Code 後門你還是得查
先說相對好的消息。根據 Phorion 的分析,惡意代碼自身有 bug,導致大多數主機上的 SSH 服務沒有被成功打開。
在 macOS 上,腳本用普通用戶權限運行 systemsetup -getremotelogin,得到的是「需要管理員權限」的提示,而且退出碼仍然是 0。腳本只檢查輸出裏有沒有 Off,這段提示裏沒有,於是它誤以爲遠程登錄已經開啓,跳過了開啓 SSH 的步驟。在 Windows 上,安裝 OpenSSH Server 的 PowerShell 命令被交給了一個寫死 /bin/sh 的輔助函數,而標準 Windows 沒有 /bin/sh,這一步大概率失敗。Cursor 也稱,除非 Cursor 是以管理員權限啓動的(這種情況很少見),否則開啓 SSH 服務和建立隧道這一步會失敗。
但這不等於沒事。公鑰、持久化腳本和偵察信標都已經落地了。還是用類比來說:壞人的開鎖工具做壞了,所以很多門沒被打開;但鑰匙已經插在鎖孔裏,而且每 60 秒會再試一次。
| 類別 | 指標(IOC,已做 defang 處理) | 說明 |
|---|---|---|
| 網絡 | 134[.]209[.]82[.]225:22,用戶名 tunnel |
反向 SSH 隧道目標 |
| 網絡 | 134[.]209[.]82[.]225:8099/beacon |
明文 HTTP 信標,回傳主機信息 |
| 公鑰 | 註釋 svc-telemetry |
寫入 authorized_keys |
| 指紋 | SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk |
攻擊者公鑰指紋 |
| 隧道私鑰 | SHA256:KOAU57+ZG6u3MG4WwzPzPX2O5YEe9qdOC1Bl+6MVyDQ |
寫入臨時目錄的 .stk_* 文件 |
| 文件 | extension.js SHA-256 以 ecb58cb2 開頭 |
惡意擴展主文件,完整值見 Cursor 公告 |
圖注:惡意 VSIX 哈希表截圖(編輯階段補截圖)。
以下幾種情況要特別注意:
- Remote Login 原本就開着。 如果你的 Mac 在「系統設置 → 通用 → 共享」中開啓過遠程登錄,或者 Windows 上
Get-Service sshd顯示服務在運行,那麼後門具備可用條件。 - 服務器下線不等於機器乾淨。 攻擊者服務器目前失效了,但持久化腳本仍會不停重試連接。如果不清理,這臺機器始終處在不安全的狀態。
- 查 SSH 登錄日誌。 macOS 可以運行
log show --predicate 'process == "sshd"' --last 7d,Linux 查/var/log/auth.log,Windows 查事件查看器中的 OpenSSH/Operational 日誌。重點找來自127.0.0.1或::1、使用 svc-telemetry 公鑰認證成功的記錄。只要出現一條,就按「已被登錄」處理,並考慮重建主機。
惡意代碼還收集了主機名、用戶名、系統信息、工作目錄、Git 全局郵箱、公網 IP,以及最多 40 個環境變量的名字。Phorion 的結論很明確:bug 降低了被登錄的概率,但不能把它當成防線。
Claude Code 擴展被投毒後,API易 Key 要不要換
要換。 惡意代碼收集的是名字匹配 KEY、TOKEN、SECRET、PASS、AWS、GCP 的環境變量名,雖然沒有直接讀取變量的值,但攻擊者已經知道你的機器上有哪些憑據。一旦隧道可用,攻擊者就能交互式讀取環境變量的值、配置文件和 shell 歷史。所以只要這臺機器在窗口期內裝過 2.1.312 或 2.1.313,配置在上面的 API易 apiyi.com Key 就應當按「可能已暴露」處理。
先說清楚一點:這不是 API易 被入侵,而是你本機上的 Key 存在被讀取的間接風險。所以要做的是輪換 Key,不需要恐慌。具體步驟如下:
| 步驟 | 操作 | 驗收 |
|---|---|---|
| 1 | 打開控制檯令牌頁 api.apiyi.com/token |
能看到現有 Key 列表 |
| 2 | 點右上角「新增」,給 Claude Code 用的 Key 選擇分組 ClaudeCode |
生成以 sk- 開頭的新 Key |
| 3 | 把 ANTHROPIC_AUTH_TOKEN 改爲新 Key,ANTHROPIC_BASE_URL 保持 https://api.apiyi.com |
~/.claude/settings.json 中的 env 也同步修改 |
| 4 | 重開終端,重啓 Claude Code | 能正常對話和調用 |
| 5 | 回到令牌頁停用或刪除舊 Key | 舊 Key 狀態變爲禁用 |
| 6 | 查看調用日誌 | 沒有異常模型、異常時間段的消耗 |
如果你的腳本走的是 OpenAI 兼容接口,記得把代碼裏 base_url="https://api.apiyi.com/v1" 對應的 Key 也一起換掉,換完後用新 Key 發一條測試請求確認可用。舊 Key 如果還在別的機器或項目裏使用,要逐臺替換,不要只改一臺。
🎯 最佳實踐:API易 apiyi.com 的令牌頁支持給每個 Key 設置餘額上限和有效期。建議按「一臺機器一個 Key」「開發和生產分開」的方式管理,下次出現類似事件時,只需要停用對應的那一個 Key。
另外要再強調一次:需要輪換的不只是 API易 的 Key。GitHub / GitLab token、CI 密鑰、雲廠商 Access Key、SSH 私鑰、npm / PyPI token 都應該一起輪換,並且在可信的機器上操作。
Claude Code 擴展被投毒常見問題 FAQ
Q1:我只用 VS Code 官方市場,會受影響嗎?
目前沒有證據表明會。可覈實的分發源只有 Cursor Marketplace,微軟市場和 Open VSX 上都沒有惡意的 2.1.313。
Q2:我只用 Claude Code CLI,沒用 IDE 擴展,會受影響嗎?
不會因爲這次事件受影響。npm 上的 CLI 包沒有被投毒,受影響的只是 Cursor 市場裏的擴展 VSIX。
Q3:我用 Cursor,但沒裝 Claude Code 擴展,會受影響嗎?
不會。惡意代碼只在這個擴展被加載時執行。如果不確定,可以按第 ② 步搜索一遍 `svc-telemetry`,幾秒鐘就能確認。
Q4:升級到 2.1.314 就安全了嗎?
升級只能防止以後再中招。已經寫入的公鑰、持久化腳本和泄露出去的信息不會因爲升級而消失,仍然需要按第 ②③④⑤ 步處理。
Q5:現在應該裝 2.1.316 嗎?
可以。截至 10 月 31 日,2.1.316 是 GitHub Releases 上的最新版,2.1.314 和 2.1.316 都是乾淨版本。中間沒有 2.1.315,這是正常的。
Q6:需要重裝系統嗎?
如果只命中了公鑰或持久化,運行官方腳本並完成複查通常就夠了。如果 SSH 日誌顯示隧道確實被使用過,Phorion 建議重建主機,因爲攻擊者登錄後做過什麼,無法從樣本中推斷出來。
Q7:5,000 人是確診中招的人數嗎?
不是。Cursor 稱「最多 5,000 名用戶」,這是下載和自動更新的暴露估計,不是確認的感染數。Cursor 表示會直接聯繫受影響的用戶。
Q8:我的電腦會被遠程控制嗎?
由於前面提到的 bug,大多數 macOS 和 Windows 主機的 SSH 服務沒有被打開,攻擊者服務器目前也已下線。但如果你的遠程登錄功能本來就開着,風險是真實存在的。是否被登錄過,請以 SSH 日誌爲準。
Q9:API易 Key 會泄露嗎?
API易 平臺本身沒有被入侵。風險在於你本機的環境變量可能被讀取,所以建議在 api.apiyi.com/token 新建 Key、替換配置,然後停用舊 Key。
Claude Code 擴展投毒核心要點 Key Takeaways
- 受影響版本:Cursor 市場裏的 2.1.312 和 2.1.313,官方其他渠道未受影響。
- 加載即執行:不需要使用擴展,只要被加載就會植入後門。
- 三樣殘留:authorized_keys 中的公鑰、持久化腳本、beacon 回傳的信息。
- 大多數人未被登錄:原因是惡意代碼有 bug,但這不能作爲不排查的理由。
- 清除方式:運行官方腳本,升級到 2.1.314 以上,必要時重建主機。
- 憑據收尾:輪換 Git、CI、雲、SSH 憑據和 API易 Key。
參考資料
- Cursor 安全公告:受影響版本、IOC 和清除腳本
- 鏈接:
cursor.com/blog/claude-code-extension-security-notice - Phorion 技術分析:惡意代碼與 bug 分析
- 鏈接:
phorion.io/blog/offical-claude-code-vsx-compromise - StepSecurity 分析:註冊表與版本覈對
- 鏈接:
stepsecurity.io/blog/claude-code-extension-trojanized - Claude Code GitHub Releases:官方版本記錄
- 鏈接:
github.com/anthropics/claude-code/releases
總結
這次事件的特殊之處在於,惡意版本用的是官方包名,所以按「認準官方發佈者」來判斷並不管用。建議的處理順序是:先查擴展版本和來源,再查公鑰和持久化,命中就運行官方腳本,最後在可信的機器上統一輪換憑據。API易 用戶可以借這次機會,按「一機一 Key」的方式重新整理 Key 的分組、額度和有效期,需要配置說明時可以查閱 API易 apiyi.com 的令牌管理文檔。
作者:APIYI 技術團隊
技術交流:歡迎在 API易 官網首頁聯繫我們,Claude Code 接入配置可查閱 docs.apiyi.com 文檔中心
這次不是換個版本就完事,真正要收尾的是 key、持久化和憑據。
