Straiker 發現 Cursor AI 中的一個漏洞鏈可能允許攻擊者透過隱藏在惡意儲存庫中的提示劫持開發人員的機器。此攻擊鏈稱為NomShub,它利用編碼代理程式中的間接提示注入和命令沙箱繞過,向使用者機器寫入程式碼,並濫用 Cursor 的遠端隧道功能來取得 shell 存取權限。
Straiker 表示,發動攻擊不需要使用者進行任何交互,只需在 Cursor 中開啟惡意儲存庫即可。此外,由於被利用的功能是經過簽名和公證的合法二進位文件,攻擊者可以利用 Cursor 漏洞在 macOS 系統上獲得完整的文件系統存取權限和命令執行能力,而 macOS 系統上的程式碼編輯器運行沒有沙箱限制。
Straiker表示,在網路層面偵測這種攻擊幾乎是不可能的,因為所有流量都通過微軟 Azure 基礎設施。這家網路安全公司解釋說,問題在於 Cursor 對代理執行的 shell 命令的保護措施沒有涵蓋在 shell 內部執行的命令(shell 內建命令),這使得解析器無法檢測到工作目錄的變更、被操縱的環境變數以及被改變的 shell 執行上下文。
由於 macOS 的安全帶沙盒允許寫入主目錄,因此可以使用內建函數來逃逸沙盒並覆蓋 .zshenv 文件,該文件由每個新的 Zsh shell 實例執行,包括終端視窗、應用程式生成的 shell、呼叫腳本和遊標終端。
攻擊者可以在程式碼倉庫的 README.md 檔案中註入提示訊息,誘騙使用者使用 Cursor 開啟程式碼倉庫。當 AI 讀取 README 檔案後,它會依照注入的指令執行操作,逃逸沙箱,並執行隧道攻擊腳本。
為了濫用 Cursor 內建的隧道功能並遠端存取受害者的系統,攻擊者還會指示代理程式產生一個裝置代碼並將其傳送到攻擊者的伺服器。該程式碼是授權透過隧道建立經過身份驗證的 GitHub 會話所必需的。攻擊者的GitHub帳戶現在已被授權存取受害者的隧道。結合隧道註冊資料(隧道ID、叢集),攻擊者可以隨時連接。
只要該進程保持運行,GitHub 授權未被撤銷,隧道註冊未被刪除,攻擊者就能持續存取機器。Straiker 在 1 月發現了該攻擊鏈,並在 2 月初向 Cursor 報告。 Cursor 3.0 版本中已包含修復程式。
資料來源:https://www.securityweek.com/cursor-ai-vulnerability-exposed-developer-devices/
網路安全研究人員發現 Cursor AI 存在名為「NomShub」的漏洞鏈,攻擊者可利用間接提示注入與沙箱逃逸技術,在開發者僅打開惡意程式碼庫的情況下,獲取 macOS 系統的遠端 Shell 存取權限。