Pembajakan paket npm axios pada 31 Maret 2026 dan serangan phishing yang membackdoor chalk, debug, dan belasan paket lain pada 8 September 2025 adalah dua insiden maintainer account takeover yang paling banyak dibahas. Keduanya hanya berlangsung beberapa jam, tetapi menyentuh paket dengan miliaran unduhan. Artikel ini merangkum kronologi, perbedaan caranya, dan pelajaran untuk proyek JavaScript Anda per 29 Oktober 2026.
Ringkasan dua insiden
- chalk dan debug (8 September 2025): maintainer terkena phishing, sedikitnya 18 paket mengirim kode berbahaya yang membajak transaksi aset kripto di browser, aktif sekitar dua jam.
- axios (31 Maret 2026): akun maintainer utama diambil alih, dua versi axios berbahaya ditambah satu dependensi hantu yang memasang trojan akses jarak jauh, aktif sekitar tiga jam.
Kronologi pembajakan paket npm axios
Menurut Huntress, dengan semua waktu dalam UTC: pada 30 Maret pukul 23:59 dependensi berbahaya plain-crypto-js diterbitkan, sekitar 18 jam setelah penyerang menayangkan versi bersih untuk membangun riwayat akun. Pada 31 Maret pukul 00:21 axios 1.14.1 (bertag latest) diterbitkan, dan Huntress mengamati infeksi pertama hanya 89 detik kemudian pada sebuah endpoint macOS. Pukul 01:00 axios 0.30.4 (bertag legacy) menyusul. Sekitar pukul 03:30 npm menghapus dependensi dan kedua versi axios itu, sehingga jendela paparan sekitar tiga jam.
CISA menyebut versi terdampak [email protected] dan [email protected], serta bahwa dependensi [email protected] tidak dibutuhkan axios. Dependensi itu mengunduh muatan bertahap yang mencakup trojan akses jarak jauh. Menurut Huntress, penyerang menguasai akun maintainer utama, mengganti email akun ke alamat milik penyerang, dan menerbitkan langsung lewat npm CLI dengan token berumur panjang, melewati alur CI berbasis OIDC. Maintainer menyatakan MFA aktif, dan cara token dicuri belum ditentukan. Karena itu kami tidak menyebut axios sebagai kasus phishing. Huntress melihat sedikitnya 135 endpoint menghubungi infrastruktur penyerang selama jendela itu, dan menyebut angka sebenarnya kemungkinan lebih tinggi karena hanya mencakup endpoint mitra mereka.
Soal atribusi: Google Threat Intelligence Group mengaitkannya dengan UNC1069, aktor yang diduga berasal dari Korea Utara, dan Huntress menyebut beberapa bukti mengarah ke aktivitas yang disponsori negara tersebut. Peringatan CISA tidak menyebut aktor tertentu. Anggap atribusi sebagai penilaian, bukan fakta yang sudah final.
Kronologi chalk, debug, dan belasan paket lain
Menurut The Register, maintainer Josh Junon (kontributor pada sedikitnya 80 paket npm) mengaku akunnya diambil alih setelah email phishing dari domain mirip, npmjs.help, dan ia tertipu menyetujui reset autentikasi dua faktor. Sedikitnya 18 paket terdampak, antara lain chalk, debug, ansi-styles, dan supports-color. Menurut Aikido, total unduhan mingguan paket-paket itu sekitar dua miliar. Aikido mendeteksi serangan pada 8 September 2025 pukul 13:16 UTC, dan sekitar dua jam berlalu sebelum npm dan para maintainer mulai menghapus kode berbahaya.
Berbeda dengan axios, kode berbahaya di sini berjalan di sisi klien, di browser situs yang memuat paket tersebut, dan mencegat serta mengubah aktivitas kripto dan web3 untuk mengalihkan pembayaran dan persetujuan ke akun penyerang. Pada saat pelaporan, The Register menyebut penyerang tampaknya belum menerima dana. Dampak finansial langsung yang dilaporkan kecil dibanding jangkauannya, tetapi jangkauan itulah yang membuat insiden ini jadi peringatan.
Apa yang sama dan apa yang beda
- Sama: satu akun maintainer menjadi titik tunggal kegagalan, versi berbahaya dirilis seolah rilis normal, dan jendela eksposurnya hanya beberapa jam.
- Beda cara masuk: chalk lewat phishing dan persetujuan reset 2FA, axios lewat penguasaan akun dan token publish berumur panjang.
- Beda muatan: chalk membajak transaksi di browser, axios memasang trojan lewat skrip pasca-instalasi di mesin developer dan CI.
Perbedaan terakhir menentukan pertahanan. Untuk kasus axios, menonaktifkan skrip instalasi membantu. Untuk kasus chalk, kode jahatnya adalah bagian dari paket itu sendiri sehingga yang menolong adalah jeda versi, lockfile, dan pemantauan.
Pelajaran dan langkah pertahanan
Untuk pengguna paket
- Commit lockfile dan pakai npm ci. Versi tidak berubah diam-diam, dan Anda bisa mengaudit apa yang terpasang. Huntress menyarankan mencari versi terdampak dan plain-crypto-js di package-lock.json, yarn.lock, atau pnpm-lock.yaml.
- Tetapkan jeda versi. CISA menyarankan min-release-age=7 di .npmrc agar hanya paket yang sudah terbit minimal tujuh hari yang terpasang. Kedua insiden dicabut dalam hitungan jam, sehingga jeda seperti itu kemungkinan besar akan menghindarkan Anda.
- Setel ignore-scripts=true. Ini memblokir eksekusi skrip pemasangan, seperti pada kasus axios. Uji terlebih dulu karena beberapa paket butuh skrip build.
- Pantau perilaku. Alat yang tiba-tiba menjalankan shell atau membuat koneksi keluar yang tidak biasa saat npm install patut dicurigai.
Untuk maintainer
- Pakai MFA tahan phishing seperti passkey atau kunci keamanan, dan jangan menyetujui permintaan reset yang tidak Anda mulai sendiri. Pahami cara kerja autentikasi dua faktor dan pencegahan phishing.
- Hapus token berumur panjang dan pakai trusted publishing berbasis OIDC. Huntress mencatat bahwa token yang tetap ada berdampingan dengan OIDC bisa diprioritaskan npm. Bacaan lanjutan: perubahan keamanan npm.
Jika Anda sempat memasang versi berbahaya
Untuk axios, CISA menyarankan menurunkan ke [email protected] atau [email protected], menghapus node_modules/plain-crypto-js/, dan memutar semua kredensial yang mungkin terekspos (token VCS, rahasia CI/CD, kunci cloud, token npm, kunci SSH). Huntress menambahkan: bangun ulang dari image bersih daripada membersihkan di tempat, karena sistem yang menjalankan muatan harus dianggap terkompromi penuh. Untuk chalk dan paket sekawan, periksa apakah aplikasi web Anda sempat menyajikan versi berbahaya dan segera perbarui ke versi bersih.
Relevansi bagi developer Indonesia
axios dan chalk sangat luas dipakai di proyek Node.js, termasuk proyek startup, agensi, dan sistem internal. Jika CI Anda masih memakai npm install tanpa lockfile yang dikunci, versi baru bisa masuk tanpa disadari. Mulailah dari tiga hal: lockfile, jeda versi, dan MFA tahan phishing untuk semua akun yang bisa menerbitkan paket. Konteks lebih luas ada di artikel Shai-Hulud dan panduan supply chain attack.
Pertanyaan yang Sering Diajukan
Apakah proyek saya terdampak jika memakai axios?
Hanya jika proyek memasang axios 1.14.1 atau 0.30.4 dalam jendela sekitar tiga jam pada 31 Maret 2026. Periksa lockfile dan log build untuk versi itu dan untuk plain-crypto-js.
Mengapa MFA yang aktif tidak mencegah pembajakan axios?
Menurut Huntress, penyerang menerbitkan dengan token berumur panjang yang melewati alur OIDC, dan cara token dicuri belum ditentukan. MFA melindungi login, bukan token yang sudah ada.
Apakah ignore-scripts cukup?
Tidak. Ia membantu untuk muatan lewat skrip instalasi, tetapi tidak untuk kode berbahaya yang menjadi bagian paket itu sendiri seperti pada kasus chalk.
Kesimpulan
Kedua insiden menunjukkan bahwa keamanan paket open source sering bergantung pada satu orang dan satu akun. Lockfile, jeda versi, skrip yang dibatasi, MFA tahan phishing, dan trusted publishing menutup sebagian besar celahnya. Untuk memperdalam keamanan aplikasi web dan rantai pasok, lihat kursus Linuxhackingid. Rujukan: peringatan CISA, analisis Huntress, dan The Register.
Every article is reviewed by the practice lead who ran the work before it is published.
