實證研究 發布於 AIA: 2026年8月25日

DuneSlide:兩條由 LLM 控制的路徑都能逃出 Cursor 終端沙箱

DuneSlide 是 Cato AI Labs 對 Cursor(AI 程式開發 IDE,內建的 Agent 可自動執行終端指令與修改檔案)的研究,揭露 Cursor 2.x 中兩個彼此獨立的漏洞。間接提示詞注入攻擊(indirect prompt injection,把惡意指令藏在 Agent 會讀取的外部內容中)可以讓 Agent 核准專案外的工作目錄,也可以利用 Write 工具在符號連結解析失敗後仍繼續寫入的行為。任一路徑都能覆寫 Cursor 的沙箱輔助程式,讓後續指令不再受到原本的終端沙箱限制。Cursor 3.0 已修補兩項漏洞,且早在 4 月 2 日發布,比 Cato 的公開文章早三個月。

Indirect Prompt InjectionTool Argument TamperingRuntime IsolationTool AuthorizationAI Coding IDE
5 項對應的 AIDEFEND 防禦手法
來源: DuneSlide: Two Critical RCE Vulnerabilities in Cursor 
作者: Itay Ravia (Cato AI Labs)
原文發布: 2026年7月1日

威脅分析

  • 攻擊者必須先讓 Agent 讀到惡意內容。Cato 使用惡意 MCP 回應或遭污染的網路搜尋內容操控 Cursor,不需要由攻擊者直接在本機工作階段輸入指令。
  • 第一項漏洞讓一個選填的工具參數直接決定沙箱政策。它的公開資安漏洞識別編號是 CVE-2026-50548。模型可以決定 run_terminal_cmd 的 working_directory。Cursor 隨後把該目錄加入沙箱可寫清單,卻沒有先證明它仍位於專案根目錄內。
  • 第二項漏洞是另一條檢查失敗後仍放行的檔案路徑。它的公開資安漏洞識別編號是 CVE-2026-50549。Write 工具會先解析目的路徑,再檢查是否位於專案內。當一個僅供寫入的符號連結(看起來位於專案內,實際會把寫入導向其他位置)指向尚不存在的目標時,路徑解析會失敗,但 Cursor 沒有拒絕寫入。
  • 兩條分支最後都到達同一個高影響資產。遭操控的工作流程可以覆寫 /Applications/Cursor.app/.../cursorsandbox,也就是 Cursor 用來啟動沙箱指令的輔助程式。後續提示詞注入再呼叫遭修改的輔助程式,就能在沒有原沙箱限制的情況下執行程式碼。
  • 第一次寫檔不等於最終的遠端程式碼執行(RCE)。兩個漏洞分別提供竄改強制執行元件的路徑;真正的程式碼執行,要等後續指令使用該元件時才發生。把這兩個階段分開,才能正確安排預防與偵測控制。
  • 文章公開時,修正版早已發布。Cursor 公告分別以 CVE-2026-50548 與 CVE-2026-50549 記錄兩條路徑。含有修正的 Cursor 3.0 於 2026 年 4 月 2 日發布,Cato 則在 7 月 1 日公開研究。

適用的 5 項 AIDEFEND 防禦手法

AID-H-018.001
Tool Parameter Constraint & Schema Validation
極高
把 working_directory 設為必要且有明確型別的路徑能力,並由可信程式在已開啟的專案根目錄下解析。每一層父目錄都要正規化;只要遇到不存在的項目或符號連結就拒絕,再把已核准、已開啟的目錄控制代碼(descriptor)交給工具。這會同時關閉模型控制目錄與檢查後重新開啟路徑的弱點。
AID-I-001.002
MicroVM & Low-Level Sandboxing
極高
在 Cursor 應用層之外,再用作業系統沙箱隔離終端與檔案工具。即使模型、工具參數檢查或 cursorsandbox 包裝程式遭到突破,沙箱設定仍要拒絕寫入應用程式套件與其他主機路徑。這是限制最終 RCE 影響的關鍵獨立防線。
AID-H-021.002
Runtime Integrity Enforcement (Signed Configurations)
極高
每次使用前,都要依已簽署的檔案清單驗證沙箱輔助程式與其他資安關鍵工具;執行中檔案只要與核准版本不同,就拒絕啟動。這項控制直接保護兩條 DuneSlide 分支共同覆寫的 cursorsandbox。
AID-H-003.010
Deployed AI Software Vulnerability Remediation Lifecycle
極高
盤點 Cursor 2.x 部署,以 Cursor 3.0 以上版本重建受管理映像,並在隔離環境中分別重跑兩條攻擊路徑。版本標籤本身不是結案證據;實際部署數量與輔助程式完整性都必須符合修正版。
AID-H-017.002
Least-Privilege Tool Architecture
高
用單一用途的專案操作取代任意檔案寫入,工具只接受受限制的物件 ID 或相對於專案根目錄的路徑。無論注入內容提出什麼要求,程式開發 Agent 都不應取得可以改寫自身強制執行元件或任意應用程式檔案的通用能力。

身為資安防禦者,我們應該這麼做

  • 把所有受管理的 Cursor 升級到 3.0 以上版本。驗證實際應用程式套件與部署清冊,不能只看更新程式回報的狀態。
  • 無法立即升級的主機,應停用或限制 Agent 的終端與通用 Write 能力,並把這項措施設為有期限的補強控制。
  • 分別對兩條路徑執行回歸測試:專案外的 working_directory,以及僅供寫入、指向尚不存在目標的符號連結(看起來位於專案內,實際會把寫入導向其他位置)。兩種情況都必須在建立或修改任何檔案前拒絕。
  • 由可信程式先開啟專案根目錄,所有檔案操作都相對於同一個已開啟的目錄控制代碼解析;遇到符號連結,或父路徑不存在而無法完整正規化的目的地,都要拒絕。不能檢查字串路徑後,再依名稱重新開啟。
  • 在更低層的權限邊界禁止寫入 Cursor 應用程式套件與沙箱輔助程式,並在每次執行前比對已簽署的檔案清單。
  • 把 MCP 回應與網路搜尋文字視為不受信任內容。保留每次工具呼叫由哪段內容提出、正規化後參數、政策判斷,以及實際檔案或程序效果。

結論

DuneSlide 說明,只要 LLM 能決定工具參數,該參數就是安全邊界的一部分。第一條路徑信任模型選擇的工作目錄,第二條路徑則讓解析失敗變成寫入許可;兩者最後都改寫原本應該執行隔離的元件。

AIDEFEND  把關鍵控制放在模型周圍與更低層:AID-H-018.001 限制路徑參數,AID-H-021.002 保護強制執行元件,AID-I-001.002 在應用層失效後繼續限制工具,AID-H-003.010 則確認修正版真正覆蓋實際部署。