DEV Community

Cover image for Cara Kerja Serangan Rantai Pasokan NPM Axios (Dan Cara Melindungi Proyek API Anda)
Walse
Walse

Posted on • Originally published at apidog.com

Cara Kerja Serangan Rantai Pasokan NPM Axios (Dan Cara Melindungi Proyek API Anda)

TL;DR

Pada 31 Maret 2026, penyerang membobol akun npm pemelihara utama Axios, klien HTTP JavaScript paling populer dengan 83 juta unduhan mingguan. Mereka menerbitkan versi berbahaya (1.14.1 dan 0.30.4) yang berisi RAT lintas platform yang mencuri kredensial, kunci SSH, dan token cloud dari mesin pengembang. Turunkan versi ke Axios 1.14.0 segera, rotasi semua rahasia, dan pindai indikator kompromi pada sistem Anda.

Coba Apidog hari ini

Pendahuluan

Axios memproses lebih banyak permintaan HTTP dibandingkan pustaka JavaScript lainnya. Jika Anda telah membangun klien API, menguji endpoint, atau menghubungkan frontend ke backend dalam lima tahun terakhir, Anda mungkin pernah menggunakannya.

Pada 31 Maret 2026, pukul 00:21 UTC, pelaku ancaman menerbitkan Axios versi 1.14.1 melalui akun pemelihara yang dibajak. Paket tersebut tampak identik dengan rilis sah. Perbedaannya hanya pada file package.json, yang menyuntikkan dependensi hantu bernama plain-crypto-js dan menyebarkan trojan akses jarak jauh ke setiap mesin yang menjalankan npm install.

Versi berbahaya ini aktif selama dua hingga tiga jam sebelum npm menariknya. Dalam rentang waktu singkat, potensi paparan sangat besar.

💡 Jika Anda membangun atau menguji API, serangan ini menargetkan toolchain Anda langsung. Klien HTTP bawaan Apidog menghilangkan kebutuhan pustaka HTTP pihak ketiga, mengurangi permukaan serangan ini.

Artikel ini membahas cara kerja serangan, deteksi sistem yang terkompromi, dan perubahan penting untuk manajemen dependensi API Anda.

Bagaimana Serangan Rantai Pasok Axios Terjadi

Garis Waktu Eksekusi

  • 30 Maret, 05:57 UTC: Paket bersih plain-crypto-js@4.2.0 diterbitkan ke npm untuk membangun riwayat.
  • 30 Maret, 23:59 UTC: Versi berbahaya plain-crypto-js@4.2.1 diterbitkan, menambahkan hook postinstall berisi dropper.
  • 31 Maret, 00:21 UTC: axios@1.14.1 dirilis dengan akun pemelihara yang disusupi.
  • 31 Maret, 01:00 UTC: axios@0.30.4 menyusul, menargetkan cabang 0.x.
  • 31 Maret, ~03:15 UTC: npm membatalkan kedua versi setelah laporan komunitas.
  • 31 Maret, 04:26 UTC: npm menerbitkan stub keamanan untuk plain-crypto-js.

Cara Akun Dibobol

  • Akun npm utama Axios (jasonsaayman) diambil alih, email diubah ke ifstap@proton.me.
  • Rilis sah menggunakan OIDC Trusted Publisher, versi berbahaya tidak.
  • Tidak ada gitHead pada rilis yang disusupi, menandakan tidak berasal dari CI/CD.
  • Penyerang menggunakan token npm berumur panjang untuk publikasi manual.

Otomatiskan pemeriksaan OIDC dan asal CI/CD pada pipeline Anda untuk deteksi dini.

Teknik Injeksi Dependensi

  • Modifikasi hanya pada package.json, menambah plain-crypto-js@^4.2.1 sebagai dependensi runtime.
  • Paket tidak diimpor di kode, hanya untuk memicu hook postinstall saat npm install.
  • Hanya file package.json yang berbeda antara rilis 1.14.0 (bersih) dan 1.14.1 (berbahaya).

