KeyFrame內部研究專用

The NPM Worm Just Jumped Ship And Infected Go

Better Stack·7月8日週三·4 min英文

三句話摘要

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 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

Risky Bulletin: Russia starts blocking DoH and DoT
編輯精選
8 min
Web2 安全英文PODCAST8月26日

Risky Bulletin: Russia starts blocking DoH and DoT

Risky Business

  • 國家級網路管制層級提升:俄羅斯主動封鎖加密 DNS 協定對抗審查工具,中國加速淘汰 Windows 系統並遷移自主 Linux 發行版,各國正透過技術與法律手段強化網路主權與信息控制能力。
  • 詐騙犯罪走向精密化與自動化:從冒充警察的聲音詐騙(竊取 7.2 百萬美元)、AI 語音代理自動化破解 iPhone 啟用鎖、到跨越數百網站的投資詐騙(詐騙 7400 萬美元),犯罪組織正利用自動化工具與 AI 技術大幅降低成本並擴大規模。
  • AI 惡意軟體威脅實際上被嚴重誇大:405 個整合 AI 的惡意軟體樣本中僅 12 個於真實感染被偵測,其餘來自測試環境,證明當前 AI 惡意軟體仍停留於實驗階段,尚未構成主流威脅。
SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;
5 min
Web2 安全英文PODCAST8月26日

SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;

SANS Stormcast

  • SSRF 攻擊者已進化出高級繞過手段,不直接使用元數據服務 IP(169.254.169.254),而改用專門域名服務將請求轉址,支援點或破折號分隔 IP,甚至可自部署 DNS 伺服器進行 DNS 重綁定攻擊,使傳統簡易過濾機制失效。
  • 本地 AI 模型並非完全隱私:微軟 Paint 雖在本地執行生成邏輯,但安全檢查需上傳提示文字至遠程伺服器,返回時圖像內嵌不易移除的伺服器 GUID 隱形浮水印,可見浮水印(Copilot 圖標)則易被移除。
  • 傳統 FTP 協議被新型惡意軟體重新利用為命令控制通道,透過 FTP banner 傳遞指令於連接埠 21,防守者應視任何出站 FTP 流量為異常信號。
SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。