近期 npm 生態系遭到兩波大規模的供應鏈攻擊,分別由名為 IronWorm 的資訊竊取程式與 Miasma 蠕蟲變體發動。這兩次攻擊不僅影響了超過 100 個合法套件,更揭示了現代開發流程中,從套件管理、CI/CD 流水線到 AI 輔助開發工具,每一個環節都可能成為攻擊者的突破口。
對於工程師來說,最危險的不是單一的漏洞,而是攻擊者如何利用我們信任的工具鏈(Toolchain)來實現自動化傳播。
IronWorm:隱匿於核心的秘密竊取者
IronWorm 是一種基於 Rust 語言編寫的資訊竊取工具,其核心目標是開發者的機密資訊。它透過劫持 npm 帳號(如 asteroiddao)發布中毒的套件版本,並利用 npm 的 preinstall hook(在安裝套件前自動執行的腳本)來運行惡意二進位檔。
這類攻擊最可怕的地方在於其自動化傳播能力。IronWorm 會掃描開發者機器上的環境變數與設定檔,目標涵蓋 AWS、Kubernetes、Docker 以及目前熱門的 AI 工具如 OpenAI Codex、Claude 與 Gemini 的 API 金鑰。一旦竊取到具有權限的 GitHub 憑證,它會偽裝成名為 claude 的用戶向多個 GitHub 組織提交惡意 Commit,將惡意程式植入其他套件中,形成一個自我複製的循環。
為了躲避偵測,IronWorm 使用了 eBPF(一種允許在 Linux 核心中執行程式的技術)來建立 Kernel Rootkit(核心層級的根權限工具),直接在作業系統底層隱藏自己的進程與網路連線。除非系統開啟了 Kernel Lockdown(核心鎖定模式),否則一般的監控工具很難發現它的存在。
Miasma 蠕蟲:繞過安全檢查的 Phantom Gyp 技術
與 IronWorm 同時期出現的 Miasma 蠕蟲則採取了更巧妙的繞過手段。許多安全工具會監控 npm 的 preinstall 或 postinstall 腳本,但 Miasma 使用了一種被稱為 Phantom Gyp 的技術。
它利用 binding.gyp 檔案(npm 用於配置原生 C++ 模組編譯的設定檔)來觸發程式碼執行。由於 binding.gyp 的執行路徑不在大多數安全工具的監控範圍內,攻擊者能輕易地在 npm install 過程中下載並安裝 Bun 執行環境,進而執行更複雜的憑證竊取程式。
Miasma 的目標同樣是雲端平台金鑰與 SSH 金鑰,但它額外針對 AI 輔助 IDE(如 Cursor 等)進行攻擊,在專案中植入持久化後門,只要開發者使用 AI 助手開啟專案,後門就會被觸發。
利用 GitHub 作為適應性 C2 伺服器
這兩次攻擊共同展現了一個趨勢:將 GitHub 轉化為 C2(Command and Control,指令控制伺服器)。
傳統的惡意軟體需要連線到特定的外部伺服器接收指令,這很容易被防火牆或網路監控發現。但 Miasma 等工具將指令隱藏在 GitHub 的公開 Commit 訊息中(例如搜尋特定字串 firedalazer)。對企業網路來說,連線到 github.com 是完全正常的行為,這使得網路層級的偵測幾乎失效。
此外,在 CI/CD 環境中,這些惡意程式會濫用 npm 的 Trusted Publishing flow(發布流程)獲取短期 Token,直接將中毒版本推送到官方 registry,讓下游所有依賴該套件的專案全部中招。
工程實務上的防禦建議
面對這種高度自動化且隱蔽的供應鏈攻擊,僅靠掃描漏洞是不夠的,建議採取以下工程實務:
第一,嚴格限制安裝腳本。在執行 npm install 時,建議使用 --ignore-scripts 參數來禁止執行任何生命週期腳本,避免 preinstall 或 binding.gyp 被濫用。
第二,固定版本與完整性校驗。不要在 package.json 中使用過於寬鬆的版本範圍(如 ^ 或 ~),應盡量固定版本,並確保 lock 檔(package-lock.json)中的 integrity hash(完整性雜湊值)被正確校驗,防止套件在發布後被偷偷替換。
第三,最小權限原則。開發者機器的環境變數不應存放長期有效的高權限金鑰。建議使用短期的臨時憑證(Temporary Credentials)或專門的 Secret Management 工具(如 HashiCorp Vault),並定期輪替(Rotate)所有 API 金鑰與 SSH Key。
第四,強化 CI/CD 隔離。確保 CI Runner 在執行完畢後立即銷毀,並限制 Runner 存取外部網路的權限,防止其將竊得的 Secret 上傳至外部 GitHub 倉庫。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。