Intinya
Pada tanggal 30–31 Maret 2026, axios versi 1.14.1 dan 0.30.4 disusupi di npm dengan dependensi berbahaya yang menjatuhkan trojan akses jarak jauh (RAT) pada mesin yang terinfeksi. Kedua versi tersebut telah dihapus publikasinya. Versi yang aman adalah 1.14.0. Jika Anda menginstal axios@1.14.1 atau 0.30.4, anggap mesin tersebut telah disusupi dan segera ubah semua kredensial.
Apa itu axios dan Mengapa Ini Penting
axios memiliki 100 juta unduhan mingguan di npm. Ini adalah klien HTTP di banyak framework frontend, layanan Node.js backend, dan aplikasi perusahaan. Ketika paket yang begitu fundamental ini disusupi, dampaknya sangat besar — pengembang yang menjalankan npm install dalam jendela waktu 30–31 Maret tanpa sadar menarik malware ke mesin mereka.
Ini adalah risiko rantai pasokan nyata dan telah dikonfirmasi: trojan akses jarak jauh multi-tahap yang bisa mengeksekusi perintah arbitrer, mengekstrak data sistem, dan bertahan di mesin terinfeksi.
Jika tim Anda menggunakan axios, dan Anda memakai Apidog untuk mendesain dan menguji integrasi klien HTTP, baca ini sebelum deployment berikutnya.
Kronologi Serangan
30 Maret 2026 — 23:59:12 UTC: Paket berbahaya plain-crypto-js@4.2.1 diterbitkan ke npm oleh akun nrwise@proton.me. Versi 4.2.0 sebelumnya adalah typosquat dari pustaka crypto-js yang sah.
31 Maret 2026 — 00:05:41 UTC: Deteksi otomatis Socket menandai plain-crypto-js@4.2.1 sebagai berbahaya — enam menit setelah publikasi.
31 Maret 2026 — tak lama setelah tengah malam: axios@1.14.1 diterbitkan ke npm, menarik plain-crypto-js@4.2.1 sebagai dependensi. Rilis ini tidak muncul di tag resmi GitHub; tag sah terbaru tetap v1.14.0.
31 Maret 2026 — pagi: Isu GitHub #10604 dibuka, melaporkan axios@1.14.1 dan axios@0.30.4 telah disusupi. Pemelihara Axios tidak dapat langsung mencabut akses penyerang karena akun yang disusupi punya izin npm lebih tinggi.
31 Maret 2026: Baik axios@1.14.1 maupun axios@0.30.4 dihapus dari npm. Pemelihara mencabut token, memperketat kontrol publikasi, dan menyelidiki eksploitasi token npm berumur panjang.
Bagaimana Serangan Bekerja
Serangan ini memanfaatkan token npm berumur panjang pada alur publikasi axios. Penyerang, kemungkinan setelah mendapatkan kredensial pemelihara, menggunakan token tersebut untuk menerbitkan versi baru di luar proses rilis normal.
Versi baru menambahkan dependensi plain-crypto-js@4.2.1 (dengan versi 4.2.0 yang bersih untuk menurunkan kecurigaan).
Payload dalam plain-crypto-js@4.2.1:
- Tahap 1 — Eksekusi: Skrip instalasi npm menjalankan kode untuk menjatuhkan payload sekunder.
- Tahap 2 — Deployment RAT: Payload menginstal trojan akses jarak jauh yang membuka backdoor persisten.
- Tahap 3 — Eksfiltrasi: RAT dapat mengeksekusi perintah shell, membaca env/secret, dan mengirim data ke server C2.
RAT tetap ada setelah reboot, sehingga mesin tetap berisiko walau paket npm sudah dihapus — RAT harus dicari dan dihapus manual.
Apakah Saya Terkena Dampak?
Anda berpotensi terdampak jika:
- Menjalankan
npm install axiosataunpm install(axios dipackage.json) antara 30 Maret, 23:59 UTC dan 31 Maret 2026 tengah hari UTC. -
node_modules/axios/package.jsonmenunjukkan versi1.14.1atau0.30.4. -
package-lock.jsonatauyarn.lockmengunci axios ke1.14.1atau0.30.4.
Cek dengan cepat:
# Periksa versi yang terinstal
npm list axios
# Periksa file kunci
grep '"axios"' package-lock.json | head -5
# Periksa keberadaan plain-crypto-js
npm list plain-crypto-js
ls node_modules/plain-crypto-js 2>/dev/null && echo "INFECTED" || echo "Tidak ditemukan"
Jika plain-crypto-js ada di node_modules, Anda menjalankan versi berbahaya.
Apa yang Harus Dilakukan Sekarang
1. Perbarui axios segera
npm install axios@1.14.0
# atau kunci ke versi aman terbaru
npm install axios@latest
Verifikasi:
npm list axios
# Pastikan versi 1.14.0 atau lebih tinggi (setelah versi bersih dirilis)
2. Jika Anda menginstal versi yang disusupi
Anggap mesin telah disusupi, lakukan langkah berikut:
-
Ubah semua rahasia (API key, kredensial DB, SSH key, token cloud, variabel
.env). - Periksa variabel lingkungan — RAT menargetkan env proses dan sistem file.
- Audit koneksi jaringan keluar pada periode terdampak — cek koneksi ke IP mencurigakan.
- Pindai persistensi — cek cron, skrip startup, systemd service yang muncul di waktu kompromi.
- Buat ulang citra mesin jika itu CI runner / server produksi. Untuk laptop developer, anggap semua kredensial telah bocor dan ganti sebelum digunakan lagi.
3. Audit alur CI/CD Anda
Jika pipeline build menjalankan npm install pada jendela waktu tersebut, CI Anda mungkin terinfeksi. Lakukan:
# Cek log build pada periode terdampak
# Cari axios@1.14.1 di output instalasi
# Pastikan node_modules CI saat ini bersih
npm list axios plain-crypto-js
Ganti semua rahasia yang diakses pipeline CI: kunci deployment, token cloud, token registry.
4. Verifikasi file kunci Anda
File kunci (package-lock.json, yarn.lock) harus mengunci versi tepat. Jika ada 1.14.1, buat ulang:
rm package-lock.json
npm install
Pastikan file kunci baru mengunci axios ke versi aman sebelum commit.
Menggunakan Apidog untuk Mengaudit Panggilan API axios Anda
Jika Anda memakai axios sebagai klien HTTP untuk memanggil API, Apidog dapat membantu memverifikasi integrasi Anda tetap benar setelah update dependensi.
Setelah update ke axios@1.14.0, impor endpoint API ke Apidog dan jalankan regresi untuk konfirmasi perilaku tidak berubah. Ini penting jika Anda khawatir versi berbahaya pernah mengubah muatan request/response. Gunakan penegasan respons Apidog untuk validasi field, header, dan status code:
// Penegasan pasca-respons Apidog
pm.test("Respons bersih — tidak ada bidang yang disuntikkan", () => {
const body = pm.response.json();
pm.expect(body).to.not.have.property('__injected');
pm.expect(pm.response.headers.get('X-Injected-Header')).to.be.null;
});
Jalankan seluruh pengujian pada axios versi baru di Apidog untuk dokumentasi baseline sebelum push ke produksi.
Coba Apidog gratis untuk setup regresi testing klien HTTP Anda.
Mengapa Serangan Rantai Pasokan di npm Sulit Dihentikan
Serangan axios bukan anomali, ini pola yang berulang:
- event-stream (2018): Pemelihara menambahkan payload yang menargetkan dompet bitcoin. 8 juta unduhan/minggu.
- ua-parser-js (2021): Disusupi untuk menjatuhkan crypto miner & pencuri password.
- node-ipc (2022): Pemelihara menambahkan kode destruktif untuk IP Rusia/Belarusia.
- xz utils (2024): Rekayasa sosial selama dua tahun untuk menyuntik backdoor ke pustaka Linux inti.
- axios (2026): Kredensial pemelihara disusupi, RAT diterbitkan melalui dependensi berbahaya.
Inti masalah: kepercayaan pada akun publikasi, bukan pada kode itu sendiri. Model npm mengandalkan trust pada pemelihara; jika kredensial mereka bocor, penyerang mewarisi kepercayaan itu.
Mitigasi yang sangat membantu:
| Tindakan | Apa yang Dilakukan |
|---|---|
File kunci (package-lock.json) |
Mengunci versi tepat, cegah upgrade diam-diam |
npm audit di CI |
Tandai kerentanan sebelum deployment |
| Socket.dev / Snyk | Analisis perilaku — tandai paket mencurigakan sebelum ada CVE |
| 2FA di npm | Sulitkan kompromi kredensial |
npm publish dengan token berumur pendek |
Batasi jendela paparan jika token bocor |
| Review file kunci di PR | Tangkap perubahan dependensi tidak terduga di code review |
Tim axios kini beralih ke kontrol publikasi lebih ketat dan token pendek. Tapi perbaikan harus datang dari ekosistem, bukan hanya paket individu.
Indikator Kompromi (IOC)
Menurut analisis Socket:
-
Paket berbahaya:
plain-crypto-js@4.2.1,axios@1.14.1,axios@0.30.4 -
Email penerbit:
nrwise@proton.me - Perilaku: Koneksi jaringan saat instalasi npm, persistensi RAT, eksfiltrasi env
- Versi axios aman: 1.14.0 ke bawah (kecuali 0.30.4), 1.13.x, 1.12.x
Jika Anda curiga terinfeksi, laporkan ke security@npmjs.com dan simpan log.
Kesimpulan
Kompromi axios 1.14.1 adalah pengingat bahwa keamanan dependensi adalah proses berkelanjutan. Kunci versi, jalankan alat analisis perilaku seperti Socket di CI, ubah kredensial saat ada anomali, dan pantau file kunci di code review.
Jika Anda perlu rebuild kepercayaan pada integrasi API setelah update axios, Apidog menyediakan skenario testing, penegasan, dan mocking untuk memverifikasi klien HTTP Anda sebelum release.
FAQ
Versi axios mana yang disusupi?
axios@1.14.1 dan axios@0.30.4. Keduanya sudah dihapus dari npm. Versi aman: 1.14.0 (atau 1.13.x, 1.12.x).
Apa yang dilakukan muatan axios berbahaya?
Menarik plain-crypto-js@4.2.1 yang men-deploy RAT multi-tahap. RAT dapat mengeksekusi perintah jarak jauh, eksfiltrasi env dan secret, serta bertahan setelah reboot.
Bagaimana tahu kalau saya menginstal versi berbahaya?
Jalankan npm list axios — jika 1.14.1 atau 0.30.4, Anda terdampak. Cek juga npm list plain-crypto-js — jika ada, kode berbahaya sudah berjalan.
Apakah cukup hanya update axios?
Tidak cukup. Update hanya menghapus dependensi ke depan, tapi RAT bisa sudah terinstal dan bertahan. Jika pernah install versi berbahaya, ganti semua rahasia dan audit mesin untuk persistensi.
Bagaimana penyerang bisa publish ke npm tanpa jadi pemelihara?
Penyerang kemungkinan mendapatkan kredensial pemelihara dan mengeksploitasi token npm berumur panjang. Tim axios kini perketat kontrol publikasi.
Apa beda ini dengan kerentanan biasa?
Kerentanan = bug pada kode sah. Supply chain attack = kode berbahaya masuk lewat publikasi tepercaya. Kode jahat tidak pernah ada di repo GitHub axios — disuntikkan langsung ke npm.
Bagaimana melindungi proyek dari supply chain attack kedepan?
Gunakan file kunci, jalankan npm audit di CI, gunakan Socket.dev untuk analisis perilaku, aktifkan 2FA npm, token publish pendek, dan audit perbedaan file kunci di code review.
Top comments (0)