npm、RubyGems 56 個仿冒套件偷 Windows 資料:裝過點查、未中招點防
Tech News

npm、RubyGems 56 個仿冒套件偷 Windows 資料:裝過點查、未中招點防

圖片:via iThome — https://www.ithome.com.tw/news/178298
TechLab 編輯部(譯)·更新:

惡意套件已下架,但移除套件收唔返俾人偷走嘅 session 同錢包資料

iThome 報道,OpenSourceMalware 發現同一批攻擊者喺 npm 同 RubyGems 放咗至少 56 個惡意套件,專揀 axios、chalk、lodash、typescript、bundler 呢啲開發者見慣嘅名嚟扮。套件裝落 Windows 後會自動下載並啟動竊密程式。目標包埋瀏覽器密碼、Cookie、登入 session、支付卡資料、Telegram Desktop、加密貨幣錢包同助記詞。

56 個套件已確認,全部都要當惡意處理

最初 OpenHack 公開咗 37 個 npm 套件,OpenSourceMalware 之後再搵到 typecript-cli、typecript-core 同 typescrit-cli,所以 npm 名單增至 40 個。研究人員比對過 npm 同 RubyGems 樣本,兩邊下載嘅 Rust loader、藏喺入面嘅 Go 竊密程式、網上基建同 SHA-256 hash 都相同,確認係同一批人分兩路出手,唔係碰巧同期出現嘅另一宗 npm 攻擊。

40 個 npm 套件:

  • axios:axious-core、axois-http
  • chalk:chalk-core、chalk-es、chalk-lib、chalk-util
  • commander:comand、comander-cli、comander-lib、comanderjs、commander-lib、commandor-cli、commandor-core、commandor-lib、commandorjs
  • lodash:ladash-cli、loadashjs、lodahs-cli、lodahsjs、lodash-lib、lodhash-cli、lodsh-cli
  • TypeScript:tyepescript-cli、tyepescript-core、typecript-cli、typecript-core、typescipt-cli、typescipt-core、typescirpt-cli、typescirpt-core、typescrip-cli、typescriptt-cli、typescriptt-core、typescrit-cli、typesript-cli、typesript-core、typscript-cli、typscript-core
  • React:raectjs
  • 初始關聯樣本:testingsmthb1g

16 個 RubyGems 套件: activesupmport、brumdler、brundlef、ubnlder、ubnuler、i18om、i1l8n、iai8n、ie18u、ioe18n、ise18n、ri18nr、orakw、rakier、joxn、reaker。

截至 2026 年 8 月 20 日,OpenSourceMalware 話 40 個 npm 套件都喺推出後約一個半鐘內移除;npm registry 留低嘅 metadata 亦標示相關版本已 unpublished。16 個 gem 嘅官方 API 就回傳 404,研究報告同樣指佢哋已經下架。而家搜尋唔到套件,只代表新安裝受阻,之前裝過嗰部機仍然要查。

StubMaker 攻擊分別經 npm postinstall 同 RubyGems extconf.rb 入侵 Windows,再下載同一個竊密程式嘅流程圖

圖片:OpenSourceMalware

點解打錯幾個字就可以中招

呢種手法叫 typosquatting。攻擊者會刪走一個字母、調轉次序,或者加個睇落合理嘅 -core、-cli、-lib;例如 axios 變成 axious-core,react 變成 raectjs。開發者趕住裝 dependency、照抄來歷不明嘅教學指令,或者由 AI coding 工具補套件名時,好容易只望個名「似唔似」,冇再核對 publisher、下載紀錄同官方 repo。

危險位係套件裝完已經可以郁手。npm 樣本用 postinstall.js,RubyGems 樣本就借 extconf.rb 呢個原本用嚟設定 native extension 嘅安裝 hook。兩者都會由 package manager 自動執行,套件裝完已經郁到手,之後有冇喺程式碼 import 或 require 佢都冇分別。lockfile 可以幫手追查裝過咩,但第一次揀錯套件時,lockfile 亦會忠實鎖實個錯名,擋唔到嗰次惡意安裝。

