一次針對加密錢包的重大 JavaScript 供應鏈攻擊,透過受感染的 npm 包進行,大部分得到了控制,僅導致 1,043 美元的加密貨幣被盜。
執行摘要
最近一次廣泛的 JavaScript 供應鏈攻擊,被認為是歷史上最大的 npm 洩露事件,透過對流行的 GitHub 包進行惡意更新,瞄準了加密貨幣錢包。儘管其潛在影響範圍廣泛,影響了 99% 的雲端環境使用的包,並且惡意程式碼存在於其中 10% 的環境中,但此次攻擊造成的經濟損失極小,總計僅竊取了 1,043 美元的加密貨幣。這有限的影響歸因於在兩小時內快速檢測、精心設計的載荷以及開發人員安全意識的提高以及現有保護措施。
事件詳情
該事件於 2025 年 9 月 8 日發生,威脅行為者透過一場複雜的網路釣魚活動控制了開發人員 Qix(Josh Junon)的 npm 帳戶。攻擊者利用一封來自假冒域的、具有說服力的雙因素認證 (2FA) 重置電子郵件來獲取維護者的憑據。這種未經授權的訪問允許發布 18 個流行 npm 包的惡意版本,包括 debug
、chalk
、supports-hyperlinks
和 strip-ansi
,這些包每週總計有數十億次下載。惡意版本在 npm 註冊表上存活了大約兩小時,從世界標準時間 13:16 直到大約 15:20,此時社群發現了可疑程式碼,維護者也恢復了乾淨的版本。
財務機制和攻擊向量
注入的惡意程式碼不針對伺服器端環境,而是專注於攔截瀏覽器環境中的加密交易和 Web3 API 調用。攻擊採用了兩種主要機制:錢包劫持和網路回應操縱。錢包劫持涉及鉤入 window.ethereum
以攔截對 MetaMask 等錢包的調用,從而悄悄地將傳出交易重定向到攻擊者控制的地址。網路回應操縱則覆蓋了 fetch
和 XMLHttpRequest
,以掃描 API 回應中的區塊鏈地址,然後使用 Levenshtein 「最近匹配」演算法將其替換為視覺上相似的攻擊者地址。該攻擊支援多鏈目標,包括 Ethereum、Bitcoin、Litecoin、Tron、BCH 和 Solana。1,043 美元的最小財務影響部分歸因於注入程式碼中的一個關鍵錯誤,該錯誤導致 CI/CD 管道崩潰,從而比預期更早地被檢測到。
更廣泛的影響和安全態勢
此事件強調了開源軟體供應鏈固有的漏洞,特別是在傳遞依賴和維護者帳戶安全方面。Wiz 遙測數據顯示,99% 的雲端環境包含至少一個被此次攻擊瞄準的包實例,並且在洩露窗口期間,惡意程式碼到達了其中 10% 的環境。此次攻擊凸顯了加密生態系統中複雜軟體供應鏈攻擊日益增長的趨勢。長期影響包括對 Web3 開發社群中軟體供應鏈安全的警惕性和審查的增加。預計此次事件將加速採用更強大的安全實踐,例如 軟體物料清單 (SBOM) 生成、SLSA 框架實施、定期依賴項審計、使用包鎖定文件以及為關鍵應用程式考慮私有 npm 註冊表。這些措施對於減輕與受信任開發依賴項成為金融惡意軟體分發載體相關的風險,並增強去中心化金融的整體安全態勢至關重要。