Pindai untuk Mengunduh Aplikasi Gate
qrCode
Opsi Unduhan Lainnya
Jangan ingatkan saya lagi hari ini

Analisis Kontaminasi NPM — Reproduksi Serangan Shai-Hulud

Penulis: Joker & Ccj

Latar Belakang

Baru-baru ini, komunitas NPM kembali mengalami kejadian serangan NPM package poisoning yang besar-besaran. Kejadian ini berkaitan erat dengan insiden serangan Shai-Hulud pada bulan September 2025. Dalam paket NPM kali ini, kode jahat mencuri kunci pengembang, kunci API, dan informasi sensitif lainnya seperti variabel lingkungan, serta menggunakan kunci tersebut untuk membuat repositori publik dan mengunggah informasi sensitif yang dicuri.

SlowMist( adalah alat intelijen ancaman Web3 dan pemantauan keamanan dinamis yang dikembangkan secara mandiri. MistEye merespons dengan cepat dan segera mengirimkan intelijen ancaman terkait, memberikan perlindungan keamanan yang penting bagi pelanggan.

![])https://img-cdn.gateio.im/social/moments-159684ebd67ca55d47335ddbd42018c3(

![])https://img-cdn.gateio.im/social/moments-bd2aba046f0a86aca7e1abd2b72e9eed(

Sementara itu, sistem belakang layar akan segera menyimpan sampel berbahaya dan menghitung nilai fitur terkait seperti SHA-256.

![])https://img-cdn.gateio.im/webp-social/moments-0c04f20f1376390bdc04bad915d660b6.webp(

Proses Analisis

Sebagai contoh paket @asyncapi/php-template@0.1.1, saat membandingkan dengan versi lama @asyncapi/php-template@0.1.0, dapat ditemukan bahwa versi 0.1.1 menambahkan dua file js, yaitu setup_bun.js dan file bun_environment.js yang telah diobfuski.

![])https://img-cdn.gateio.im/webp-social/moments-45994a147ca5cec569400f4833f14468.webp(

Menambahkan skrip preinstall di package.json, sehingga setup_bun.js akan dieksekusi secara otomatis sebelum instalasi dependensi.

![])https://img-cdn.gateio.im/webp-social/moments-45e344c5a0d73a61db9f267eae229bc6.webp(

Di setup_bun.js, pertama-tama akan memeriksa apakah sistem sudah menginstal Bun. Jika belum, akan secara otomatis mengunduh dan menginstal Bun dari situs resmi, serta mengatur variabel lingkungan dengan benar agar dapat menemukan file eksekusi Bun.

Akhirnya jalankan file bun_environment.js dengan bun, yang merupakan file jahat yang sangat terobfuscate.

![])https://img-cdn.gateio.im/webp-social/moments-44505da1b8a0d007a2a0c1cf3b0472ca.webp(

Setelah melakukan deobfuscation pada sebagian kode skrip jahat, dapat diketahui bahwa aL0)( adalah fungsi utama dari seluruh skrip jahat tersebut. Dapat dilihat bahwa skrip jahat ini melakukan pencurian informasi sensitif, terlebih dahulu akan memeriksa lingkungan runtime untuk melihat apakah ada kredensial seperti NPM atau GitHub. Jika kredensial tersebut terdeteksi, ia akan menggunakan kredensial NPM untuk menyebarkan rantai pasokan, dan semua informasi sistem yang dikumpulkan serta data sensitif pada akhirnya akan打包 dan diunggah ke repositori GitHub yang dikendalikan oleh penyerang untuk digunakan di kemudian hari.

Pencurian Kredensial

AWS: Skrip berbahaya ini mengimplementasikan metode runSecrets)( dan listAndRetrieveAllSecrets)(, di mana metode runSecrets)( akan menjelajahi semua kredensial akses cloud yang dapat ditemukan serta semua wilayah yang mungkin, memaksimalkan cakupan pemindaian; sedangkan listAndRetrieveAllSecrets)( melakukan “penambangan mendalam” dalam kredensial dan wilayah yang ditentukan, menjelajahi semua Secret dan mendapatkan konten plaintext terbaru mereka. Dengan kedua metode ini, penyerang dapat mengekspor semua SecretString dan SecretBinary yang dapat diakses dari akun AWS korban secara sekaligus.

![])https://img-cdn.gateio.im/webp-social/moments-3c33d90aa4bd49b2d8304f07d9cf0c78.webp(

Metode enumerateValidCredentials)( terutama digunakan untuk mengumpulkan semua kunci layanan cloud yang dapat digunakan. Ia akan mencoba satu per satu dari berbagai sumber seperti variabel lingkungan, file konfigurasi, dan login CLI, dan semua kredensial yang berhasil diverifikasi akan dicatat untuk digunakan saat mencuri rahasia cloud di kemudian hari.

![])https://img-cdn.gateio.im/webp-social/moments-18502e3837d4a198101e4f71f742d424.webp(