16 個惡意 RubyGems 套件同多個發布帳戶之間關係圖

圖片:OpenSourceMalware

裝過點查:先睇 lockfile,再查 Windows

Node 專案要搜尋所有 package-lock.json、npm-shrinkwrap.json、yarn.lock 同 pnpm-lock.yaml,Ruby 專案就查 Gemfile.lock,逐個對上面 56 個名。唔好淨係望而家嘅 package.json 或 Gemfile,因為套件可能已移除、藏喺舊 branch、CI workspace、cache 或舊 lockfile。如果係公司環境,最好連 source control 歷史、build log 同 artifact inventory 一齊查,確認邊部 Windows runner 或開發機曾經喺 8 月 15 至 16 日安裝相關版本。

Windows 方面,研究報告確認 Ruby 版本會寫出 Downloads\main.exe,npm 版本就會將 loader 放入 %TEMP%;單憑 main.exe 呢個通用檔名唔足以下定論。已知 loader SHA-256 係 6f088ade49456db2422c3edfbb9998f4a3e9cce7c4c00a7279fb45d672a82b7d,可以用 PowerShell Get-FileHash <檔案路徑> -Algorithm SHA256 核對。公司 IT 亦要翻查 node、npm、ruby 或 gem 有冇衍生可疑嘅 main.exe 或 PowerShell 程序,亦要留意瀏覽器有冇無故終止再啟動。網絡紀錄方面,就查吓當時有冇連去 193.70.34.101:20099、攻擊者用過嘅 GitHub release、Gofile 上載服務及 dresslee.com:20027。正常使用 Gofile 或 api.ipify.org 本身唔等於中招,要配合程序、時間同其他 IOC 判斷。

懷疑執行過,就當憑證已經流出

第一步係即刻斷開嗰部電腦嘅 Wi-Fi 同網線;公司機交畀 IT 或 SOC 保留紀錄,唔好急住喺原機登入更多戶口「逐個檢查」。跟住要用另一部可信、乾淨嘅裝置撤銷瀏覽器、電郵、GitHub、npm、雲端服務同 Telegram 嘅登入 session,再換晒曾經儲喺瀏覽器嘅密碼、相關 API key 同 token。支付卡資料如果曾經儲存喺受影響瀏覽器,應該聯絡發卡機構監察或更換卡,單純刪走惡意套件收唔返已經上載嘅資料。

如果電腦存過助記詞或軟件錢包,OpenSourceMalware 建議直接當佢哋已外洩:用可信而且未受影響嘅裝置開一個全新錢包,再將資產轉走,舊助記詞唔好重用。處理完戶口同資產後,個人用家可以交可信技術人員評估重裝 Windows;公司就按內部事故程序 reimage 同重發憑證。研究暫時冇確認呢批樣本設有長期常駐機制,但「冇見到 persistence」唔代表原機可以繼續放心使用。

未中招點防:核對來源先撳 install

日常做法其實唔複雜:由項目官方文件或 repo 複製套件名,安裝前核對 registry 上嘅 owner、版本歷史、推出時間同下載走勢;突然出現、名字似熱門庫、介紹又空泛嘅套件要停一停。團隊可以喺 code review 強制檢查 lockfile 新增項目,CI 對全新或未批准 dependency 報警,再用 allowlist、內部 registry mirror同 dependency scanner 減少手滑空間。--ignore-scripts 可喺部分檢查環境阻止安裝 hook,但有啲正常套件都靠 script 建置,開啟前要先測清楚,唔好當佢係一鍵萬能防線。

今次 40 個 npm 套件喺八分鐘內由五個帳戶一齊推出,反映攻擊者可以好快換名再開下一輪。守住一份靜態黑名單只夠處理今次事故;開發團隊長遠要管好新增 dependency、安裝 script 同 Windows build runner,先至跟得上呢種玩法。

延伸閱讀


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook