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, dampak kerusakannya sangat besar — pengembang yang menjalankan npm install dalam jendela waktu sempit pada tanggal 30–31 Maret menarik malware ke mesin mereka tanpa menyadarinya.
Ini bukan risiko rantai pasokan hipotetis. Ini terjadi, ini dikonfirmasi, dan muatannya serius: trojan akses jarak jauh multi-tahap yang mampu mengeksekusi perintah arbitrer, mengeluarkan data sistem, dan bertahan di mesin yang terinfeksi.
Jika tim Anda menggunakan axios, dan Anda menggunakan Apidog untuk mendesain dan menguji integrasi klien HTTP Anda, bacalah ini sebelum deployment berikutnya.
Kronologi Serangan
30 Maret 2026 — 23:59:12 UTC: Sebuah paket berbahaya bernama plain-crypto-js@4.2.1 diterbitkan ke npm oleh akun yang menggunakan nrwise@proton.me. Versi bersih sebelumnya (4.2.0) telah diterbitkan 18 jam sebelumnya sebagai typosquat yang meyakinkan dari pustaka crypto-js yang sah.
31 Maret 2026 — 00:05:41 UTC: Deteksi malware otomatis Socket menandai plain-crypto-js@4.2.1 sebagai berbahaya — enam menit setelah diterbitkan.
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 repositori GitHub axios. Tag sah terbaru tetap v1.14.0.
31 Maret 2026 — pagi: Isu GitHub #10604 dibuka secara publik melaporkan axios@1.14.1 dan axios@0.30.4 telah disusupi. Pemelihara Axios mengkonfirmasi bahwa mereka awalnya tidak dapat mencabut akses penyerang — akun yang disusupi memiliki izin npm yang lebih tinggi daripada pemelihara yang sah.
31 Maret 2026: Baik axios@1.14.1 dan axios@0.30.4 dihapus publikasinya dari npm. Pemelihara Axios mulai mencabut token, memperketat kontrol publikasi, dan menyelidiki bagaimana token npm yang berumur panjang dieksploitasi untuk mendapatkan akses publikasi yang tidak sah.
Bagaimana Serangan Bekerja
Serangan ini mengeksploitasi celah dalam alur kerja publikasi axios: token npm berumur panjang yang telah digunakan bersama dengan publikasi tepercaya. Penyerang — kemungkinan setelah menyusupi kredensial pemelihara — menggunakan token ini untuk menerbitkan versi baru di luar proses rilis normal.
Versi baru memperkenalkan plain-crypto-js@4.2.1 sebagai dependensi. Nama paket dirancang agar terlihat seperti utilitas kriptografi yang sah; versi 4.2.0 yang bersih sebelumnya menciptakan riwayat singkat untuk mengurangi kecurigaan.
Di dalam plain-crypto-js@4.2.1, analisis Socket menemukan muatan multi-tahap:
- Tahap 1 — Eksekusi: Paket menjalankan kode pada saat instalasi (melalui skrip siklus hidup npm) untuk menjatuhkan muatan sekunder.
- Tahap 2 — Deployment RAT: Muatan menginstal trojan akses jarak jauh yang membuka pintu belakang (backdoor) yang persisten.
- Tahap 3 — Eksfiltrasi: RAT mampu mengeksekusi perintah shell arbitrer yang dikirim dari server C2, membaca variabel lingkungan dan rahasia dari sistem file, dan mengirimkan data sistem melalui jaringan.
RAT tetap ada setelah reboot, yang berarti mesin yang menginstal versi yang disusupi tetap berisiko bahkan setelah paket npm dihapus kecuali RAT secara eksplisit dicari dan dihapus.
Apakah Saya Terkena Dampak?
Anda berpotensi terpengaruh jika:
- Anda menjalankan
npm install axiosataunpm install(dengan axios dipackage.json) antara kira-kira 30 Maret, 23:59 UTC dan 31 Maret 2026 tengah hari UTC. node_modules/axios/package.jsonAnda menunjukkan versi1.14.1atau0.30.4.package-lock.jsonatauyarn.lockAnda menyelesaikan axios ke1.14.1atau0.30.4.
Periksa segera:
# 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, Anda menjalankan versi berbahaya tersebut.
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
# Seharusnya menunjukkan 1.14.0 atau lebih tinggi (setelah 1.14.x bersih diterbitkan)
2. Jika Anda menginstal versi yang disusupi
Jangan anggap ini sebagai pembaruan dependensi rutin. Anggap mesin tersebut telah disusupi:
- Ubah semua rahasia yang dapat diakses dari mesin itu: kunci API, kredensial basis data, kunci SSH, token penyedia cloud, variabel
.env. - Periksa variabel lingkungan Anda — RAT secara khusus menargetkan rahasia di lingkungan proses dan sistem file.
- Audit koneksi jaringan keluar dari periode yang terpengaruh — cari koneksi ke IP yang tidak dikenal.
- Pindai untuk persistensi — periksa tugas cron, skrip startup, dan layanan systemd yang ditambahkan sekitar jendela waktu kompromi.
- Buat ulang citra mesin jika itu adalah CI runner atau server produksi yang telah menginstal versi yang disusupi. Jika itu adalah laptop pengembang, anggap kredensial telah terbakar dan ubah semuanya sebelum menganggapnya bersih.
3. Audit alur CI/CD Anda
Jika alur build Anda menjalankan npm install selama jendela waktu tersebut, lingkungan CI Anda mungkin telah disusupi. Periksa:
# Periksa log build untuk jangka waktu yang terpengaruh
# Cari axios@1.14.1 di setiap output instalasi
# Verifikasi node_modules CI saat ini bersih
npm list axios plain-crypto-js
Ubah semua rahasia yang dapat diakses oleh alur CI Anda: kunci deployment, kredensial penyedia cloud, token registri.
4. Verifikasi file kunci Anda
File kunci (package-lock.json, yarn.lock) harus mengunci versi yang tepat. Jika file kunci Anda memiliki 1.14.1, buat ulang:
# Hapus dan buat ulang
rm package-lock.json
npm install
Periksa file kunci baru menyelesaikan axios ke versi yang aman sebelum melakukan commit.
Menggunakan Apidog untuk Mengaudit Panggilan API axios Anda
Jika Anda menggunakan axios sebagai klien HTTP Anda untuk memanggil API, Apidog dapat membantu Anda memverifikasi bahwa integrasi Anda masih mengirimkan permintaan yang benar setelah pembaruan dependensi.
Setelah memperbarui ke axios@1.14.0, impor endpoint API Anda yang sudah ada ke Apidog dan jalankan pemeriksaan regresi cepat untuk mengkonfirmasi perilaku tidak berubah. Ini sangat berguna jika Anda khawatir bahwa versi berbahaya mungkin telah merusak muatan permintaan atau respons — penegasan respons Apidog memungkinkan Anda memvalidasi nilai bidang, header, dan kode status yang tepat:
// 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;
});
Menjalankan seluruh rangkaian pengujian Anda terhadap versi axios yang diperbarui di Apidog memberi Anda dasar bersih yang terdokumentasi sebelum Anda mendorong ke produksi.
Coba Apidog gratis untuk menyiapkan pengujian regresi klien HTTP.
Mengapa Serangan Rantai Pasokan di npm Sulit Dihentikan
Serangan axios bukanlah anomali. Ini adalah pola:
- event-stream (2018): Pemelihara berbahaya menambahkan muatan yang menargetkan dompet bitcoin. 8 juta unduhan mingguan.
- ua-parser-js (2021): Disusupi untuk menjatuhkan penambang kripto dan pencuri kata sandi.
- node-ipc (2022): Pemelihara dengan sengaja menambahkan kode destruktif yang menargetkan IP Rusia/Belarusia.
- xz utils (2024): Kampanye rekayasa sosial selama dua tahun untuk menyisipkan pintu belakang pada pustaka kompresi Linux inti.
- axios (2026): Kredensial pemelihara yang disusupi digunakan untuk menerbitkan RAT melalui dependensi berbahaya.
Benang merahnya: kepercayaan pada akun publikasi, bukan pada kode. Model npm memberikan akses publikasi kepada pemelihara, dan jika kredensial pemelihara disusupi, penyerang mewarisi kepercayaan itu.
Mitigasi yang benar-benar membantu:
| Tindakan | Apa yang Dilakukan |
|---|---|
File kunci (package-lock.json) |
Mengunci versi yang tepat, mencegah peningkatan diam-diam |
npm audit di CI |
Menandai kerentanan yang diketahui sebelum deployment |
| Socket.dev / Snyk | Analisis perilaku — menandai paket mencurigakan bahkan sebelum CVE ada |
| Otentikasi dua faktor di npm | Membuat penyusupan kredensial lebih sulit |
npm publish dengan token berumur pendek |
Membatasi jendela paparan jika token bocor |
| Baca file kunci di PR | Menangkap perubahan dependensi yang tidak terduga dalam tinjauan kode |
Tim axios sejak itu mengakui bahwa token npm yang berumur panjang adalah bagian dari masalah dan sedang beralih ke kontrol publikasi yang lebih ketat. Tetapi perbaikan perlu 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 pada waktu instalasi npm, persistensi RAT, eksfiltrasi variabel lingkungan
- Versi axios aman: 1.14.0 dan di bawahnya (kecuali 0.30.4), 1.13.x, 1.12.x
Jika Anda mencurigai adanya infeksi, ajukan laporan ke keamanan npm di security@npmjs.com dan simpan log.
Kesimpulan
Kompromi axios 1.14.1 adalah pengingat bahwa keamanan dependensi bukanlah audit satu kali — ini adalah proses berkelanjutan. Kunci versi Anda, jalankan alat analisis perilaku seperti Socket di CI Anda, ubah kredensial saat ada sesuatu yang terlihat tidak beres, dan pantau file kunci Anda dalam tinjauan kode.
Jika Anda perlu membangun kembali kepercayaan pada integrasi API Anda setelah memperbarui axios, Apidog memberi Anda skenario pengujian, penegasan, dan alat mocking untuk memverifikasi perilaku klien HTTP Anda sebelum Anda merilis.
FAQ
Versi axios mana yang disusupi?axios@1.14.1 dan axios@0.30.4. Keduanya telah dihapus publikasinya dari npm. Versi yang aman adalah 1.14.0 (atau versi apa pun di lini 1.13.x, 1.12.x).
Apa yang dilakukan muatan axios berbahaya?Ini menarik plain-crypto-js@4.2.1, yang men-deploy muatan multi-tahap termasuk trojan akses jarak jauh (RAT). RAT dapat mengeksekusi perintah arbitrer dari server C2 jarak jauh, mengeluarkan variabel lingkungan dan rahasia, dan bertahan setelah reboot.
Bagaimana cara mengetahui apakah saya menginstal versi yang disusupi?Jalankan npm list axios — jika menunjukkan 1.14.1 atau 0.30.4, Anda terpengaruh. Periksa juga npm list plain-crypto-js — jika paket itu ada, kode berbahaya berjalan di mesin Anda.
Apakah cukup hanya memperbarui axios?Tidak. Pembaruan menghapus dependensi berbahaya ke depannya, tetapi RAT mungkin sudah terinstal dan bertahan di mesin. Jika Anda menginstal versi yang disusupi, ubah semua rahasia dan audit mesin untuk mekanisme persistensi.
Bagaimana penyerang dapat menerbitkan ke npm tanpa menjadi pemelihara?Penyerang kemungkinan menyusupi kredensial pemelihara dan mengeksploitasi token npm berumur panjang yang memiliki akses publikasi. Tim axios sedang menyelidiki dan memperketat kontrol publikasi.
Apa perbedaan antara ini dan kerentanan biasa?Kerentanan adalah cacat pada kode yang sah. Serangan rantai pasokan memperkenalkan kode berbahaya melalui saluran publikasi yang tepercaya. Kode yang disusupi tidak pernah ada di repositori GitHub axios — itu disuntikkan langsung ke publikasi npm.
Bagaimana cara melindungi proyek saya dari serangan rantai pasokan di masa depan?Gunakan file kunci, jalankan npm audit di CI, tambahkan alat seperti Socket.dev untuk analisis perilaku, aktifkan 2FA pada akun npm, gunakan token publikasi berumur pendek, dan audit perbedaan file kunci Anda dalam tinjauan kode.
