當前位置: 妍妍網 > 碼農

僅用 30 分鐘!開發者做「山寨版」 VSCode 擴充套件,攻破 4830 億美元巨頭,甚至登上了官方熱趨榜?

2024-06-11碼農

整理 | 鄭麗媛

出品 | 程式人生(ID:coder_life)

Visual Studio Code(VSCode),一款由微軟釋出的原始碼編輯器,受到了全球許多專業軟體開發者的喜愛——然而近日,一組國外研究團隊宣稱:他們僅在 30 分鐘內,開發了一個「山寨」 VSCode 擴充套件程式,並成功黑進了多家市值數十億美元的公司。

「明明 我們正處於安全套用和環境的頂峰,但 30 分鐘就能繞過最復雜的安全環境。

該研究團隊不公開「受害者」的具體名稱,但透露其中包括一家市值 4830 億美元的上市公司、多家大型安全公司和某個國家司法法院。

「三個熱愛安全和產品開發的人」,為解決問題而做實驗

在進入正題前,有一點需要明確:該研究團隊做這個實驗,是為了發現並解決問題,並不是真正的黑客,也沒有造成實質性傷害。

該研究團隊由三個人組成,即 Amit Assaraf、Itay Kruk 和 Idan Dardikman,他們自詡是「三個熱愛安全和產品開發的人」。在探索網路安全領域時,他們偶然發現了一篇在 VSCode 擴充套件中發現漏洞的媒體文章。據悉,這個惡意擴充套件偽裝成了另一個被廣泛使用、較為知名的擴充套件,即透過容易混淆的名字欺騙使用者安裝,以竊取開發者裝置上的資訊。

對此事進行研究後,該研究團隊發現有許多文章都提到了在 VSCode 擴充套件和其他整合式開發環境中均存在類似漏洞,但他們卻找不到解決這個問題的相關方法。其背後理由也很好理解:

(1)對於大型安全公司來說,這個問題太小不值得關註;

(2)對於初創安全公司來說,這個市場太小,無法建立自己的業務;

(3)對於微軟本身來說,這也不是一個高度優先的問題,甚至還可能有悖於其利益:他們肯定希望市場上能有盡可能多的擴充套件,若上傳過程中與開發者摩擦太多,不利於市場的快速擴大。

「那麽,誰來為這個問題提供解決方案呢?三個熱愛安全和產品開發的人。」

在這樣的背景下, Amit Assaraf、Itay Kruk 和 Idan Dardikman 三人決定進行一個實驗:建立一個惡意 VSCode 擴充套件,看看用它來竊取原始碼並將其發送到遠端伺服器有多難。

與正版 Dracula 極為相似的山寨版「Darcula」

開始構建前,這三人想到了之前看過的一篇文章,其中提到在一個山寨擴充套件中發現了惡意程式碼,而該擴充套件盜用了一個名為「Prettier - Code formatter」的主流 VSCode 擴充套件的名字。

受此啟發,他們決定做一個「Dracula Official」的山寨版——「Darcula Officia」(字母 r 和 a 顛倒了位置)。

據了解,正版 Dracula 是一個廣受歡迎的開源主題,專為喜歡暗色界面的開發者設計。其暗色模式具有高對比度的色調,視覺上非常吸引人,還有助於減少長時間編碼過程中的眼睛疲勞,因此被大量開發人員使用,在 VSCode Marketplace(微軟為 VSCode 營運的一個擴充套件市場)上的安裝量甚至已超過 700 萬。

(正版 Dracula 的安裝頁面)

瞄準好「山寨」目標後,該研究團隊就在 30 分鐘內下載了正版 Dracula 原始碼、額外添加了部份程式碼並復制了所有資源後,得到了下面這個山寨版「Darcula Officia」——乍一看,與正版毫無區別。

(山寨版 Darcula 的安裝頁面)

除了下載頁面高度相似,該研究團隊還特別註冊了一個與官方 draculatheme.com 類似的網域名稱:darculatheme.com。令他們感到意外的是,想要成為 VSCode Marketplace 上的驗證釋出者,也只需驗證網域名稱。

於是不過幾分鐘後,這個山寨版 Darcula 就透過了 VSCode Marketplace 的驗證,可信度瞬間提高。

