九個存在九年的 npm 軟件包遭劫持 通過混淆腳本竊取 API 密鑰
網(wǎng)絡(luò)安全研究人員發(fā)現(xiàn),npm軟件包注冊表上多個加密貨幣相關(guān)軟件包遭劫持,這些惡意軟件包會竊取環(huán)境變量等敏感信息。
Sonatype研究員Ax Sharma表示:"其中部分軟件包已在npmjs.com上存在超過9年,原本為區(qū)塊鏈開發(fā)者提供合法功能。但[...]這些軟件包的最新版本都植入了混淆腳本。"
受影響軟件包清單
以下是遭劫持的軟件包及其版本號:
- 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)
惡意代碼分析
軟件供應(yīng)鏈安全公司分析發(fā)現(xiàn),這些軟件包被植入了兩個高度混淆的惡意腳本:"package/scripts/launch.js"和"package/scripts/diagnostic-report.js"。
這些JavaScript代碼會在軟件包安裝后立即執(zhí)行,專門竊取API密鑰、訪問令牌、SSH密鑰等敏感數(shù)據(jù),并將其外泄至遠(yuǎn)程服務(wù)器("eoi2ectd5a5tn1h.m.pipedream[.]net")。
值得注意的是,相關(guān)GitHub代碼庫均未包含這些惡意修改,攻擊者如何推送惡意代碼仍是個謎。目前尚不清楚此次攻擊的最終目標(biāo)。
攻擊溯源分析
Sharma推測:"我們假設(shè)劫持原因可能是npm維護(hù)者舊賬戶遭入侵,可能是通過憑證填充攻擊(攻擊者利用先前泄露的用戶名密碼組合嘗試登錄其他網(wǎng)站),或是過期域名被接管。"
"考慮到多個不同維護(hù)者的項(xiàng)目同時遭攻擊,第一種情況(維護(hù)者賬戶被接管)的可能性遠(yuǎn)大于精心策劃的釣魚攻擊。"
安全建議
這一發(fā)現(xiàn)凸顯了啟用雙因素認(rèn)證(2FA)保護(hù)賬戶的重要性。同時也暴露出開源項(xiàng)目生命周期結(jié)束后難以實(shí)施安全防護(hù)的挑戰(zhàn)。
Sharma強(qiáng)調(diào):"該案例表明亟需加強(qiáng)供應(yīng)鏈安全措施,提高對第三方軟件注冊表的監(jiān)控警覺性。企業(yè)必須在開發(fā)流程的每個階段優(yōu)先考慮安全性,以降低第三方依賴帶來的風(fēng)險(xiǎn)。"