CompileDaily
Coding

Worm Shai-Hulud Serang npm, Kompromikan 1.300+ Versi Paket dengan 2 Miliar Unduhan Bulanan

Admin CompileDaily ·
Bagikan WhatsApp X Facebook Threads
Worm Shai-Hulud Serang npm, Kompromikan 1.300+ Versi Paket dengan 2 Miliar Unduhan Bulanan

Satu akun GitHub milik maintainer paket caching yang dipakai jutaan developer di seluruh dunia berhasil dibobol. Dalam hitungan menit, worm yang menyusup lewat akun tersebut sudah menyebar ke ratusan paket lain—dan yang membuatnya jauh lebih berbahaya, setiap versi berbahaya itu lolos verifikasi keamanan npm dengan tanda tangan yang sepenuhnya sah.

Serangan rantai pasok (supply chain attack) besar-besaran melanda ekosistem npm sejak 4 Agustus 2026, mengkompromikan lebih dari 1.300 versi paket dengan total unduhan bulanan gabungan mencapai 2 miliar. Serangan ini melibatkan varian malware self-propagating dari keluarga Shai-Hulud, dengan turunan terbaru dijuluki "ChainDrop" atau "Mini Shai-Hulud," yang mencuri kredensial developer sekaligus menyebar secara otomatis ke paket-paket lain.

Bermula dari Satu Akun GitHub yang Dibobol

Serangan ini bermula sekitar pukul 09.00 UTC pada 4 Agustus, ketika penyerang yang berhasil mengambil alih akun GitHub maintainer di balik paket keyv—pustaka key-value storage dengan sekitar 127 juta unduhan mingguan—menyuntikkan malware pencuri kredensial langsung ke branch utama repositori tersebut. Maintainer yang sama juga memiliki sejumlah pustaka caching populer lain yang ikut terdampak dalam serangan yang sama, termasuk cacheable (29 juta unduhan per bulan), flat-cache (565 juta unduhan per bulan), dan file-entry-cache (557 juta unduhan per bulan).

Yang membuat serangan ini sangat berbahaya adalah cara penyerang mempublikasikan versi berbahaya tersebut: dengan langsung mendorong (push) berkas jahat ke branch utama, lalu segera memicu rilis baru lewat GitHub Actions—membuat paket yang sudah terkontaminasi malware tersebut memiliki tanda tangan provenance npm yang sepenuhnya sah dan valid secara kriptografis. Menurut analisis Strobes, setiap pemeriksaan kriptografis terhadap paket tersebut lolos sempurna, meski kodenya jelas berbahaya—menjadikan insiden ini kompromi npm kedua dalam tiga bulan terakhir yang berhasil mengirim malware dengan atestasi yang sah.

Paket-paket Fondasi yang Tersembunyi Jauh di Dalam Dependency Tree

Kompleksitas serangan ini diperparah oleh posisi paket-paket yang terdampak, yang berada jauh di dalam pohon dependensi (dependency tree) berbagai proyek software. Menurut Socket, rantai umum yang terdampak mencakup eslint yang bergantung pada file-entry-cache, yang bergantung pada flat-cache, yang pada akhirnya bergantung pada keyv—artinya sebagian besar pengguna yang terdampak bahkan tidak pernah menginstal paket-paket tersebut secara langsung, melainkan lewat dependensi tidak langsung dari tools lain yang mereka gunakan sehari-hari.

Cara kerja malware ini melibatkan hook preinstall bernama "setup.mjs" yang mengunduh runtime Bun standalone, menjalankan payload tahap kedua yang terobfuskasi, lalu mencuri kredensial cloud dan CI/CD—mencakup token .npmrc, token GitHub CLI, kredensial AWS, token Vault, konfigurasi Kubernetes, hingga dompet kripto. Kredensial npm yang dicuri kemudian digunakan untuk mendaftar seluruh paket yang bisa diakses token tersebut, mengunduh tarball paket-paket itu, menaikkan versi patch mereka, dan mempublikasikan ulang versi yang sudah tercemar—menciptakan efek worm yang terus menyebar secara otomatis ke maintainer dan repositori lain.

