安全研究機構StepSecurity近日披露,知名Java庫Axios的兩個npm版本——axios@1.14.1和axios@0.30.4,遭黑客植入惡意代碼。此次攻擊通過劫持核心維護者“jasonsaayman”的npm賬號實施,黑客將賬號郵箱替換為匿名ProtonMail地址后,繞過GitHub Actions自動化流程,手動發布了被污染的版本,并通過npm CLI直接上傳惡意安裝包。
惡意代碼并未直接修改Axios源碼,而是通過注入虛假依賴包“plain-crypto-js@4.2.1”實現攻擊。該依賴包在代碼中從未被引用,僅在安裝時通過postinstall腳本自動執行惡意操作。為規避檢測,攻擊者提前18小時發布了兩個偽裝包:plain-crypto-js@4.2.0作為干凈版本掩護,而4.2.1版本則攜帶惡意代碼,利用前者的存在降低被安全工具標記的風險。
當開發者運行“npm install axios”命令時,惡意依賴包會自動安裝并觸發setup.js腳本。該腳本會連接遠程服務器,根據操作系統類型下載并執行惡意程序:在macOS系統中,惡意程序偽裝成系統文件藏匿于/Library/Caches/com.apple.act.mond目錄;在Windows系統中,程序通過定位PowerShell路徑,將自身復制到%PROGRAMDATA%wt.exe目錄并偽裝成終端可執行文件;Linux系統則通過Node.js的execSync直接運行/tmp/ld.py腳本,并使用nohup保持后臺運行。
攻擊完成后,惡意程序會刪除setup.js和package.json文件,并用純凈版本替換相關依賴,使開發者在檢查node_modules目錄時難以發現異常。例如,Windows系統中的惡意操作還包括通過VB腳本創建隱藏的cmd.exe窗口,將PowerShell木馬腳本保存至%TEMP%6202033.ps1路徑;Linux系統則通過后臺進程持續運行木馬腳本。
開發者可通過“npm list axios”命令檢查當前使用的Axios版本,并使用“ls node_modules/plain-crypto-js”確認是否被植入惡意依賴。若設備已感染,建議立即重裝系統,更換npm令牌、云服務密鑰及SSH密鑰等憑證,同時全面檢查CI/CD流水線是否存在安全隱患。









