跳到正文
DEV Community· Dhruv Agrawal·· 2 小時前精選AI 評分77

Cursor 市集如何送出植入 SSH 後門的 Claude Code 擴充功能

How a Trusted Extension Name Delivered an SSH Backdoor Through Cursor's Store

AI 導讀

Cursor 的擴充功能市集於 10 月 29 日提供遭竄改的 Anthropic Claude Code 2.1.312 和 2.1.313,版本中加入攻擊者的 SSH 公鑰並設定持續運作機制。

推薦理由

文章梳理 Cursor 市集至編輯器的擴充功能交付鏈,並分辨已確認的惡意版本行為與尚未披露的入侵途徑,呈現名稱可信度和程式碼來源之間的落差。

正文 · 繁體中文

10 月 29 日,Cursor 的擴充功能市集提供了遭篡改的 Anthropic Claude Code 擴充功能版本 2.1.312 和 2.1.313,持續約 11 小時。這些版本在開發人員的電腦上加入了攻擊者的 SSH 金鑰。

Anthropic 的系統沒有遭入侵,官方套件也沒有。Anthropic 表示,攻擊者「利用了對 Cursor 市集的存取權限」。BankInfoSecurity 引述 Cursor 的聲明指,最多有 5,000 名用戶受影響。

要了解這如何發生,可以追蹤擴充功能送達編輯器的流程。

Diagram of the extension delivery chain: publisher, Open VSX registry, Cursor marketplace proxy, editor, extension host, with the tampered step marked at the marketplace
Cursor 擴充功能文件所述的傳遞鏈。這次事件只顯示 Cursor 市集提供的副本遭到篡改。

傳遞鏈

Cursor 以 VS Code 為基礎,但不使用 Microsoft 的擴充功能市集。其文件指,Cursor 從 Open VSX 這個開放式擴充功能登錄庫取得第三方擴充功能。下載內容會經過 Cursor 自家的市集代理伺服器;伺服器會掃描是否含有惡意軟件,再提供下載。

因此,Claude Code 更新會經過四個步驟送到你手上:

  1. Anthropic 建置並發布擴充功能。
  2. 登錄庫儲存擴充功能。
  3. Cursor 市集以 anthropic.claude-code 這個名稱提供擴充功能。
  4. 你的編輯器安裝並載入擴充功能。

你在第 3 步看到名稱。到了第 4 步,編輯器會執行第 3 步提供的內容。如果有人能更改那些位元組,名稱看起來仍然正確。

遭篡改版本的作用

StepSecurity 比較了惡意版本和乾淨版本。遭篡改的 extension.js 是官方 2.1.312 套件,前面加上了一個 7,386-byte 載入程式。檔案大小約為 3.6 MB。StepSecurity 表示:「除了這一點,惡意版本在其他各方面都是官方擴充功能。」

在 2.1.313 版本中,新版本號碼只出現在重新打包的資訊清單中,因此看起來像例行更新。

編輯器一載入擴充功能,載入程式就會立即執行,無需進行任何 Claude 對話。VS Code 的文件説明瞭這一點為何重要:「擴充功能主機擁有與 VS Code 本身相同的權限。」擴充功能可以讀取你的檔案、使用網絡及啟動處理程序。

Animated walkthrough of the loader's stages after the extension loads: recon, SSH key, enable SSH, reverse tunnel, persistence, beacon
StepSecurity 分析所列的載入程式執行階段。

StepSecurity 指出,載入程式接着執行了六個階段:

  • 收集主機詳細資料,以及最多 40 個看似含有機密的環境變數名稱
  • 將攻擊者的金鑰加入 ~/.ssh/authorized_keys
  • 嘗試啟用 SSH 伺服器
  • 嘗試開啟反向 SSH 通道,每 60 秒重試一次
  • 設定持續執行機制,令通道在重新啟動或登入後重新啟動
  • 向攻擊者的伺服器回報

StepSecurity 表示,沒有讀取任何憑證值。Cursor 指出,啟用 SSH 通常需要管理員權限。即使沒有管理員權限,金鑰和持續執行機制仍可能被加入。

證據

Cursor 的公告列出受影響時段:太平洋時間 10 月 29 日凌晨 2:27 至下午 1:35。Cursor 移除了惡意版本、暫停市集服務、重新建置市集並輪換金鑰。The Hacker News 報道,Microsoft 表示該版本從未發布到 Visual Studio Marketplace 或 npm。StepSecurity 確認 Open VSX 上的 2.1.312 副本未遭篡改。

攻擊者如何取得 Cursor 市集的存取權限,至今尚未公開。

應採取的措施

  • 檢查確認,不要自行假定。如果你當日透過 Cursor 市集安裝或更新 Claude Code,請按照 Cursor 的檢查步驟操作。到 authorized_keys 中查看是否有標示為 svc-telemetry 的金鑰。
  • 更新不等於清除。Anthropic 已發布 2.1.314。但安全研究員 Kevin Beaumont 指出,自動更新的替代版本「不會移除先前的後門」。持久化機制及 SSH 金鑰必須手動移除。
  • 加入安裝冷卻期。Cursor 允許團隊管理員延遲安裝及更新,直至某個版本公開發布達到指定時數。預設值為 0,即不啟用。惡意版本曾上架約 11 小時。
  • 如可行,啟用簽章檢查。Cursor 允許 Enterprise 團隊要求安裝前確認 Open VSX 擴充功能的簽章有效。

這些做法的侷限

根本原因仍未明,因此以上修正措施只是推測哪個環節出了問題。沒有來源指出簽章檢查能否攔截這個版本。這取決於攻擊者能否同時簽署程式碼或繞過簽署程序,目前沒有人説明這一點。

只有在延遲期結束前有人發現有問題的版本,冷卻期才有幫助。它也會延遲有用的安全修正。

本文提出的一般性教訓,是最薄弱的一環。任何向你提供程式碼的市集,都可能是薄弱環節。但現有證據只涉及一宗發生於單一市集的事件,根本原因仍未公開。

重點

擴充功能名稱會告訴你程式碼理應由誰撰寫,卻不會告訴你最後是誰改動了這些程式碼。

你的編輯器與你信任的發佈者之間,經過哪些環節?

來源

來源:DEV Community · dev.to