惡意 npm 包篡改本地 "ethers" 庫以發(fā)起反向 Shell 攻擊
網(wǎng)絡(luò)安全研究人員在npm注冊(cè)表中發(fā)現(xiàn)兩個(gè)惡意軟件包,這些軟件包專門感染本地安裝的其他程序包,這標(biāo)志著針對(duì)開源生態(tài)系統(tǒng)的軟件供應(yīng)鏈攻擊持續(xù)升級(jí)。
惡意包偽裝與感染機(jī)制
涉事的兩個(gè)軟件包分別為ethers-provider2和ethers-providerz。其中ethers-provider2自2025年3月15日發(fā)布以來已被下載73次,而第二個(gè)軟件包可能已被惡意軟件作者自行刪除,未產(chǎn)生任何下載記錄。
ReversingLabs研究員Lucija Valenti?在向The Hacker News提供的報(bào)告中表示:"這些是簡單的下載器,但其惡意載荷被巧妙隱藏。真正有趣的是它們的第二階段行為——會(huì)'修補(bǔ)'本地安裝的正版npm包ethers,用包含惡意載荷的新文件替換原文件。這個(gè)被篡改的文件最終會(huì)建立反向Shell連接。"
難以清除的持久化威脅
這一發(fā)展標(biāo)志著威脅行為者戰(zhàn)術(shù)的新升級(jí),因?yàn)榧词剐遁d惡意軟件包,受感染機(jī)器仍無法清除惡意功能,因?yàn)樾薷囊阎踩肓餍袔熘?。更?yán)重的是,如果用戶在ethers-provider2仍存在于系統(tǒng)時(shí)卸載ethers包,后續(xù)重新安裝該包時(shí)將面臨再次感染的風(fēng)險(xiǎn)。
ReversingLabs對(duì)ethers-provider2的分析顯示,它實(shí)質(zhì)上是廣泛使用的ssh2 npm包的木馬化版本,其install.js中包含惡意載荷,用于從遠(yuǎn)程服務(wù)器("5.199.166[.]1:31337/install")獲取第二階段惡意軟件,寫入臨時(shí)文件并執(zhí)行。執(zhí)行后立即刪除臨時(shí)文件以消除痕跡。
多階段攻擊鏈分析
第二階段載荷啟動(dòng)無限循環(huán)檢查本地是否安裝ethers npm包。若檢測到該包存在或新安裝,就會(huì)立即行動(dòng),將名為"provider-jsonrpc.js"的文件替換為包含額外代碼的偽造版本,這些代碼會(huì)從同一服務(wù)器獲取并執(zhí)行第三階段載荷。新下載的載荷作為反向Shell,通過SSH連接到攻擊者的服務(wù)器。
Valenti?指出:"這意味著當(dāng)客戶端收到服務(wù)器的特定消息時(shí),建立的連接就會(huì)轉(zhuǎn)變?yōu)榉聪騍hell。即使從受感染系統(tǒng)中刪除ethers-provider2包,該客戶端仍會(huì)在特定情況下被使用,為攻擊者提供一定程度的持久性。"
需要特別說明的是,npm注冊(cè)表中的官方ethers包并未被入侵,所有惡意修改都是在本地安裝后進(jìn)行的。
同源攻擊變體
第二個(gè)軟件包ethers-providerz行為類似,試圖修改與本地安裝的"@ethersproject/providers"npm包相關(guān)的文件。雖然具體目標(biāo)文件尚不明確,但源代碼引用表明可能是loader.js。
這些發(fā)現(xiàn)凸顯了威脅行為者在開發(fā)者系統(tǒng)中傳播和維持惡意軟件的新手段,強(qiáng)調(diào)必須在使用前仔細(xì)檢查開源倉庫中的軟件包。Valenti?警告稱:"盡管下載量較低,但這些軟件包功能強(qiáng)大且惡意。若攻擊得逞,將破壞本地安裝的ethers包,即使卸載該包也能在受感染系統(tǒng)中保持持久性。"