這是一起針對特定開發者群體的精準供應鏈攻擊。攻擊者利用 npm 生態系的特性,透過名稱欺騙與複雜的依賴鏈,將跨平台遠端存取木馬(Remote Access Trojan, RAT)植入到開發者的電腦中。這類攻擊最危險的地方在於,它不是隨機撒網,而是針對使用特定企業工具(在此案例中為阿里巴巴相關工具)的工程師。
首先我們要理解攻擊者使用的核心手法:依賴混淆(Dependency Confusion)。在大型企業中,經常會使用私有套件(Private Packages),這些套件通常會放在特定的作用域(Scope)下,例如 @ali/lib-mtop。然而,如果開發者在安裝時不小心,或者設定不當,npm 可能會去公共倉庫搜尋名稱相同但沒有作用域的套件,例如 lib-mtop。攻擊者正是利用這一點,在公共 npm 倉庫上傳名稱極其相似的惡意套件,誘使開發者在不知情的情況下安裝。
這次攻擊的設計非常巧妙,它採取了分層結構來規避安全偵測,而不是在單一套件中放入所有惡意程式碼。
第一層是誘餌套件。攻擊者發布了許多模仿私有套件的頂層套件,這些套件本身看起來很空,但它們會在 package.json 中聲明依賴於第二層的套件。
第二層是橋接套件。例如一個名為 smart-config-manager 的套件,它扮演中間人的角色,將頂層的誘餌與底層的惡意邏輯連接起來。
第三層是執行邏輯。底層套件會從 GitHub 獲取配置規則,並利用 Node.js 的 vm 模組(一個可以用來執行 JavaScript 字串的內建模組)來根據受害者的作業系統下載對應的惡意載荷(Payload)。為了掩人耳目,下載路徑甚至偽裝成阿里巴巴的官方雲端儲存域名。
一旦惡意載荷進入系統,它會根據不同的作業系統採取不同的持久化(Persistence)策略,確保電腦重啟後木馬依然運行。在 Windows 上,它會強行關閉企業安全軟體與 VPN,並替換核心程式碼;在 Linux 上,它將二進位檔下載至暫存區執行後立即刪除檔案,讓偵測工具難以在硬碟中找到證據;在 macOS 上,則透過修改 .zshrc 設定檔與建立 Launch Agent 來實現自動啟動。
最終植入的 RAT 木馬功能極其強大,不僅能執行任意指令、上傳下載檔案、偵查主機資訊,還能進行橫向移動(Lateral Movement),也就是在公司內網中嘗試感染其他電腦。甚至能將惡意碼注入到 DingTalk(釘釘)等企業協作軟體中。
從技術脈絡來看,這次攻擊的目的顯然是工業間諜活動。攻擊者透過分析目標開發者的工具鏈,精準地偽造套件名稱,並利用開發者對內部工具的信任感來完成滲透。
對於工程師來說,這提醒了我們在管理依賴時的幾個重要實務:
第一,嚴格檢查套件的作用域。如果你預期安裝的是 @company/package,請務必確認安裝指令中包含該作用域,避免被無作用域的同名公共套件欺騙。
第二,使用 lock 檔案(如 package-lock.json 或 yarn.lock)。這能確保團隊成員安裝的版本一致,防止在更新依賴時被自動升級到攻擊者剛上傳的惡意版本。
第三,審核第三方依賴的權限。Node.js 的 vm 模組或執行 shell 指令的功能是高風險操作,若一個簡單的配置解析套件要求執行外部指令,應立即提高警覺。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。