The NPM Worm Just Jumped Ship And Infected Go
三句話摘要
NPM 供應鏈蠕蟲新變種跳入 Go 生態,改變攻擊手法從套件依賴轉向開發環境配置。 開發環境已成為供應鏈攻擊的新前線——必須將配置檔視同可執行代碼,從被動防禦改為主動檢查和最小權限設計。 攻擊演化的根本轉變:傳統防禦依賴監控 node_modules 和 install scripts,但新一波攻擊將惡意代碼植入開發環境配置檔,使用 VS Code 和 Claude Code 的資料夾開啟 hook 觸發,導致現有的 ignore scripts 防禦完全失效。
重點整理
重點- 1
攻擊演化的根本轉變:傳統防禦依賴監控 node_modules 和 install scripts,但新一波攻擊將惡意代碼植入開發環境配置檔,使用 VS Code 和 Claude Code 的資料夾開啟 hook 觸發,導致現有的 ignore scripts 防禦完全失效。
- 2
跨生態擴散的風險:蠕蟲不再侷限於 NPM,已出現在 Go 模組(Verana blockchain 專案),雖然 Go 工具本身未執行代碼,但打包的 JavaScript 檔案和隱藏的配置檔創造了新的感染路徑。
- 3
開發環境成為新攻擊面:惡意代碼透過 node cloud setup.mjs 執行,可在開啟資料夾或啟動編碼會話時觸發,能檢測防毒軟體(CrowdStrike、Defender、Sentinel One)並盜取環境變數內的所有憑證,甚至可能推送惡意代碼到生產環境或 CI 流程。
實用技巧與重點
乾貨- 時間線
- 2025年9月:首次出現
- 2025年11月:大規模再次出現
- 2026年:Team PCP 開源化;並發起最大攻擊競賽
- 2026年6月底:socket.dev 發現新一波攻擊
- 技術細節
- 蠕蟲名稱:Shy Halloud
- 偵測工具:truffle hog(被用來盜取密鑰而非保護)
- 新攻擊載體:`.cloud` 資料夾、`.vscode` 資料夾
- 配置檔:`settings.json`(Claude Code session start hook)、`tasks.json`(VS Code folder open task)
- 執行檔:`node cloud setup.mjs`
- 工具檢測:crowdstrike、defender、Sentinel One
- 載體平台:bun
- 盜取目標
- NPM token
- GitHub token
- AWS、GCP、Azure 密鑰
- SSH 密鑰
- .m 檔案及所有環境變數內的憑證
- 防禦措施
- 不依賴 ignore scripts 旗標
- 將 Claude Code、VS Code、GitHub Workflows 視為可執行代碼
- Clone repo 或 pull 依賴後,檢查配置檔再開啟編輯器
- VS Code 禁用自動任務(task manager → automatic task command)
- 使用短期且最小權限 token,依賴 OIDC 而非長期 token
- CI 設置 egress filtering(白名單制),限制出站連線
- NPMRC 設置最小發布年齡(minimum release age)
- 將敏感資料儲存在密碼管理工具中
結論
結論“開發環境已成為供應鏈攻擊的新前線——必須將配置檔視同可執行代碼,從被動防禦改為主動檢查和最小權限設計。”
完整解析
詳細自 2025 年 9 月首次出現以來,NPM 供應鏈蠕蟲 Shy Halloud 已成為持續威脅。這隻蠕蟲的運作原理是:當開發者安裝受毒害的套件時,install hook 會在安裝過程中執行,隨後掃描本機尋找各類密鑰(NPM token、GitHub token、AWS/GCP/Azure 金鑰、SSH 金鑰),甚至利用 truffle hog 工具系統性地挖掘暴露的憑證。一旦獲取盜取的 NPM token,蠕蟲就會自動發佈受毒害的套件版本,感染下一位使用者。正因為沒有攻擊者需要干預,它才被稱作「蠕蟲」而非一般惡意軟體。蠕蟲在 2025 年 11 月大規模回歸,後來 Team PCP 甚至將其開源化並發起競賽,導致現在出現持續的複製浪潮。
2026 年 6 月底,安全公司 socket.dev 發現了根本性的變化。首先,攻擊已跳出 NPM 生態,出現在 Go 模組(Verana blockchain 專案)中。雖然 Go 工具本身並未執行這些代碼,但打包的源代碼檔案內隱藏著 JavaScript 檔案,包括 `.cloud` 和 `.vscode` 資料夾。這些資料夾包含 `settings.json`(含 Claude Code session start hook)和 `tasks.json`(含 VS Code folder open task),能在開啟資料夾或啟動編碼會話時自動觸發 `node cloud setup.mjs`。
這次變化的核心危害在於防禦方式的失效。傳統的 `ignore scripts` 旗標只能防止 install script 運行,但新攻擊完全繞過了 npm 的 install 流程——惡意代碼不再存在於 `node_modules`,而是住在專案配置檔中。開發者開啟專案編輯器的那一刻,代碼就已經執行。惡意程式透過 bun 解碼並載入真正的載體,能在執行前檢測 CrowdStrike、Defender、Sentinel One 等防護軟體,隨後從 `.m` 檔案和環境變數中盜取所有可用的憑證。如果開發者渾然不覺,可能會在推送程式碼到生產環境或 CI 環境(如 GitHub Workflows)時,將惡意代碼一併提交。
防禦策略須隨之調整。開發者應停止過度依賴 `ignore scripts`,改為主動檢查 clone 或 pull 下來的配置檔。在 VS Code 中禁用自動任務執行,確保 folder open task 必須手動確認才能運行。更根本的做法是採用短期且最小權限的 token,優先使用 OIDC 而非長期 token——若 token 本身無法被盜或重複使用,蠕蟲就無法透過你的認證進行複製。在 CI 層面,設置 egress filtering(出站流量白名單制),只允許已授權的外部連線,即使惡意代碼執行也無法回傳憑證。同時在 NPMRC 配置最小發佈年齡以增加檢測時間,並將敏感資料存放在專業的密碼管理工具中。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

