天塌了!Cursor和Windsurf用戶零日漏洞曝光,一鍵劫持,數(shù)百萬開發(fā)者開源插件噩夢,網(wǎng)友:零信任太重要了 原創(chuàng)
編譯 | 沈建苗
審校 | 云昭
?出品 | 51CTO技術(shù)棧(微信號:blog51cto)
近日,一位來自 Koi Security 的安全研究員,偶然發(fā)現(xiàn)了一個深藏于當今 AI 編程工具基礎(chǔ)架構(gòu)中的嚴重零日漏洞。如果該漏洞被利用,一個技術(shù)水平不高的攻擊者就可能“一鍵”劫持超過一千萬臺設(shè)備。
Cursor 和 Windsurf 等 AI 編程助手日益流行,向全球開發(fā)者承諾“生產(chǎn)力加速”。但在它們精美界面背后,有一個共同的基礎(chǔ)設(shè)施:由社區(qū)構(gòu)建的 VS Code 分支版本,以及一個開放的插件市場。這套系統(tǒng)成就了功能的“魔法”,卻也留下了一個致命盲點。
這個漏洞被命名為 VSXPloit:只因 OpenVSX(一條開發(fā)者供應(yīng)鏈中的關(guān)鍵組件)中一個被忽視的缺陷,任何運行 VS Code 分支版本的設(shè)備都可能在毫無察覺的情況下被完全控制。一處漏洞,系統(tǒng)淪陷。
背后真相:插件權(quán)限和“信任危機”
究竟怎么回事?
如今基于AI的編輯器嚴重依賴擴展程序來實現(xiàn)最基本的功能。語法高亮、代碼檢查和調(diào)試等功能并非硬編碼到編輯器中,而是由擴展程序來提供。
這些擴展程序每個都以完全權(quán)限在開發(fā)者的機器上運行。這意味著,只要有一個擴展程序被攻陷,就可能導(dǎo)致安裝它的任何人全面控制機器。
圖片
Oren Yomtov是Koi Security這家提供軟件配置和擴展程序安全平臺的公司的安全研究員,他無意中發(fā)現(xiàn)了這噩夢般的場景。
Koi Security 的安全研究員 Oren Yomtov 在研究 OpenVSX 的構(gòu)建流程時,發(fā)現(xiàn)了這處致命缺陷。
在一篇博文中,Yomtov解釋道,OpenVSX 是一個開源插件市場,支撐著 Cursor、Windsurf、VSCodium 等編輯器的插件生態(tài)。
該漏洞不僅允許攻擊者接管單個擴展程序,更可能引發(fā)一場 供應(yīng)鏈災(zāi)難:掌控整個市場。通過該漏洞,攻擊者可冒用受信任的 ??@open-vsx?
? 賬戶推送惡意更新。
一開始,Yomtov 以為是誤報——畢竟這段代碼已經(jīng)運行多年,被數(shù)千萬用戶使用。但他在實驗室中成功復(fù)現(xiàn)了整個攻擊流程:模擬攻擊完美執(zhí)行,這場“不可想象”的安全事故就這樣被證實。
看似不可想象的突然變成了現(xiàn)實:一場悄無聲息的全面的安全災(zāi)難近在眼前。
漏洞:經(jīng)典“Pwn 請求”的變體
要了解該漏洞的工作原理,首先需要了解擴展程序是如何進入OpenVSX的。
如果你想將擴展程序發(fā)布到OpenVSX,有兩個選擇:
1. 自行上傳到OpenVSX。
2. 通過創(chuàng)建合并請求,將該擴展程序添加到extensions.json文件中的列表,請求擴展程序自動發(fā)布。
圖片
Yomtov說:“問題就出在夜間構(gòu)建上。”
OpenVSX 每晚都會運行一個自動化流程,獲取社區(qū)提交的擴展程序的最新版本,構(gòu)建它們,然后發(fā)布到OpenVSX市場。本意是為了讓開發(fā)者的工作更輕松,但在這里它卻引入了一個嚴重缺陷。
要自動發(fā)布擴展程序,開發(fā)者只需提交一個簡單的合并請求,將其添加到公開列表中即可。此后,OpenVSX接手任務(wù):提取代碼、安裝依賴項、構(gòu)建擴展程序,并使用屬于受信任的@open-vsx帳戶的強大秘密令牌來發(fā)布。
圖片
該令牌本應(yīng)保持隱藏狀態(tài),只有受信任的基礎(chǔ)架構(gòu)才能看到。然而,由于構(gòu)建過程會運行來自公共代碼庫的任意代碼,任何擴展程序的開發(fā)者都可以編寫惡意更新,悄無聲息地獲取令牌。
更令人擔憂的是,他們無需直接提交惡意擴展程序。他們可以將代碼隱藏在依賴項中,甚至隱藏在依賴項的依賴項中,系統(tǒng)會在夜間構(gòu)建期間自動執(zhí)行這些代碼。之后,竊取令牌就輕而易舉。
有了該令牌,攻擊者不僅可以控制自己的擴展程序,還可以發(fā)布更新、覆蓋現(xiàn)有的擴展程序,并悄無聲息地劫持整個市場。
影響規(guī)模:數(shù)百萬開發(fā)者的一場供應(yīng)鏈噩夢
若能訪問@open-vsx帳戶的令牌(密鑰),攻擊者就可以制造一場全球供應(yīng)鏈噩夢。Yomtov解釋道:“該令牌是超級管理員憑證。它可以發(fā)布新的擴展程序,覆蓋現(xiàn)有的擴展程序,并冒充生態(tài)系統(tǒng)中的任何發(fā)布者。”
之后,破壞幾乎變得毫不費力。每當開發(fā)者安裝擴展程序,或者編輯器在后臺自動更新擴展(這種情況不斷發(fā)生),攻擊者的有效載荷就會悄無聲息地傳遞到他們的機器上。沒有警報,沒有提示,毫無懷疑,全面接管。
那么,這個有效載荷能做什么呢?“幾乎無所不能,”Yomtov說。VS Code及其分支中的擴展程序以Node.js進程的形式運行,這意味著它們可以訪問文件、啟動其他程序、發(fā)出網(wǎng)絡(luò)請求并執(zhí)行任意代碼。
對流行擴展程序(比如Python 插件)進行惡意更新,可能會悄然安裝鍵盤記錄程序、竊取瀏覽器 cookie、竊取源代碼、感染構(gòu)建版本,或在整條開發(fā)管道中植入后門。
這方面曾有零星的案例:VS Code擴展程序竊取SSH密鑰或加密錢包。但這絕不是漏網(wǎng)之魚,而是一場全面的接管,整個生態(tài)系統(tǒng)遭到供應(yīng)鏈攻擊。就像SolarWinds那樣,只不過針對的是開發(fā)者工具。
雖然Cursor、Windsurf和VSCodium等桌面編輯器受到的影響最為嚴重,但就連Gitpod或StackBlitz等基于瀏覽器的環(huán)境也可能受到影響,這取決于受感染擴展程序的集成程度。
零信任警醒:假設(shè)每個擴展程序是不可信的
我們詢問Yomtov用戶和組織應(yīng)該從這起事件中吸取什么教訓(xùn)。他的回答很直接:“假設(shè)每個擴展程序都是不可信的,除非證明是可信賴的。”
擴展程序可能看起來像是無害的附加組件,但實際上,它們是功能強大的軟件組件,通常由個人編寫,以全面權(quán)限運行,會在無人監(jiān)督的情況下自動更新。
Yomtov說:“這與從npm或PyPI中拉取軟件包沒什么不同,通常甚至更糟糕。如果你不會盲目信任擁有root 權(quán)限訪問你系統(tǒng)的GitHub 代碼庫,也不會信任擴展程序?!?/p>
為了保護我們自己,Yomtov建議組織將擴展程序視為其攻擊面的一部分,運用與針對任何其他依賴項相同的規(guī)程。這意味著:
1. 維護一份真實的清單,記錄已安裝的擴展程序、安裝在哪些機器上以及由誰安裝。
2. 根據(jù)擴展程序的構(gòu)建者、維護方式以及實際功能來評估風險。
3. 對允許的擴展程序執(zhí)行明確的策略,并在出現(xiàn)異常情況時采取行動。
4. 持續(xù)監(jiān)控,因為擴展程序可能會悄無聲息地更新,并在一夜之間引入新的風險。
Koi的研究團隊繼續(xù)發(fā)現(xiàn)易受攻擊的擴展程序和主動惡意的擴展程序,不僅出現(xiàn)在 OpenVSX或微軟的市場中,甚至出現(xiàn)在其他擴展程序市場(比如Chrome Web Store)中。
Yomtov說:“生態(tài)系統(tǒng)的發(fā)展速度比護欄更快。在這種情況改變之前,最安全的假設(shè)是零信任。除非你仔細審查并密切關(guān)注,否則每個擴展程序都是潛在的后門?!?/p>
還好,漏洞已修復(fù)
Yomtov和Koi Security團隊很負責任,向維護OpenVSX項目的Eclipse基金會披露了該漏洞。在隨后的幾周,他們與維護人員密切合作,驗證該問題,設(shè)計可靠的修復(fù)方案,并確保補丁得到正確實施和部署。
目前,得益于此次合作,該漏洞已被修復(fù),對于每天依賴該市場的數(shù)百萬開發(fā)者來說,已經(jīng)恢復(fù)安全,也是是一件幸事。
但這起事件也敲響了警鐘:零信任,即便是看起來可信賴的基礎(chǔ)架構(gòu)也需要持續(xù)審查,如果它掌握著整個開發(fā)生態(tài)系統(tǒng)的密鑰,更應(yīng)如此。
參考鏈接:
本文轉(zhuǎn)載自??51CTO技術(shù)棧??,作者:沈建苗
