根據 OpenSourceMalware 與 Sonatype 等資安研究機構的分析,近期 npm 登錄中心出現了一波大規模的供應鏈攻擊,約有 800 個惡意套件被上傳至該平台。這次攻擊的核心目標是透過欺騙開發者安裝這些套件,進而向 Windows、macOS 及 Linux 系統植入強大的 RAT(Remote Access Trojan,遠端存取木馬,一種允許攻擊者遠端控制受感染電腦的惡意軟體)以及 Infostealer(資訊竊取程式,專門盜取瀏覽器密碼、Cookie 或敏感憑證的工具)。
背景與攻擊手法
這波攻擊採取了與以往不同的策略。傳統的 npm 惡意套件通常利用 lifecycle hooks(生命週期鉤子,如 preinstall 或 postinstall 腳本),在開發者執行安裝指令時就自動觸發惡意程式碼。然而,這次的攻擊者採取了更為隱蔽的社交工程手段:他們使用 AI 產生的大量亂碼或隨機的 Typo-squatting(名稱誤植攻擊,即註冊與知名套件極其相似的名稱,利用使用者打錯字的習慣來誘導下載)名稱,並在 README 文件中明確指示開發者使用 require() 函式來載入該模組。
這種做法將執行權交給開發者,降低了自動化安全掃描工具在安裝階段偵測到異常行為的機率。一旦開發者依照指示載入套件,系統便會執行一個名為 WEL1DROPPER 的下載器。
多階段的載入與繞過機制
WEL1DROPPER 的運作邏輯具有高度的適應性。它會首先偵測主機的操作系統與處理器架構,隨後嘗試從三個 Cloudflare Workers 託管的域名下載對應的惡意載荷(Payload)。如果基於 HTTPS 的下載失敗,該惡意軟體會啟動備案,利用 DNS TXT 記錄(一種將文字資訊儲存在 DNS 系統中的方式,常用於驗證所有權,但在此被用作隱蔽的傳輸通道)從特定域名獲取分段的二進位數據。
具體而言,它會請求 c.<domain> 的 TXT 記錄以獲取載荷的分段數量(1 到 2,000 之間),接著依次請求編號記錄,將獲取的字串拼接並經由 Base64 解碼,還原成可執行的二進位檔案。最後,該檔案會被寫入臨時資料夾,並在 Linux/macOS 上透過 /bin/sh 或在 Windows 上透過 cmd.exe 執行。
針對不同平台的執行策略
這波被 Sonatype 命名為 Flooding Dropper 的攻擊,在不同平台上的行為有所差異:
在 Windows 平台上,惡意程式會採取強大的反偵測措施,嘗試修補 ETW(Event Tracing for Windows,Windows 事件追蹤,用於系統監控與診斷)以及 AMSI(Antimalware Scan Interface,反惡意軟體掃描介面),以干擾安全軟體的監控。同時,它會檢查環境是否為沙箱或虛擬機,並透過註冊表 Run 鍵值與排程工作來實現持久化(Persistence),確保系統重啟後依然能運行。
在 macOS 平台上,其行為與 Windows 類似,會搜尋除錯器或分析工具的痕跡,並透過 LaunchAgent 實現持久化。值得注意的是,macOS 載荷中出現了與俄羅斯金融機構及行動支付相關的域名,顯示此次攻擊可能具有特定的目標導向。
在 Linux 平台上,攻擊者使用了 UPX 壓縮的 ELF 二進位檔,最終部署的是 Sliver。Sliver 是一個開源的命令與控制(C2)框架,允許攻擊者對受感染主機進行深度控制。
隱匿技巧與 broader 威脅脈絡
為了逃避人工審查,這些套件還包含了一個名為 telemetry.js 的檔案。該檔案偽裝成一個看似合理的遙測 SDK(Telemetry SDK,用於收集軟體使用數據的開發工具包),但內部實際上隱藏了與下載器相同的邏輯。由於其體積較大且名稱具備迷惑性,審核者可能會將其誤認為是原生的分析功能而忽略。
此外,Palo Alto Networks Unit 42 的研究顯示,npm 與 PyPI(Python 套件索引)正遭受多方威脅行為者的協同攻擊。除了此次的 RAT 植入,還包括利用混淆的 IIFE(立即執行函式表達式)下載加密貨幣竊取程式,以及透過偽造 CAPTCHA 社交工程達成遠端代碼執行(RCE)等手段。
甚至有攻擊者將觸角延伸至 Chrome 擴充功能,將其偽裝成遊戲模擬器或生產力工具,實際上是植入商業頻寬共享 SDK,將使用者的瀏覽器轉化為住宅代理網路(Residential Proxy Network),用於大規模的網頁爬取與數據抓取。
影響與實務限制
這次事件再次證明,單純依賴套件管理器的安裝機制檢查已不足夠。攻擊者正透過 AI 產生海量名稱、利用 DNS 隧道傳輸載荷以及偽裝成遙測工具等手段,將惡意行為隱藏在正常的開發流程中。
對於開發者而言,最大的風險在於對第三方套件的過度信任。即使套件名稱看起來合理,或 README 提供的指令看似簡單,只要執行了未經審核的代碼,就可能導致整個開發環境甚至公司內網被遠端控制。目前最有效的防禦手段仍是嚴格審查依賴項、使用鎖定版本檔案(Lock files)以及在隔離的環境中測試新套件,而非盲目遵循套件說明文件的操作指令。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。