Axios Kena Hack — Library NPM Paling Populer Ini Diselipin Virus RAT

Axios compromised widescreen

⚠️ Peringatan: Kalau lo pernah npm install [email protected] atau [email protected] — anggap sistem lo udah kena.


Buat lo yang kerja di dunia JavaScript dan Node.js, ini berita yang wajib lo tau.

Tanggal 30 Maret 2026 kemarin, library axios — yang didownload lebih dari 100 juta kali seminggu — ketahuan ada versi palsu yang berbahaya beredar di npm. Dua versi yang kena: [email protected] dan [email protected].


Sebentar — Apa Itu RAT?

RAT singkatan dari Remote Access Trojan — jenis malware yang kasih si hacker akses penuh ke komputer lo dari jarak jauh, tanpa lo sadari sama sekali.

Bayangin kayak gini: lo lagi kerja di laptop, tapi ada orang asing yang bisa liat layar lo, baca file lo, nyolong password dan API key lo, bahkan jalanin perintah di terminal lo — semuanya diam-diam di background, lo ga bakal ngerasa apa-apa.

Yang bikin RAT beda dari virus biasa:

  • Ga ngerusak file lo secara langsung — tujuannya bukan ngehancurin, tapi ngintip dan ngambil data
  • Susah kedeteksi — karena nyamar jadi proses yang keliatan normal
  • Bisa jalan terus di background — bahkan setelah lo restart mesin
Image

Oke, Balik ke Axios — Gimana Cara Kerjanya?

Ini bukan sekadar malware asal-asalan. Serangannya direncanain matang banget. Mari kita bedah satu-satu.

1. Akun Maintainer Axios Dibajak

Si hacker berhasil jebol akun npm-nya jasonsaayman — orang yang megang kendali utama project axios. Email akunnya langsung diganti ke email ProtonMail buatan si hacker ([email protected]).

Karena namanya masih pakai akun asli, tampilannya di npm keliatan sah-sah aja. Bedanya sama versi legit cuma keliatan di metadata:

// [email protected] — LEGIT ✅
"_npmUser": {
  "name": "GitHub Actions",
  "email": "[email protected]",
  "trustedPublisher": { "id": "github" }
}

// [email protected] — PALSU ❌
"_npmUser": {
  "name": "jasonsaayman",
  "email": "[email protected]"
  // no trustedPublisher, no gitHead
}

Ga ada commit atau tag di GitHub yang nyambung ke versi 1.14.1. Versi ini cuma ada di npm, bukan di repo aslinya.

2. Nyempil Dependency Tersembunyi

Di dalam versi axios palsu, ada satu perubahan kecil tapi mematikan: ditambahin dependency baru bernama [email protected].

Package ini ga pernah ada di versi axios sebelumnya, dan ga dipakai sama sekali di source code-nya. Tujuannya cuma satu: jalanin script postinstall yang isinya malware begitu lo npm install.

Bedanya sama versi bersih cuma satu baris di package.json:

 "dependencies": {
    "follow-redirects": "^2.1.0",
    "form-data": "^4.0.1",
    "proxy-from-env": "^2.1.0",
+   "plain-crypto-js": "^4.2.1"   ← INI YANG JAHAT
  }

3. RAT Jalan, Terus Bersihin Jejaknya Sendiri

Begitu diinstall, script setup.js di dalam plain-crypto-js langsung:

Setelah selesai? Semua jejak dibersihin. npm audit ga bakal nunjukin apa-apa.

Image

Timeline Serangan

Ini yang paling serem: serangannya udah dipersiapkan 18 jam sebelumnya. Bukan serangan dadakan.

Image

Yang Bikin Serem

  • Dependency jahatnya ditanam 18 jam sebelumnya — biar ga keliatan mencurigakan sebagai package baru
  • Dua versi dirilis cuma selang 39 menit — menarget pengguna 1.x dan 0.x sekaligus
  • Dalam 2 detik setelah npm install, malware udah konek ke server si hacker
  • npm audit ga nunjukin apa-apa setelah infeksi — folder keliatan bersih
  • npm list nunjukin versi 4.2.0 (bersih) padahal yang jalan adalah 4.2.1 — ini jebakan buat incident responder
  • setup.js hapus diri sendiri dan replace package.json dengan yang bersih setelah selesai