GCP: Metode listAndRetrieveAllSecrets)( yang diimplementasikan dalam skrip jahat ini terutama ditujukan untuk modul GCP, yang pertama-tama akan mencantumkan semua Secret di bawah proyek GCP yang ditentukan berdasarkan Project ID, kemudian langsung menentukan versi terbaru dari setiap Secret, dan memanggil accessSecretVersion untuk membaca kontennya dalam bentuk teks biasa. Akhirnya, semua rahasia yang diperoleh (seperti API Key, kata sandi database, dll.) dikumpulkan satu per satu.

![])https://img-cdn.gateio.im/webp-social/moments-bad2067511f01dd442e955c89db61dc9.webp(

Azure: Metode listAndRetrieveAllSecrets)( yang diimplementasikan dalam skrip berbahaya ini terutama ditujukan untuk modul Azure. Ini akan terlebih dahulu memindai seluruh langganan melalui Azure Resource Manager untuk menemukan semua Key Vault; kemudian menggunakan kredensial yang diperoleh untuk terhubung satu per satu ke setiap Vault; akhirnya, mengenum semua Secrets di dalamnya, dan memanggil getSecret untuk mendapatkan nilai plaintext setiap rahasia.

![])https://img-cdn.gateio.im/social/moments-9176712c5d0ed04eeb1ee93411f8af42(

Dalam implementasi pencurian informasi sensitif, alat keamanan yang sah juga digunakan untuk menyerang korban. Dalam metode extractAndInstall)(, file biner TruffleHog diekstrak dan diambil, TruffleHog pada dasarnya digunakan untuk mendeteksi dan memverifikasi kebocoran informasi rahasia dalam repositori kode, seperti kunci API dan kredensial, tetapi digunakan oleh penyerang untuk memindai seluruh sistem file korban.

![])https://img-cdn.gateio.im/webp-social/moments-45e2049fa39e4d26acd79661c664ca21.webp(

) NPM rantai pasokan

Skrip jahat ini mengimplementasikan fungsi updatePackage###( untuk menyebarkan rantai pasokan NPM. Pertama, menggunakan Token NPM yang dicuri, mengunduh kode sumber paket NPM yang sah yang dimiliki oleh korban dan memiliki izin untuk menerbitkan, kemudian mengubah file package.json, menyisipkan perintah skrip preinstall jahat di kolom skrip. Pada saat yang sama, skrip jahat dimasukkan ke dalam paket, secara otomatis meningkatkan nomor versi paket sebesar 1, untuk memicu pembaruan otomatis pengguna, mengunggah paket NPM yang mengandung skrip jahat ke repositori resmi NPM.

![])https://img-cdn.gateio.im/social/moments-f2c1d619c8b8a125a018a4990e47e144(

) Pintu belakang dan C2

Setelah mencuri informasi, token GitHub yang dicuri akan digunakan untuk membuat repositori dengan nama acak di akun tersebut, dan mendapatkan token pendaftaran, menyamarkan komputer korban sebagai GitHub Actions Runner yang di-host sendiri untuk repositori tersebut. Selanjutnya, penyerang menanamkan alur kerja berbahaya di repositori, sehingga setiap tugas Actions yang dipicu akan dieksekusi di mesin korban, sehingga memungkinkan eksekusi kode jarak jauh.

![]###https://img-cdn.gateio.im/webp-social/moments-547cfd5eb9ee4614a975d1f574583495.webp(

Dan mengunggah informasi yang dicuri ini setelah dienkripsi dua kali dengan base64 ke dalam repositori yang dibuat, deskripsi repositori yang dibuat ini adalah “Sha1-Hulud: The Second Coming.”.

![])https://img-cdn.gateio.im/webp-social/moments-6bad80b5f904d7c25fa993600ff2a710.webp(

Setelah didekripsi, data sensitif yang bocor dari pengguna dapat dilihat.

![])https://img-cdn.gateio.im/social/moments-73bf3f27df82dfd50c02ff7c42e746af(

![])https://img-cdn.gateio.im/webp-social/moments-aefb641fee19ee0ad471234e3d5aa081.webp(

![])https://img-cdn.gateio.im/social/moments-ea2062526e3489a6cfd6fcbebd94605c(

Kesimpulan

Serangan keracunan repositori NPM kali ini menggabungkan worm dan program beroperasi mandiri dengan ketahanan jangka panjang serta memanfaatkan TruffleHog untuk menyerang. Tim keamanan Slow Fog menyarankan pengembang untuk menerapkan strategi penguncian versi paket dependensi saat membangun dan merilis iterasi baru. Jika terdapat pembaruan keamanan atau fungsionalitas yang diperlukan pada paket dependensi, pembaruan harus dilakukan melalui proses audit keamanan internal yang ketat, dan versi yang dikunci harus diperbarui secara bersamaan untuk menghindari pembaruan buta yang dapat memperkenalkan risiko baru.

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)