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.
Pendahuluan
Axios memproses lebih banyak permintaan HTTP dibandingkan pustaka JavaScript lainnya. Jika Anda telah membangun klien API, menguji titik akhir, 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 yang sah. Perbedaannya sangat teliti: hanya package.json yang berubah di antara 86 file. Namun, file tunggal itu menyuntikkan dependensi hantu bernama plain-crypto-js yang menyebarkan trojan akses jarak jauh ke setiap mesin yang menjalankan npm install.
Versi berbahaya tersebut tetap aktif selama kurang lebih dua hingga tiga jam sebelum npm menariknya. Dua hingga tiga jam di antara 83 juta unduhan mingguan.
Artikel ini menjelaskan bagaimana serangan itu bekerja, cara mendeteksi apakah sistem Anda terkompromi, dan apa yang harus diubah oleh tim API mengenai manajemen dependensi mereka di masa mendatang.
Bagaimana serangan rantai pasok Axios terungkap
Garis waktu
Penyerang mengeksekusi operasi ini dengan presisi dalam rentang waktu 18 jam:
- 30 Maret, 05:57 UTC: Paket umpan bersih
plain-crypto-js@4.2.0diterbitkan ke npm. Menerbitkan versi "bersih" terlebih dahulu memberikan paket riwayat singkat di registri, membuatnya terlihat tidak terlalu mencurigakan. - 30 Maret, 23:59 UTC: Versi berbahaya
plain-crypto-js@4.2.1diterbitkan, menambahkan hookpostinstallyang berisi dropper. - 31 Maret, 00:21 UTC:
axios@1.14.1dirilis menggunakan akunjasonsaaymanyang disusupi. - 31 Maret, 01:00 UTC:
axios@0.30.4menyusul 39 menit kemudian, menargetkan proyek yang terpaku pada cabang 0.x. - 31 Maret, ~03:15 UTC: npm membatalkan publikasi kedua versi Axios setelah laporan komunitas.
- 31 Maret, 04:26 UTC: npm menerbitkan stub pemegang keamanan untuk
plain-crypto-jsuntuk mencegah penerbitan ulang.
Bagaimana akun dibobol
Penyerang mengambil alih akun npm jasonsaayman, pemelihara utama Axios. Mereka mengubah email yang terdaftar menjadi ifstap@proton.me. Bukti forensik utama:
- Rilis Axios yang sah menggunakan GitHub Actions dengan mekanisme OIDC Trusted Publisher npm. Versi berbahaya sama sekali tidak memiliki pengikatan OIDC.
- Tidak ada bidang
gitHeadyang muncul dalam rilis yang disusupi, yang berarti tidak ada komit GitHub yang sesuai. - Penyerang menggunakan token akses npm berumur panjang yang dicuri untuk menerbitkan secara manual alih-alih melalui CI/CD.
Perbedaan ini penting. Jika organisasi Anda menerbitkan paket npm, tidak adanya pengikatan OIDC dan asal-usul CI/CD pada rilis adalah tanda bahaya yang patut diotomatisasi pemeriksaannya.
Teknik injeksi dependensi
Inilah yang membuat serangan ini halus. Penyerang tidak memodifikasi kode sumber Axios. Mereka mengubah satu baris di package.json untuk menambahkan plain-crypto-js@^4.2.1 sebagai dependensi runtime. Paket ini tidak pernah diimpor di mana pun dalam basis kode Axios. Ini ada semata-mata untuk memicu hook postinstall-nya selama npm install.
Analisis biner mengonfirmasi presisi bedah: hanya package.json yang berbeda antara rilis bersih 1.14.0 dan 1.14.1 yang dikompromikan di semua 86 file dalam paket.
Apa yang dilakukan muatan berbahaya
Mekanisme dropper
Hook postinstall di plain-crypto-js mengeksekusi file yang di-obfuscated berukuran 4.2 KB bernama setup.js. Ia menggunakan dua lapisan obfuscation:
- Lapisan 1: Sandi XOR menggunakan kunci yang berasal dari string
"OrDeR_7077" - Lapisan 2: Pengodean Base64 dengan pembalikan karakter
Setelah didekode, dropper mengidentifikasi sistem operasi host dan mengeksekusi muatan spesifik platform.
Jalur serangan spesifik platform
macOS:
Writes AppleScript to /tmp/6202033
Executes via osascript
Downloads payload to /Library/Caches/com.apple.act.mond
Windows:
Copies PowerShell to %PROGRAMDATA%\wt.exe (persistence artifact)
Executes VBScript dropper via cscript
Linux:
Downloads Python RAT to /tmp/ld.py
Executes via nohup python3
Ketiga cabang tersebut menghubungi server command-and-control dengan isi POST spesifik platform:
- macOS:
packages.npm.org/product0 - Windows:
packages.npm.org/product1 - Linux:
packages.npm.org/product2
Kemampuan RAT
Trojan akses jarak jauh yang disebarkan mendukung:
- Eksekusi perintah shell arbitrer
- Enumerasi dan eksfiltrasi sistem file
- Daftar dan injeksi proses
- Injeksi biner dalam memori (eksekusi tanpa file)
- Interval beacon 60 detik ke infrastruktur C2
Secara sederhana: penyerang mendapatkan kendali jarak jauh penuh atas mesin pengembangan Anda. Mereka dapat membaca file .env Anda, mencuri kunci API Anda, menyalin kunci SSH Anda, dan memanen token penyedia cloud.
Anti-forensik: muatan pembersih diri
Setelah dieksekusi, dropper melakukan tiga langkah pembersihan:
- Menghapus
setup.jsitu sendiri - Menghapus
package.jsonberbahaya - Mengganti nama
package.mdyang telah disiapkan sebelumnya (melaporkan versi 4.2.0) menjadipackage.json
Ini menciptakan lapisan penipuan di mana npm list akan melaporkan versi 4.2.0 alih-alih 4.2.1 yang mengeksekusi muatan. Pengembang yang memeriksa dependensinya setelah kejadian itu tidak akan melihat ada yang salah.
Siapa di balik serangan ini
Google Threat Intelligence Group mengaitkan serangan Axios dengan UNC1069, pelaku ancaman yang diduga berasal dari Korea Utara. Malware macOS menunjukkan "tumpang tindih yang signifikan" dengan WAVESHAPER, backdoor C++ yang dilacak Mandiant pada Februari 2026.
Kelompok yang disponsori negara Korea Utara memiliki pengalaman mendalam dengan serangan rantai pasok. Mereka secara historis menggunakan alat pengembang yang disusupi untuk mencuri mata uang kripto, dan operasi ini mengikuti pola yang sama: menyusupi alat pengembang yang banyak digunakan untuk mendapatkan akses ke kredensial dan infrastruktur cloud di ribuan organisasi.
Tingkat kecanggihan ini patut dicatat. Injeksi dependensi dua tahap, penyebaran RAT multi-platform, dan pembersihan anti-forensik semuanya menunjukkan operasi yang memiliki sumber daya yang baik. Ini bukan script kiddie yang menyebarkan cryptominer. Ini adalah operasi intelijen yang menargetkan workstation pengembang.
Cara memeriksa apakah Anda terpengaruh
Langkah 1: Periksa versi Axios Anda
Jalankan ini di setiap proyek yang menggunakan Axios:
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
Jika ini mengembalikan hasil, proyek Anda menginstal versi yang disusupi.
Langkah 2: Periksa dependensi berbahaya
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"
Meskipun dropper membersihkan dirinya sendiri, keberadaan direktori mengonfirmasi muatan dieksekusi.
Langkah 3: Periksa artefak RAT di sistem Anda
macOS:
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Linux:
ls -la /tmp/ld.py 2>/dev/null
Windows (PowerShell):
Test-Path "$env:PROGRAMDATA\wt.exe"
Langkah 4: Periksa indikator jaringan
Blokir dan pindai koneksi ke:
- Domain C2:
sfrclak.com - IP C2:
142.11.206.73 - URL C2:
http://sfrclak.com:8000/6202033
Langkah 5: Periksa log build CI/CD
Tinjau setiap proses pipeline CI/CD antara 31 Maret pukul 00:21 UTC dan 03:15 UTC. Setiap npm install atau npm ci yang dijalankan selama periode ini yang menyelesaikan Axios dapat mengeksekusi dropper di lingkungan build Anda.
Langkah-langkah remediasi segera
Jika Anda menemukan indikator kompromi, anggap sistem yang terpengaruh sepenuhnya dikompromikan. Berikut adalah daftar prioritas:
1. Segera turunkan versi Axios
npm install axios@1.14.0
Atau untuk cabang 0.x:
npm install axios@0.30.3
2. Tambahkan penimpaan versi ke package.json Anda
Cegah resolusi transitif ke versi berbahaya:
{
"overrides": {
"axios": "1.14.0"
}
}
Untuk Yarn:
{
"resolutions": {
"axios": "1.14.0"
}
}
3. Hapus paket berbahaya
rm -rf node_modules/plain-crypto-js
4. Rotasi semua kredensial
Jika dropper dieksekusi di mesin Anda, anggap yang berikut ini telah dikompromikan:
- token npm
- kredensial AWS/GCP/Azure
- kunci SSH
- token GitHub
- kunci API dalam file
.env - kredensial basis data
- Rahasia apa pun yang disimpan dalam variabel lingkungan
Rotasi semuanya. Tidak ada cara untuk mengetahui apa yang dieksfiltrasi oleh RAT selama jendela aktifnya.
5. Blokir C2 di tingkat jaringan
Tambahkan ke file hosts atau aturan firewall Anda:
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
6. Jika artefak ditemukan, bangun ulang mesin
RAT dengan eksekusi shell dan akses sistem file dapat memodifikasi apa pun. Jika Anda menemukan artefak dari Langkah 3, jangan percayai sistem tersebut. Bangun ulang dari keadaan yang diketahui baik.
Pertahanan jangka panjang untuk tim pengembangan API
Gunakan lockfile dan pin versi yang tepat
Serangan Axios mengeksploitasi rentang semver ^. Jika package.json Anda mengatakan "axios": "^1.14.0", npm menyelesaikan versi yang paling kompatibel, yaitu 1.14.1 selama jendela serangan.
{
"dependencies": {
"axios": "1.14.0"
}
}
Pin versi yang tepat. Selalu komit package-lock.json atau yarn.lock Anda. Jalankan npm ci alih-alih npm install di CI/CD untuk memberlakukan resolusi lockfile.
Nonaktifkan skrip postinstall di CI/CD
Seluruh serangan bergantung pada hook postinstall yang dieksekusi selama npm install. Anda dapat menonaktifkan ini:
npm ci --ignore-scripts
Ini merusak beberapa paket yang memerlukan kompilasi asli. Uji build Anda terlebih dahulu, lalu secara selektif izinkan skrip untuk paket yang membutuhkannya menggunakan .npmrc:
ignore-scripts=true
Audit dependensi secara teratur
npm audit
npx socket-security/cli audit
Jalankan ini di CI/CD sebagai gerbang. Setiap kerentanan kritis atau tinggi harus memblokir build.
Kurangi permukaan dependensi klien HTTP Anda
Inilah pertanyaan yang lebih dalam yang diajukan oleh serangan ini: mengapa alur kerja pengujian API Anda bergantung pada pustaka HTTP pihak ketiga yang dapat dikompromikan?
Apidog menyediakan klien HTTP bawaan untuk pengujian API, debugging, dan dokumentasi. Anda tidak memerlukan Axios, node-fetch, atau got di tumpukan pengujian Anda. Klien HTTP adalah bagian dari platform, tanpa dependensi pihak ketiga yang dapat dikompromikan.
Khusus untuk pengujian API, memindahkan permintaan HTTP Anda ke Apidog menghilangkan seluruh permukaan serangan:
- Pengujian API: Gunakan pembangun tes visual Apidog alih-alih menulis skrip tes berbasis Axios
- Debugging API: Gunakan inspektur permintaan bawaan Apidog alih-alih kode klien HTTP kustom
- Server Mock: Gunakan mock pintar Apidog alih-alih membangun titik akhir mock dengan Express + Axios
- Integrasi CI/CD: Gunakan Apidog CLI untuk tes API otomatis tanpa dependensi HTTP npm
Coba Apidog gratis untuk melihat bagaimana menghilangkan dependensi pustaka HTTP dari alur kerja API Anda mengurangi risiko rantai pasok Anda.
Verifikasi asal-usul paket
npm sekarang mendukung asal-usul paket melalui Sigstore. Periksa apakah paket yang Anda andalkan menggunakan ini:
npm audit signatures
Versi Axios yang berbahaya tidak memiliki asal-usul OIDC. Rilis sah dari pipeline CI/CD menyertakan attestasi kriptografi dari asal build mereka. Jika versi baru muncul tanpa asal-usul, perlakukan dengan kecurigaan.
Apa artinya ini bagi ekosistem JavaScript
Model kepercayaan rusak
Model kepercayaan npm bergantung pada keamanan akun pemelihara. Satu kredensial yang disusupi memberikan penyerang kendali atas paket yang diinstal oleh 83 juta proyek setiap minggu. Otentikasi dua faktor membantu, tetapi token akses berumur panjang masih dapat dicuri dari lingkungan pengembangan yang disusupi.
Komunitas sedang mendiskusikan beberapa perubahan struktural:
- Penerbitan OIDC Wajib: Wajibkan semua paket di atas ambang unduhan untuk menggunakan penerbitan berbasis CI/CD dengan token OIDC alih-alih kredensial berumur panjang.
- Persetujuan Rilis Dua Orang: Wajibkan pemelihara kedua untuk menyetujui rilis untuk paket-paket kritis.
- Penskalaan Izin Runtime: Batasi apa yang dapat diakses oleh skrip
postinstall, mirip dengan model izin Deno.
Serangan rantai pasok tidak melambat
Serangan ini terjadi dalam beberapa hari setelah insiden RubyGems fracture dan kekhawatiran dependensi PyPI yang sedang berlangsung. Registri paket di setiap ekosistem bahasa berada di bawah serangan berkelanjutan. Pengembang API perlu memikirkan pohon dependensi mereka sebagai permukaan serangan, bukan kenyamanan.
Diskusi Reddit menangkap sentimen dengan baik: "NPM adalah kelemahan terbesar internet saat ini dan itu masih akan menyebabkan bencana besar." Apakah Anda setuju dengan hiperbola atau tidak, serangan Axios menunjukkan bahwa radius ledakan itu nyata.
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. Versi yang disusupi (1.14.1 dan 0.30.4) tidak dipublikasikan dalam waktu sekitar tiga jam. Verifikasi versi yang terinstal dengan npm list axios dan periksa lockfile Anda untuk memastikan Anda menggunakan versi yang aman.
Bagaimana saya tahu jika RAT berjalan di mesin saya?
Periksa artefak spesifik platform: /Library/Caches/com.apple.act.mond di macOS, /tmp/ld.py di Linux, atau %PROGRAMDATA%\wt.exe di Windows. Juga periksa apakah node_modules/plain-crypto-js ada di salah satu proyek Anda. Dropper membersihkan dirinya sendiri, jadi ketiadaan artefak tidak menjamin Anda aman jika Anda menginstal versi yang disusupi.
Haruskah saya berhenti menggunakan Axios sepenuhnya?
Belum tentu. Axios tetap menjadi pustaka yang terawat baik dengan rekam jejak yang kuat. Tetapi serangan ini harus mendorong Anda untuk mengevaluasi apakah Anda memerlukan klien HTTP pihak ketiga sama sekali. Node.js 18+ menyertakan fetch asli. Untuk pengujian API, platform seperti Apidog menyediakan klien HTTP bawaan yang menghilangkan dependensi ini.
Bagaimana saya bisa mencegah serangan rantai pasok dalam proyek saya?
Pin versi dependensi yang tepat, komit lockfile, jalankan npm ci --ignore-scripts di CI/CD, audit dependensi secara teratur, verifikasi asal-usul paket dengan npm audit signatures, dan minimalkan pohon dependensi Anda. Pertimbangkan untuk memindahkan alur kerja pengujian API ke platform terintegrasi yang tidak bergantung pada paket npm untuk komunikasi HTTP.
Apakah serangan ini terkait dengan kebocoran kode sumber Claude?
Kedua peristiwa terjadi pada hari yang sama (31 Maret 2026), tetapi tidak terkait. Serangan Axios adalah kompromi rantai pasok yang disengaja oleh pelaku ancaman yang disponsori negara. Kebocoran Kode Claude diakibatkan oleh bug alat build Bun yang mengirimkan peta sumber dalam produksi. Waktu yang kebetulan telah memicu diskusi tentang keamanan registri npm secara keseluruhan.
Siapa di balik serangan Axios?
Google Threat Intelligence Group mengaitkan serangan itu dengan UNC1069, pelaku ancaman yang diduga berasal dari Korea Utara. Malware macOS memiliki tumpang tindih yang signifikan dengan WAVESHAPER, backdoor yang dilacak oleh Mandiant. Kelompok Korea Utara memiliki pengalaman luas dengan serangan rantai pasok, biasanya menargetkan kredensial pengembang dan infrastruktur mata uang kripto.
Berapa banyak pengembang yang terpengaruh?
Versi berbahaya aktif selama kurang lebih dua hingga tiga jam. Dengan 83 juta unduhan mingguan, potensi paparan sangat signifikan. npm belum menerbitkan angka dampak resmi. Deteksi runtime StepSecurity mengonfirmasi bahwa dropper menghubungi C2 dalam 1.1 detik setelah npm install dimulai, sebelum resolusi dependensi selesai.
Bisakah Apidog membantu mencegah serangan rantai pasok?
Apidog menghilangkan salah satu vektor serangan utama dengan menyediakan klien HTTP bawaan untuk pengujian API, debugging, dan dokumentasi. Anda tidak perlu menginstal Axios, node-fetch, atau pustaka HTTP lainnya dalam alur kerja pengujian Anda. Ini mengurangi permukaan dependensi npm Anda dan menghilangkan risiko paket klien HTTP yang disusupi memengaruhi proses pengembangan API Anda.
Poin-poin penting
- Serangan rantai pasok Axios mengkompromikan 83 juta+ unduhan mingguan melalui satu akun pemelihara yang dicuri
- RAT menargetkan semua platform (macOS, Windows, Linux) dan mencuri kredensial, kunci SSH, dan token cloud
- Segera periksa sistem Anda menggunakan langkah-langkah deteksi di atas
- Pin versi dependensi yang tepat dan nonaktifkan skrip postinstall di CI/CD
- Kurangi permukaan dependensi klien HTTP Anda dengan menggunakan alat bawaan seperti Apidog untuk pengujian API
- Keamanan registri paket adalah masalah sistemik yang memengaruhi npm, PyPI, dan RubyGems
Serangan Axios adalah panggilan bangun. Setiap dependensi di node_modules Anda adalah keputusan kepercayaan. Pastikan Anda membuat keputusan tersebut secara sengaja, bukan secara default.