Cara Ngecek Apakah Lo Kena

STEP 1 — Scan seluruh sistem, cari semua instalasi axios:

find / -path "*/node_modules/axios/package.json" 2>/dev/null | while read f; do
  version=$(grep '"version"' "$f" | head -1)
  echo "$f -> $version"
done

Ini berguna kalau lo punya banyak project di satu mesin — langsung keliatan semua path yang pakai axios dan versinya. Kalau ada yang nunjukin 1.14.1 atau 0.30.4, lanjut cek lebih dalam.

STEP 2 — Cek versi axios yang terinstall:

npm list axios | grep -E "1\\.14\\.1|0\\.30\\.4"

STEP 3 — Cek keberadaan package jahat:

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

Kalau folder plain-crypto-js ada di node_modules lo — lo kena. Meskipun isinya keliatan bersih, itu karena malware-nya udah hapus jejaknya. Keberadaan folder itu aja udah cukup bukti.

Step 4 — Cek artifact RAT di mesin:

# macOS
ls /Library/Caches/com.apple.act.mond

# Linux
ls /tmp/ld.py

# Windows (cmd.exe)
dir "%PROGRAMDATA%\\wt.exe"

Kalau file-nya tidak ditemukan = aman.

Kalau file-nya ada, langsung:

  • Jangan panik dulu, tapi jangan juga lanjut kerja di mesin itu
  • Cabut koneksi internet mesin tersebut
  • Anggap semua credential yang pernah ada di mesin itu sudah bocor — rotate semuanya dari mesin lain
  • Rebuild mesin dari awal (reinstall OS atau restore dari snapshot bersih)

Langkah Pemulihan

1. Downgrade ke versi aman:

npm install axios@1.14.0  # pengguna 1.x
npm install axios@0.30.3  # pengguna 0.x

2. Hapus package jahat dan reinstall:

rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts

3. Kalau mesin lo beneran kena RAT:

Jangan coba beresin sendiri — rebuild dari awal pakai snapshot yang bersih. Langsung rotate semua credentials:

  • npm access token
  • SSH private key
  • AWS / GCP / Azure access key
  • Semua isi .env yang ada di mesin itu
  • CI/CD secrets

4. Untuk CI/CD pipeline — tambahin flag ini sebagai standar:

npm ci --ignore-scripts

Flag --ignore-scripts nyegah postinstall script jalan otomatis. Harusnya ini jadi standar di semua pipeline production.


Pelajaran dari Kasus Ini

Supply chain attack makin canggih. Dulu kita pikir asal install dari npm yang terkenal pasti aman — ternyata enggak juga. Akun maintainer bisa dijebol, dan satu dependency tambahan yang ga ketara bisa jadi pintu masuk hacker ke seluruh sistem lo.

Pencegahan:

  • Pin versi dependency secara eksplisit, tanpa tanda ^ atau ~ di production
  • Pakai npm ci --ignore-scripts di semua pipeline
  • Pantau outbound network di CI/CD — domain asing yang tiba-tiba muncul itu red flag
  • Cek OIDC Trusted Publisher di metadata npm sebelum update library besar

Kalau sudah kena:

  • Rotate semua credentials (npm token, SSH key, cloud access key, semua .env)
  • Rebuild dari clean snapshot — jangan coba beresin di tempat
  • Audit semua pipeline log yang pernah jalanin npm install di periode yang kena

Versi aman: [email protected] dan [email protected].
Versi bermasalah: ([email protected] & [email protected]) sudah dihapus dari registry npm.


Sumber: StepSecurity Blog

Tri Wicaksono
Tri Wicaksono

With 15+ years in tech, I’ve worked in various engineering leadership roles including VP of Engineering, helping companies solve complex technical challenges and mentoring thousands of students.