駭客如何利用 AI 編輯器竊取加密貨幣
事件始末
一位經驗豐富的區塊鏈開發者,在全新安裝的電腦上設置開發環境,使用基於 AI 的編輯器 Cursor(VS code 的分支)進行編碼。幾天後,他發現自己的加密貨幣錢包少了 50 萬美元,這些錢在他不知情的情況下被轉走。
這位開發者十分謹慎,電腦剛安裝不久,只安裝了基本的開發工具、瀏覽器和編碼器,未訪問可疑網站或下載破解軟件。在百思不得其解後,他於 2025 年 6 月聯繫了網絡安全公司 Casperski。
找到罪魁禍首
Casperski 獲得開發者的系統、日誌等所有權限後展開調查,最終在其 Cursor IDE 中發現一段惡意代碼。這段代碼位於用戶配置文件目錄的 extension.js 文件中,會連接到 angelic.su 服務器下載並執行 PowerShell 腳本,從而獲得電腦的完全執行權限。
這段腳本位於 Cursor 擴展文件夾中的 Solidity 語言擴展部分。Solidity 是用於編寫以太坊智能合約的編程語言,開發者下載 Solidity 擴展是為了獲得語法高亮、自動完成等功能。但研究人員發現,這個擴展的 extension.js 文件並未提供語言支持,而是在每次擴展加載時(即開發者打開 Cursor 時),在後台默默執行惡意操作。
惡意擴展如何混入
開發者是在 Cursor 擴展市場中下載的 Solidity 擴展,當時搜索結果有多個,惡意擴展看起來完全合法,描述與合法擴展一模一樣,甚至是直接複製的。
惡意擴展的下載量為 54,000,合法擴展為 61,000,差距不大。而且 Cursor 使用的 Open VSX 擴展市場排序算法不僅僅依據下載量,還考慮了更新時間、評分、是否驗證等因素。惡意擴展在 2025 年 6 月 15 日更新,合法擴展的最後更新時間是 5 月 30 日,這兩周的差距使得惡意擴展在搜索結果中排名更高。
開發者安裝後發現該擴展無法正常工作,打算稍後排查,但此時 extension.js 已在執行惡意操作,設置後門。
惡意擴展的進一步行動
這個惡意擴展在 7 月 2 日被報告並從市場中移除,但第二天攻擊者又推出了一個新的惡意擴展,名稱與合法擴展相同,下載量被虛增到 200 萬。兩個擴展名稱相似,一個是正常的,另一個用大寫 I 代替小寫 L,在 Cursor 中看起來一模一樣。開發者很容易被高下載量的惡意擴展所誤導。
Cursor 與 VS Code 的關係
Cursor 是 VS Code 的分支,VS Code 是微軟的強大 IDE,其擴展市場由微軟主導和管理,只服務於微軟的 Visual Studio 產品。而 Cursor 等 VS Code 分支無法使用微軟的官方擴展市場,因此使用了社區運營的 Open VSX 作為替代。
微軟的擴展市場有專業團隊審核擴展、自動安全掃描、政策和程序,雖然也有惡意擴展漏網,但把關更嚴格。Open VSX 由 Eclipse 基金會運營,團隊規模較小,其理念是開放、社區驅動、降低准入門檻,這使得攻擊者更容易發布惡意擴展。
擴展的權限問題
編碼器擴展需要一定權限才能發揮作用,如讀寫文件、創建刪除文件、運行命令、連接互聯網等。這使得擴展在有用的同時也存在危險。
瀏覽器擴展運行在沙盒中,只能訪問特定 API 和部分瀏覽體驗,需要特定權限時會彈出提示。但 IDE 擴展完全不同,它們擁有對電腦的完全訪問權限,下載安裝時也不需要額外權限。
源代碼與實際運行代碼的差異
即使是開源擴展,用戶安裝的也是編譯、打包後的版本,源代碼與實際運行代碼之間存在差距。惡意開發者可以在源代碼中保持乾淨,在打包分發時添加惡意代碼。
如何保護自己
-
利用微軟市場:同時安裝官方 VS Code 和偏好的分支(如 Cursor),先在 VS Code 中從微軟市場安裝擴展並測試,確認無誤後再通過遷移功能將其導入分支。因為擴展遷移是通過 ID 匹配,惡意擴展 ID 不同。
-
及時處理異常:如果擴展無法實現承諾的功能,立即卸載。
-
檢查發布者:仔細查看發布者資料,了解其發布擴展的時間和其他作品。
-
注意時間因素:新擴展風險較高,等待一段時間,讓其他人先測試。
-
做好隔離:處理敏感信息時,使用最小化設置,只安裝必要的擴展,將工作和個人內容分開。
結語
軟件信任模式已發生變化,我們需要更加謹慎地對待擴展。了解這些風險後,我們可以做出更明智的安全決策,在保持警惕的同時,繼續創造偉大的事物。