網絡安全研究人員發現,npm軟件包注冊表上多個加密貨幣相關軟件包遭劫持,這些惡意軟件包會竊取環境變量等敏感信息。
Sonatype研究員Ax Sharma表示:"其中部分軟件包已在npmjs.com上存在超過9年,原本為區塊鏈開發者提供合法功能。但[...]這些軟件包的最新版本都植入了混淆腳本。"
受影響軟件包清單
以下是遭劫持的軟件包及其版本號:
- country-currency-map (2.1.8)
- bnb-javascript-sdk-nobroadcast (2.16.16)
- @bithighlander/bitcoin-cash-js-lib (5.2.2)
- eslint-config-travix (6.3.1)
- @crosswise-finance1/sdk-v2 (0.1.21)
- @keepkey/device-protocol (7.13.3)
- @veniceswap/uikit (0.65.34)
- @veniceswap/eslint-config-pancake (1.6.2)
- babel-preset-travix (1.2.1)
- @travix/ui-themes (1.1.5)
- @coinmasters/types (4.8.16)
惡意代碼分析
軟件供應鏈安全公司分析發現,這些軟件包被植入了兩個高度混淆的惡意腳本:"package/scripts/launch.js"和"package/scripts/diagnostic-report.js"。
這些JavaScript代碼會在軟件包安裝后立即執行,專門竊取API密鑰、訪問令牌、SSH密鑰等敏感數據,并將其外泄至遠程服務器("eoi2ectd5a5tn1h.m.pipedream[.]net")。
值得注意的是,相關GitHub代碼庫均未包含這些惡意修改,攻擊者如何推送惡意代碼仍是個謎。目前尚不清楚此次攻擊的最終目標。
攻擊溯源分析
Sharma推測:"我們假設劫持原因可能是npm維護者舊賬戶遭入侵,可能是通過憑證填充攻擊(攻擊者利用先前泄露的用戶名密碼組合嘗試登錄其他網站),或是過期域名被接管。"
"考慮到多個不同維護者的項目同時遭攻擊,第一種情況(維護者賬戶被接管)的可能性遠大于精心策劃的釣魚攻擊。"
安全建議
這一發現凸顯了啟用雙因素認證(2FA)保護賬戶的重要性。同時也暴露出開源項目生命周期結束后難以實施安全防護的挑戰。
Sharma強調:"該案例表明亟需加強供應鏈安全措施,提高對第三方軟件注冊表的監控警覺性。企業必須在開發流程的每個階段優先考慮安全性,以降低第三方依賴帶來的風險。"