資安業者StepSecurity週二(8/4)揭露,熱門JavaScript套件keyv維護者Jared Wray的GitHub帳號遭到入侵,駭客因而取得他所管理專案的修改及發布權限,將竊密蠕蟲植入11個NPM套件。惡意程式隨後竊取其他開發者的發布憑證,不到4小時便進一步感染433個套件,使受污染套件總數達444個,涉及2,212個惡意版本及超過14個組織。
NPM是JavaScript套件的發布及下載平臺,開發者可把現成套件加入程式,並自動安裝其相依套件。Wray管理的11個受污染套件分布於keyv、cacheable及ecto等3個GitHub專案,包括keyv、flat-cache、file-entry-cache、cacheable-request、cacheable及cache-manager等。其中keyv是鍵值資料儲存工具,每週下載量超過1.5億次;flat-cache及file-entry-cache每週下載量也各接近1.5億次,並被ESLint等常用開發工具間接採用。
駭客控制Wray的GitHub帳號後,在上述3個專案植入惡意檔案,再建立新版本,觸發專案既有的GitHub Actions自動建置及發布流程,將含有蠕蟲的11個套件發布至NPM,成為後續擴散的起點。
這些套件會在安裝前執行名為setup.mjs的程式,下載合法的Bun JavaScript執行環境,再啟動真正的竊密程式。它會搜尋NPM、GitHub、AWS、Azure、Google Cloud、Kubernetes及HashiCorp Vault憑證,也會竊取SSH金鑰、資料庫連線資訊,以及Claude、Codex、Cursor等AI開發工具的登入資料。
若安裝惡意套件的開發者或企業建置環境持有NPM發布憑證,蠕蟲便會查詢該帳號有權管理的所有套件,下載現有版本、植入自身程式,再發布新的惡意版本。這項自動傳播機制使蠕蟲進一步污染433個套件,波及Deliveroo、Picsart、Qlik及ServiceTitan等組織。由於蠕蟲對部分套件的多個既有版本分別發布污染版本,受影響的444個套件合計出現2,212個惡意版本。
StepSecurity指出,駭客透過專案既有的GitHub Actions及NPM OIDC Trusted Publishing機制發布首批惡意版本,使套件仍取得有效的SLSA來源證明。SLSA來源證明用來記錄及驗證套件所使用的原始碼與建置流程,並不負責檢測原始碼是否含有惡意內容。
截至臺灣時間週三(8/5)凌晨2時10分,由Wray管理的首批11個惡意套件皆已退回安全版本,但部分後續感染套件仍列為最新版,清理工作尚未完成。StepSecurity建議,曾安裝受影響版本者應將裝置及建置環境視為已遭入侵,並更換可能外洩的NPM、GitHub及雲端服務憑證。
為防範類似攻擊,業者也建議開源專案維護者採用Passkey或實體安全金鑰、縮小GitHub Token權限,並啟用主分支保護及強制程式碼審查。企業則可設定新套件版本3至7天的冷卻期,在CI/CD環境限制套件安裝指令及對外連線,並監控新版本突然加入的可執行檔與安裝腳本。
Comments (0)