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 個惡意套件,專揀 axioschalklodashtypescriptbundler 呢啲開發者見慣嘅名嚟扮。套件裝落 Windows 後會自動下載並啟動竊密程式。目標包埋瀏覽器密碼、Cookie、登入 session、支付卡資料、Telegram Desktop、加密貨幣錢包同助記詞。

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

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

40 個 npm 套件:

  • axios:axious-coreaxois-http
  • chalk:chalk-corechalk-eschalk-libchalk-util
  • commander:comandcomander-clicomander-libcomanderjscommander-libcommandor-clicommandor-corecommandor-libcommandorjs
  • lodash:ladash-cliloadashjslodahs-clilodahsjslodash-liblodhash-clilodsh-cli
  • TypeScript:tyepescript-clityepescript-coretypecript-clitypecript-coretypescipt-clitypescipt-coretypescirpt-clitypescirpt-coretypescrip-clitypescriptt-clitypescriptt-coretypescrit-clitypesript-clitypesript-coretypscript-clitypscript-core
  • React:raectjs
  • 初始關聯樣本:testingsmthb1g

16 個 RubyGems 套件: activesupmportbrumdlerbrundlefubnlderubnuleri18omi1l8niai8nie18uioe18nise18nri18nrorakwrakierjoxnreaker

截至 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-corereact 變成 raectjs。開發者趕住裝 dependency、照抄來歷不明嘅教學指令,或者由 AI coding 工具補套件名時,好容易只望個名「似唔似」,冇再核對 publisher、下載紀錄同官方 repo。

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

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

圖片:OpenSourceMalware

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

Node 專案要搜尋所有 package-lock.jsonnpm-shrinkwrap.jsonyarn.lockpnpm-lock.yaml,Ruby 專案就查 Gemfile.lock,逐個對上面 56 個名。唔好淨係望而家嘅 package.jsonGemfile,因為套件可能已移除、藏喺舊 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 亦要翻查 nodenpmrubygem 有冇衍生可疑嘅 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