知名開源建置工具Nx被發現有惡意版本被發布至NPM。遭植入惡意程式的Nx套件在安裝時,會於本機逐一走訪檔案系統,搜集憑證與文字檔,並透過受害者的GitHub帳號建立名稱包含s1ngularity-repository的儲存庫,上傳經編碼的資料。

此外,惡意版本不僅竊取憑證,還會改寫使用者終端機啟動檔,在輸入密碼後直接強制關機。雖然官方已將相關版本下架並撤銷可發布的NPM權杖,但由於這些版本曾一度被標記為最新版,用戶在那段時間安裝或還原套件,都可能受到影響。

這起事件的根本原因,為Nx的GitHub Actions自動化流程出現漏洞,攻擊者結合Bash注入與流程提權,利用拉取請求驗證工作流程竊取NPM發布權杖,並藉此將惡意程式碼推送到NPM。雖然主分支受保護,但舊分支的殘餘弱點仍被利用,讓攻擊鏈得以串接完成。

受影響的版本包括nx 20.9.0至20.12.0及21.5.0至21.8.0,@nx/devkit、@nx/js、@nx/workspace、@nx/node的20.9.0與21.5.0,@nx/eslint的21.5.0,以及@nx/key和@nx/enterprise-cloud的3.2.0。一般開發者無需記住所有版本號,只需檢查專案及全域環境是否安裝上述區間的版本即可。

值得注意的是,部分用戶即使未使用Nx工作區,也因IDE外掛Nx Console會自動安裝最新版本的Nx,在惡意版本掛為最新版期間,僅開啟IDE就有可能觸發攻擊。官方現已更新Nx Console,停止自動安裝行為。

針對本次事件,官方採取多項修補措施,包括恢復安全版本為最新,全面輪換GitHub及NPM機密、改用NPM Trusted Publisher機制發布套件,還強制所有套件啟用雙因素驗證,及啟用CodeQL進行原始碼檢查。同時清理和Rebase合併所有含脆弱流程的舊分支,並要求外部貢獻者拉取請求須經團隊核准。

官方建議開發者立即檢查GitHub帳號,一旦發現名稱包含s1ngularity-repository的儲存庫,在保存檔案後移除並通知官方。其次,用npm ls nx確認環境是否安裝惡意版本,必要時卸載後重新安裝最新版本並清理快取。最後,全面輪換GitHub與NPM等服務的憑證與權杖,並檢查.zshrc與.bashrc刪除可疑命令。

熱門新聞

Advertisement