Apa yang Dilakukan Muatan Berbahaya

Mekanisme Dropper

  • Hook postinstall pada plain-crypto-js mengeksekusi file setup.js berukuran 4.2 KB dengan dua lapisan obfuscation:
    1. XOR dengan kunci "OrDeR_7077"
    2. Base64 dengan pembalikan karakter
  • Setelah decoding, dropper mendeteksi OS dan mengeksekusi payload spesifik.

Jalur Serangan per Platform

macOS:

# Membuat AppleScript dan menjalankan payload
Writes AppleScript to /tmp/6202033
Executes via osascript
Downloads payload to /Library/Caches/com.apple.act.mond
Enter fullscreen mode Exit fullscreen mode

Windows:

# Artefak persistensi dan eksekusi payload
Copies PowerShell to %PROGRAMDATA%\wt.exe
Executes VBScript dropper via cscript
Enter fullscreen mode Exit fullscreen mode

Linux:

# Men-download dan menjalankan Python RAT
Downloads Python RAT to /tmp/ld.py
Executes via nohup python3
Enter fullscreen mode Exit fullscreen mode

Semua varian mengirim POST ke server C2 berbeda:

  • macOS: packages.npm.org/product0
  • Windows: packages.npm.org/product1
  • Linux: packages.npm.org/product2

Kemampuan RAT

  • Eksekusi perintah shell arbitrer
  • Eksfiltrasi file & enumerasi direktori
  • Daftar & injeksi proses
  • Injeksi biner in-memory (fileless)
  • Beacon ke server C2 tiap 60 detik

Penyerang dapat mengakses kredensial, kunci SSH, token cloud, file .env, dll.

Anti-Forensik: Pembersihan Otomatis

Dropper melakukan:

  1. Menghapus setup.js
  2. Menghapus package.json berbahaya
  3. Mengganti nama package.md (berisi versi 4.2.0) menjadi package.json

Hasilnya, npm list akan melaporkan versi 4.2.0, menutupi jejak eksekusi.

Siapa di Balik Serangan Ini?

Google Threat Intelligence Group mengaitkan serangan Axios dengan UNC1069 yang diduga asal Korea Utara. Malware macOS mirip dengan WAVESHAPER (backdoor C++ yang dilacak Mandiant). Polanya konsisten: kompromi toolchain developer untuk mencuri kredensial dan aset cloud.

Cara Memeriksa Apakah Anda Terpengaruh

Langkah 1: Cek Versi Axios

Jalankan di setiap proyek:

npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
Enter fullscreen mode Exit fullscreen mode

Jika hasil keluar, proyek memakai versi terinfeksi.

Langkah 2: Cek Dependensi Berbahaya

ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"
Enter fullscreen mode Exit fullscreen mode

Jika folder ada, payload kemungkinan sudah dijalankan.

Langkah 3: Cek Artefak RAT

macOS:

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Enter fullscreen mode Exit fullscreen mode

Linux:

ls -la /tmp/ld.py 2>/dev/null
Enter fullscreen mode Exit fullscreen mode

Windows (PowerShell):

Test-Path "$env:PROGRAMDATA\wt.exe"
Enter fullscreen mode Exit fullscreen mode

Langkah 4: Cek Indikator Jaringan

Blokir dan cari koneksi ke:

  • Domain C2: sfrclak.com
  • IP C2: 142.11.206.73
  • URL C2: http://sfrclak.com:8000/6202033

Langkah 5: Tinjau Log Build CI/CD

Periksa pipeline antara 31 Maret 00:21-03:15 UTC. Proses npm install saat periode ini bisa menjalankan dropper di lingkungan build Anda.

Langkah-Langkah Remediasi Segera

Jika ada indikator kompromi, anggap sistem Anda sepenuhnya terinfeksi.

1. Segera Turunkan Versi Axios

