- Ekosistem npm secara luas sedang disusupi varian malware destruktif, dan tim keamanan GitLab telah mendeteksinya
- Malware ini merupakan bentuk evolusi dari Shai-Hulud, dengan mekanisme penyebaran seperti worm yang otomatis menginfeksi paket lain milik pengembang yang terinfeksi
- Setelah mencuri kredensial dari GitHub, AWS, GCP, Azure, dan lainnya, data kemudian diekfiltrasi ke repositori GitHub yang dikendalikan penyerang
- Tertanam ‘dead man’s switch’ yang segera menghapus data pengguna jika akses ke GitHub dan npm diblokir secara bersamaan
- GitLab telah memastikan sistem internalnya tidak terinfeksi, serta menyediakan panduan deteksi dan respons melalui Dependency Scanning dan GitLab Duo Chat
Ringkasan serangan
- Tim Vulnerability Research GitLab mendeteksi serangan rantai pasok berskala besar di ekosistem npm
- Sistem pemantauan internal menemukan beberapa paket yang terinfeksi
- Malware tersebut diidentifikasi sebagai varian dari Shai-Hulud
- Malware menyebar dengan propagasi seperti worm, sehingga otomatis menginfeksi paket lain milik pengembang yang sudah terkompromi
- GitLab mengonfirmasi bahwa mereka tidak menggunakan paket berbahaya tersebut di lingkungan internalnya dan telah membagikan informasi kepada komunitas keamanan
Struktur internal serangan
- Paket npm berbahaya yang dideteksi sistem pemantauan internal menjalankan fungsi berikut
- Mengumpulkan kredensial dari GitHub, npm, AWS, GCP, dan Azure
- Mengirim data curian ke repositori GitHub yang dikendalikan penyerang
- Secara otomatis menginfeksi paket lain milik korban
- Menjalankan payload destruktif jika akses ke infrastruktur diblokir
- Beberapa paket terinfeksi telah dikonfirmasi, dan investigasi masih berlangsung
Analisis teknis: cara serangan berjalan
Vektor infeksi awal
- Malware menyusup ke sistem melalui proses pemuatan multistage
- Skrip
setup_bun.js ditambahkan ke package.json dari paket yang terinfeksi
- Sekilas disamarkan sebagai installer runtime JavaScript Bun
- Namun pada kenyataannya mengeksekusi
bun_environment.js (payload terobfusikasi berukuran 10MB)
- Terdiri dari file loader kecil dan payload besar yang terobfusikasi untuk menghindari deteksi
Pengumpulan kredensial
- Segera setelah dijalankan, malware mengumpulkan token dan rahasia dari berbagai sumber
- Token GitHub(
ghp_, gho_)
- Kredensial AWS, GCP, Azure
- Token npm (
.npmrc dan variabel lingkungan)
- Menggunakan alat Trufflehog untuk memindai seluruh home directory guna mencari API key, kata sandi, dan riwayat Git
Jaringan eksfiltrasi data
- Dengan token GitHub yang dicuri, malware membuat repositori publik dengan deskripsi “Sha1-Hulud: The Second Coming.”
- Repositori tersebut berperan sebagai dropbox data
- GitHub Actions runner dipasang untuk mempertahankan persistensi
- Jika izin tidak mencukupi, malware mencari repositori lain dengan penanda yang sama untuk mendaur ulang token dari sistem lain
- Dengan cara ini terbentuk jaringan berbagi token terdistribusi
Penyebaran melalui rantai pasok
- Dengan memanfaatkan token npm yang dicuri, malware menginfeksi semua paket milik korban
- Mengunduh paket asli
- Menyisipkan
setup_bun.js sebagai skrip preinstall
- Menambahkan payload
bun_environment.js
- Menaikkan nomor versi
- Mempublikasikan ulang paket yang terinfeksi ke npm
Dead man’s switch
- Malware terus memantau akses ke GitHub (untuk eksfiltrasi data) dan npm (untuk penyebaran)
- Jika kedua kanal sama-sama diblokir, malware segera menjalankan penghancuran data
- Windows: menghapus file pengguna dan menimpa sektor disk
- Keluarga Unix: menimpa file dengan perintah
shred lalu menghapusnya
- Jika terjadi penghapusan massal repositori GitHub atau pencabutan massal token npm, ada risiko sistem yang terinfeksi melakukan penghapusan data secara bersamaan
Indikator kompromi (IoC)
- Indikator deteksi utama
- File:
bun_environment.js (skrip post-install berbahaya)
- Direktori:
.truffler-cache/, .truffler-cache/extract/
- Proses:
del /F /Q /S "%USERPROFILE%*", shred -uvz -n 1, cipher /W:%USERPROFILE%
- Perintah:
curl -fsSL https://bun.sh/install | bash, powershell -c "irm bun.sh/install.ps1|iex"
Dukungan deteksi dan respons dari GitLab
- Pengguna GitLab Ultimate dapat segera memeriksa apakah mereka terdampak melalui fitur keamanan bawaan
- Saat Dependency Scanning diaktifkan, paket terinfeksi dalam
package-lock.json atau yarn.lock akan terdeteksi otomatis
- Jika merge request memuat paket terinfeksi, peringatan akan ditampilkan
- Dapat dipadukan dengan GitLab Duo Chat untuk deteksi cepat berbasis kueri
- Contoh: “Apakah ada dependensi yang terdampak kampanye Shai-Hulud v2?”
- Security Analyst Agent akan memeriksa data kerentanan proyek dan langsung memberikan jawaban
- Tim yang mengelola banyak repositori disarankan menggabungkan deteksi otomatis berbasis CI/CD dengan respons cepat berbasis agen
Prospek ke depan
- Serangan ini dinilai sebagai bentuk baru serangan rantai pasok yang menggunakan penghancuran data korban untuk melindungi infrastruktur penyerang
- GitLab sedang bekerja sama dengan komunitas untuk mengembangkan strategi pemulihan yang aman, sambil terus memantau varian baru melalui sistem deteksi otomatis
- Tujuannya adalah mencegah kerugian sekunder akibat dead man’s switch melalui berbagi informasi sejak dini
Belum ada komentar.