文章出處:iThome / 編輯部
發表時間:2025-08-28
知名開源建置工具 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
刪除可疑命令。
原文引用連結:https://reurl.cc/z5QLly