Infrastruktur Command-and-Control Berbasis Smart Contract Ethereum

Lihat Layanan Kami

Salah satu aspek paling canggih dari malware ini adalah penggunaan smart contract Ethereum untuk mengambil domain command-and-control (C2) secara dinamis. Jika unggahan ke GitHub gagal, payload akan beralih ke domain cadangan yang diambil secara dinamis dari alamat smart contract Ethereum tertentu—memungkinkan penyerang merotasi infrastruktur mereka kapan saja tanpa perlu menyentuh payload yang sudah tersebar, membuat upaya pemblokiran domain jadi jauh lebih sulit dilakukan tim keamanan.

Menurut pelacakan Aikido Security, jumlah paket yang terdampak terus bertambah secara real-time selama serangan berlangsung—dari 868 paket di 2.234 artefak pada update awal, membengkak menjadi setidaknya 434 paket unik di 1.381 versi menurut data terbaru yang dikonfirmasi. Rata-rata waktu deteksi artefak berbahaya oleh tim keamanan Socket tercatat hanya 5 menit 18 detik setelah publikasi—menunjukkan kecepatan respons komunitas keamanan siber, namun juga menegaskan betapa cepatnya worm ini menyebar sebelum sempat dihentikan.

Bagian dari Rentetan Serangan Serupa Sepanjang 2026

Insiden keyv/cacheable ini bukan kejadian terisolasi. Menurut analisis Unit42 milik Palo Alto Networks, npm telah mengalami rentetan serangan serupa berbasis keluarga malware Shai-Hulud sepanjang 2026—dimulai dari kampanye "Shai-Hulud: The Third Coming" pada 22 April, disusul "Mini Shai-Hulud" pada 29 April, kemudian kampanye TeamPCP pada Mei, serangan terhadap 32 paket di bawah namespace @redhat-cloud-services pada 1 Juni, dan kompromi terhadap empat repositori inti AsyncAPI pada 14 Juli.

Kode sumber Mini Shai-Hulud sendiri sudah dipublikasikan secara terbuka oleh TeamPCP sejak 12 Mei—artinya siapa pun dengan kemampuan teknis memadai kini bisa mereplikasi serangan serupa tanpa perlu akses ke tooling internal kelompok aslinya. Pola ini menegaskan tren yang mengkhawatirkan: satu akun yang dikompromikan dan satu pipeline CI/CD yang disusupi sudah cukup untuk secara otomatis mengirimkan puluhan paket bertrojan ke setiap developer yang menjalankan perintah instalasi paket standar.

Rekomendasi bagi Developer dan Organisasi

Badan Keamanan Siber Singapura (CSA) mendesak organisasi yang menggunakan Node.js untuk segera meninjau ulang seluruh dependensi mereka dan memperlakukan kredensial pada sistem yang berpotensi terdampak sebagai sudah dikompromikan. Rekomendasi umum dari berbagai firma keamanan mencakup peninjauan log CloudTrail dan audit GitHub, rotasi seluruh token dan kredensial yang berpotensi terekspos, serta verifikasi manual terhadap isi tarball paket sebelum benar-benar mempercayai versi tertentu—mengingat tanda tangan provenance yang sah kini terbukti tidak lagi cukup menjamin keamanan sebuah paket.

Bagi ekosistem developer JavaScript secara luas, insiden ini menjadi pengingat keras bahwa kepercayaan terhadap rantai pasok software modern tidak bisa lagi hanya bergantung pada verifikasi kriptografis semata—satu akun maintainer yang dikompromikan sudah cukup untuk mengubah pustaka fondasi yang dipercaya miliaran kali setiap bulan menjadi vektor serangan berskala masif dalam hitungan menit.

Komentar (0)

Masuk untuk menulis komentar.

Belum ada komentar.

Kami memakai cookie untuk analisis kunjungan. Baca Kebijakan Privasi kami.