技術

GlassWorm藏身VS Code擴充功能一年,四條命脈同時被切斷

Susan Hill

一年多來,替你手機裡的應用程式寫程式的部分開發者,在毫不知情之中替別人做著事。一款名為GlassWorm的惡意程式,藏在全球使用最廣的程式碼編輯器Visual Studio Code的擴充功能裡,也藏在這些開發者每天拉進專案的開源套件裡。它收割他們的密碼,劫持他們的帳號,再用這些把自己種進更多軟體。CrowdStrike、Google和Shadowserver基金會如今剪斷了它的提線。

這件事連從沒打開過程式碼編輯器的人也躲不開,因為軟體供應鏈正是一條鏈。手機上的聊天應用、銀行應用、主機上的遊戲,全都架在成千上萬塊由別人撰寫與維護的小小開源積木之上。給其中一塊下毒,毒就能順流而下,一路流進數百萬人使用的成品裡。GlassWorm生來就是為了不被看見地搭上這股水流。

讓它與眾不同的,是它藏身的手法。運營者用看不見的Unicode字元來寫惡意指令,這種程式碼在編輯器裡顯示為一片空白,於是檢查檔案的開發者看不出任何不對勁。最早辨識出這場行動的Koi Security研究人員,稱它是第一隻能透過程式碼編輯器擴充功能自我傳播的蠕蟲。每一台被感染的機器,都成了下一台的起點。

多數供應鏈攻擊是打了就跑:有毒的套件被發現、下架,幾天內修補完畢。GlassWorm卻是為長久而造。因為它會自己竊取傳播所需的憑證,所以在任何一個擴充功能被下架很久之後,它依然能把自己重新種下,一次行動就這樣在一年多裡觸及數百個專案、數萬次下載。

感染的途徑,是現代軟體工作裡再尋常不過的管線。運營者把暗藏機關的擴充功能上傳到Open VSX,這個市集為VS Code及其表親Cursor、Windsurf、Positron和VSCodium供貨,而那些擴充功能被偽裝成計時器、程式碼格式化工具之類的無害工具。他們透過會自動執行的安裝指令稿,把動過手腳的程式碼塞進npm和Python套件索引裡的套件,又用從先前受害者那裡偷來的憑證,強行把惡意更動推進GitHub上三百多個儲存庫的主分支。一旦進入一台機器,GlassWorm就開始找鑰匙:npm權杖、GitHub登入、讓開發者得以上傳擴充功能的發布權杖,還有加密貨幣錢包。它把被感染的電腦變成其他犯罪流量的中繼伺服器,有時還裝上隱藏的遠端控制軟體,讓運營者即時看到螢幕。

要拿下它,就得攻擊運營者與受感染機器保持聯繫的方式,而恰恰在這一點上,GlassWorm生來就是為了活下去。它沒有依賴一台可以拔掉插頭的單一指令伺服器,而是同時使用四條通道。一條把指令編碼進Solana區塊鏈的交易裡,那是一本被設計成永久且無人能動的公共帳本。另一條把設定藏在檔案分享網路BitTorrent中。第三條把編碼後的網址塞進Google Calendar行程的標題裡。第四條只是一台普通的租用伺服器。CrowdStrike的Counter Adversary Operations團隊聯手Google與Shadowserver,用一次協同打擊把整套通道一併切斷。

剪斷提線,不等於清理傷口。切斷通道能讓運營者發不出新指令、推不了新酬載,卻絲毫無法把GlassWorm從它已經控制的機器上清除,它已經偷走的每一個密碼,依舊是偷走了。這也不是這場行動第一次被打斷。在Koi Security揭露之後,GlassWorm捲土重來,一次帶著兩打新的惡意擴充功能,幾個月後又帶著數十個。研究人員曾形容為無法摧毀的那條區塊鏈通道,如今已被摧毀,但其幕後之人一再表明,他們會重建。

調查人員相信,運營者很可能身在俄羅斯。這個程式在啟動時會檢查電腦的語言與時區設定,一旦發現自己落在俄羅斯或前蘇聯地區某個鄰國的系統上,便會悄然退出,這是那些從該地區行動、避開本地受害者的犯罪集團的熟悉印記。CrowdStrike把這種轉變說得很直白:攻擊者不再只盯著產品,而是盯上了打造產品的開發者。Shadowserver基金會已開始通知受影響的機構,讓它們清理系統、更換一切可能外洩的憑證;而對鏈條更下游的所有人來說,真正的工作從現在才開始,各團隊要逐一核查自2025年初以來裝過哪些擴充功能與套件。基礎設施已經熄滅。清理才剛剛起步。

討論

共有 0 則留言。