npm install axios@1.14.0
Enter fullscreen mode Exit fullscreen mode

Untuk cabang 0.x:

npm install axios@0.30.3
Enter fullscreen mode Exit fullscreen mode

2. Tambahkan Override Versi di package.json

Cegah resolusi ke versi berbahaya:

{
  "overrides": {
    "axios": "1.14.0"
  }
}
Enter fullscreen mode Exit fullscreen mode

Untuk Yarn:

{
  "resolutions": {
    "axios": "1.14.0"
  }
}
Enter fullscreen mode Exit fullscreen mode

3. Hapus Paket Berbahaya

rm -rf node_modules/plain-crypto-js
Enter fullscreen mode Exit fullscreen mode

4. Rotasi Semua Kredensial

Asumsikan semua token & rahasia tercuri:

  • Token npm
  • Kredensial AWS/GCP/Azure
  • Kunci SSH
  • Token GitHub
  • API key di .env
  • Kredensial database
  • Semua environment variable rahasia

Rotasi semuanya segera.

5. Blokir C2 pada Jaringan

echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
Enter fullscreen mode Exit fullscreen mode

6. Temukan Artefak? Build Ulang Mesin

Jika artefak dari Langkah 3 ditemukan, rebuild dari image bersih. Jangan percaya sistem tersebut.

Pertahanan Jangka Panjang untuk Tim API

Gunakan Lockfile & Pin Versi

Jangan gunakan semver ^. Pin versi tepat:

{
  "dependencies": {
    "axios": "1.14.0"
  }
}
Enter fullscreen mode Exit fullscreen mode

Selalu commit package-lock.json atau yarn.lock. Gunakan npm ci di CI/CD agar lockfile enforced.

Nonaktifkan postinstall di CI/CD

Jalankan:

npm ci --ignore-scripts
Enter fullscreen mode Exit fullscreen mode

Atur juga di .npmrc:

ignore-scripts=true
Enter fullscreen mode Exit fullscreen mode

Jika ada paket yang butuh build native, whitelist secara selektif.

Audit Dependensi Secara Rutin

npm audit
npx socket-security/cli audit
Enter fullscreen mode Exit fullscreen mode

Blok build jika ada vulnerability critical/high.

Kurangi Permukaan Dependensi Klien HTTP

Untuk pengujian API, gunakan klien HTTP bawaan seperti Apidog. Tidak perlu Axios, node-fetch, atau got pada stack pengujian Anda.

Contoh Praktis:

  • Pengujian API: Gunakan builder tes visual Apidog
  • Debugging API: Pakai inspector request bawaan Apidog
  • Mock Server: Gunakan fitur mock Apidog
  • Integrasi CI/CD: Jalankan tes API otomatis dengan Apidog CLI, tanpa dependensi HTTP npm

Coba Apidog gratis untuk mengurangi risiko dependensi HTTP di workflow API Anda.

Verifikasi Asal-usul Paket

Cek OIDC/Sigstore:

npm audit signatures
Enter fullscreen mode Exit fullscreen mode

Versi Axios berbahaya tidak punya asal OIDC. Selalu cek rilis baru & audit asalnya.

Apa Artinya untuk Ekosistem JavaScript

Model Kepercayaan npm Lemah

Satu akun pemelihara yang dibobol bisa berdampak ke jutaan proyek. 2FA membantu, tapi token akses panjang tetap rawan dicuri.

Solusi yang sedang didiskusikan:

  • OIDC Wajib: Semua paket populer harus publish via CI/CD OIDC.
  • Persetujuan Rilis Ganda: Rilis paket kritikal harus multi-maintainer.
  • Sandbox Skrip postinstall: Batasi akses runtime skrip seperti model izin Deno.

Supply Chain Attack Semakin Sering

Serangan Axios terjadi bersamaan dengan insiden RubyGems dan PyPI. Setiap registry paket rentan.