不僅如此,他們發現在 package.json 中添加任何 Github repo 都能讓微軟將其列為擴充套件頁面上的官方 repo,即使不是該 repo 作者也行。因此,該團隊進一步在山寨版 Darcula 上添加了正版 Dracula 的官方 repo,使其可信度再度提升。

山寨版 Darcula 竟登上了熱門趨勢!

既然山寨版 Darcula 的可信度已經有了,接下來就是添加惡意程式碼了。

上文提到,該研究團隊向這個擴充套件中「額外添加了部份程式碼」,這實際上是一個附加指令碼,用於收集系統資訊,還會透過 HTTPS POST 請求將其發送到遠端伺服器:「簡而言之,每次受害者在編輯器上開啟文件時,我們都能讀取程式碼並將其發送到我們的 Retool 伺服器,此外還會向我們的伺服器發送一個信標,其中包含主機資訊,如主機名、網域名稱、平台、擴充套件數量等。」

下面是他們添加到該擴充套件中的部份具體程式碼:

可能會有人質疑,這樣的惡意程式碼不會被端點檢測和響應(EDR)工具標記嗎?研究人員表示:不會的,因為 VSCod e 作為開發和測試系統,因此在這方面受到了寬大處理。

「不幸的是,傳統的端點安全工具(EDR)無法檢測到這種惡意活動。VSCode 的構建是為了讀取大量檔、執行許多命令並建立子行程,因此 EDR 無法了解 VSCode 的活動是合法的開發者活動還是惡意擴充套件。」

一切準備就緒,他們便把這個山寨版 Darcula 進行了釋出。它在 VSCode Marketplace 剛上線不過幾分鐘,就迎來了第一位「受害者」:

一天之後,該研究團隊並沒有特別為此進行推廣,但還是又多了 100 多名不同的「受害者」。另外,或許是由於釋出者經過驗證,在 VSCode Marketplace 搜尋「Darcula」時,該擴充套件顯示在第一頁。

沒想到,幾天後這個「受害者」規模愈發龐大。該研究團隊確認,有一家市值 4830 億美元的上市公司落入陷阱,還有數十家市值數十億美元的公司、全球最大的安全公司之一以及某個國家的司法法院都出現在了「受害者」名單中——為了保護各方利益,研究團隊選擇不透露公司名稱。

更離譜的是,他們最後發現,這個山寨版 Darcula 竟還一度登上了 VSCode Marketplace 的熱門趨勢!

微軟尚未對此進行回應

在親身經歷了建立和釋出惡意擴充套件有多麽容易之後,該研究團隊自己都感到意外:「當開始這個實驗時,我們從未想象過它最終會發展成這樣。事後看來,這種攻擊載體的風險和高影響潛力顯而易見,也凸顯了它對攻擊者的巨大價值。」

這樣的結果,讓他們意識到了這個實驗的意義重大,由此深入研究了一番 VSCode Marketplace 中惡意擴充套件的現狀,並行現了以下情況:

● 1283 個帶有已知惡意程式碼(共計 2.29 億次安裝)。

● 8161 個與寫死 IP 地址通訊。

● 1452 個執行未知可執行檔。

● 2304 個使用另一個釋出者的 Github repo,說明它們是山寨版。

究其原因,是因為微軟在 VSCode 市場上缺乏嚴格的控制和程式碼審查機制,使得攻擊者可以肆無忌憚地濫用平台規則。可以預見的是,隨著該平台的使用越來越多,未來情況將愈發糟糕。

研究人員警告稱,從數位上可以看出,VSCode Marketplace 中存在大量會給企業帶來風險的擴充套件程式:「VSCode 擴充套件是一種被濫用和暴露的垂直攻擊,具有零可見性、高影響和高風險。這個問題對企業構成了直接威脅,值得安全界關註。」

目前,該研究團隊已把檢測到的所有惡意擴充套件都報告給微軟,並詳述了當前 VSCode Marketplace 存在的巨大安全設計缺陷。不過截至發稿,絕大多數擴充套件仍可透過 VSCode Marketplace 下載,微軟方面也尚未對加強安全審查的要求作出回應。

參考連結:

https://medium.com/@amitassaraf/the-story-of-extensiontotal-how-we-hacked-the-vscode-marketplace-5c6e66a0e9d7

https://www.bleepingcomputer.com/news/security/malicious-vscode-extensions-with-millions-of-installs-discovered/amp/

推薦閱讀:

「如今馬斯克的 X,失去了唯一一位公關」