Anggap pohon dependensi Anda sebagai permukaan serangan, bukan "kenyamanan".

Perbandingan: Pendekatan Dependensi Klien HTTP

Pendekatan Risiko rantai pasok Beban pemeliharaan Kemampuan pengujian
Axios + skrip kustom Tinggi (dependensi pihak ketiga) Tinggi (manajemen versi) Penyiapan manual diperlukan
Node.js native fetch Rendah (dibangun di runtime) Rendah Fitur pengujian terbatas
Klien bawaan Apidog Tidak ada (tidak ada dependensi npm) Tidak ada (dikelola platform) Pengujian penuh, mocking, dokumen
Skrip curl/httpie Rendah (alat tingkat sistem) Sedang Otomatisasi terbatas

FAQ

Apakah Axios aman digunakan sekarang?

Ya. Versi 1.14.0 dan 0.30.3 bersih. Verifikasi dengan npm list axios dan cek lockfile Anda.

Bagaimana saya tahu jika RAT berjalan di mesin saya?

Cek artefak:

  • macOS: /Library/Caches/com.apple.act.mond
  • Linux: /tmp/ld.py
  • Windows: %PROGRAMDATA%\wt.exe Juga cek keberadaan node_modules/plain-crypto-js. Namun, dropper melakukan pembersihan otomatis, jadi ketiadaan artefak tidak berarti 100% aman jika Anda pernah install versi berbahaya.

Haruskah saya berhenti menggunakan Axios sepenuhnya?

Tidak harus. Axios masih terawat baik. Namun, evaluasi ulang apakah Anda butuh klien HTTP pihak ketiga. Node.js 18+ sudah ada fetch. Untuk pengujian API, gunakan solusi terintegrasi seperti Apidog.

Bagaimana mencegah serangan supply chain di proyek saya?

  • Pin versi dependensi secara eksplisit
  • Commit lockfile
  • Jalankan npm ci --ignore-scripts di CI/CD
  • Audit dependensi rutin
  • Verifikasi asal paket dengan npm audit signatures
  • Minimalkan pohon dependensi
  • Gunakan platform pengujian API tanpa dependensi npm untuk HTTP

Apakah serangan ini terkait kebocoran kode sumber Claude?

Tidak. Keduanya terjadi pada hari yang sama, tapi serangan Axios adalah supply chain attack, sedangkan kebocoran Claude adalah bug alat build Bun.

Siapa di balik serangan Axios?

Google Threat Intelligence Group: UNC1069 (diduga Korea Utara). Malware macOS mirip WAVESHAPER, menargetkan kredensial developer dan aset crypto.

Berapa banyak pengembang yang terpengaruh?

Versi berbahaya aktif 2-3 jam. Dengan 83 juta unduhan mingguan, paparan sangat besar. Deteksi runtime StepSecurity: dropper menghubungi C2 <2 detik setelah npm install.

Bisakah Apidog membantu mencegah supply chain attack?

Ya. Apidog menyediakan klien HTTP bawaan untuk pengujian API, debugging, dan dokumentasi—tanpa perlu install Axios, node-fetch, atau paket HTTP lain di workflow pengujian Anda.

Poin-Poin Penting

  • Supply chain attack Axios berdampak pada 83 juta+ unduhan mingguan lewat satu akun pemelihara yang dicuri
  • RAT menargetkan macOS, Windows, Linux; mencuri kredensial, SSH key, dan token cloud
  • Segera cek sistem Anda pakai langkah deteksi di atas
  • Pin dependensi secara eksplisit, nonaktifkan postinstall di CI/CD
  • Kurangi permukaan dependensi HTTP dengan alat built-in seperti Apidog untuk pengujian API
  • Keamanan registry paket adalah masalah sistemik (npm, PyPI, RubyGems)
  • Setiap dependensi di node_modules adalah keputusan trust—ambil secara sadar, bukan default

button

Top comments (0)