Seorang klien palsu menyelipkan repositori GitHub berbahaya ke dalam kotak masuk saya minggu ini, dan hanya dengan menjalankan skrip pemula, dua hari pekerjaan saya hilang dan semua kata sandi yang saya simpan di browser saya terekspos.

“Klien” tersebut memasang lowongan peran senior engineer dengan gaji tinggi, mengirim pesan dengan cepat, dan mengirimkan repo yang terlihat profesional. Permintaannya sederhana: clone, jalankan npm run dev, dan kirimkan tangkapan layar untuk membuktikan demo tersebut berfungsi—tanpa kontrak, tanpa pemeriksaan latar belakang. Saat server dev dimulai, kode tersembunyi dalam file konfigurasi menghubungi server command-and-control (C2), mengambil payload tahap kedua, dan mulai menyedot kredensial dari mesin lokal.

Bagaimana serangan tersebut terjadi

Payload berbahaya tersebut berada di postcss.config.js, sebuah file yang biasanya dilewati begitu saja oleh sebagian besar pengembang karena biasanya hanya berisi beberapa aturan pemrosesan CSS sederhana. Dalam kasus ini, penyerang menambahkan baris JavaScript yang disamarkan (obfuscated) jauh di sisi kanan pernyataan yang sah, dengan tambahan spasi agar terlihat menyatu. Saat perintah npm run dev menjalankan pipeline PostCSS, baris tersembunyi tersebut berjalan tanpa disadari.

Malware tersebut melakukan tiga langkah secara berturut-turut:

  • Kontak C2 – ia membuka koneksi jaringan ke server yang dikendalikan penyerang dan mengumumkan host yang telah disusupi.
  • Unduhan tahap kedua – ia menarik kode tambahan yang berisi logika eksfiltrasi data yang sebenarnya.
  • Pencurian kredensial browser – pada macOS, ia menanyakan kunci Chrome Safe Storage yang tersimpan di keychain sistem. Jika pengguna menyetujui perintah keychain tersebut, penyerang akan memanen setiap kata sandi yang tersimpan di Chrome.

Selain pencurian langsung, payload tersebut menulis dirinya sendiri ke dalam beberapa alat pengembang umum—VS Code, npm, Discord—sehingga setiap peluncuran aplikasi tersebut di masa mendatang akan mengaktifkan kembali kode berbahaya tersebut. Reboot sederhana tidak akan membersihkan infeksi; npm install berikutnya atau saat membuka editor akan menghidupkan kembali backdoor tersebut.

Tanda bahaya (red flags) yang sering tidak disadari

  • Permintaan untuk menjalankan kode sebelum kontrak ditandatangani. Proses perekrutan yang sah biasanya melibatkan perjanjian formal sebelum pekerjaan hak milik apa pun dibagikan.
  • File terkompresi yang menyamar sebagai “ringkasan proyek.” Arsip Zip atau RAR dapat menyembunyikan skrip yang dapat dieksekusi atau biner berbahaya.
  • Permintaan alamat email pribadi untuk “melewati filter platform.” Taktik ini memindahkan percakapan keluar dari platform yang terlindungi, di mana penyalahgunaan dapat dilaporkan.
  • Deskripsi pekerjaan yang meminta kandidat untuk mendanai dompet kripto atau membeli token uji coba. Permintaan seperti itu tidak lazim untuk pekerjaan pengembangan yang asli.

Langkah praktis agar tetap aman

  1. Jangan pernah mengeksekusi kode orang asing tanpa pemeriksaan. Buka repositori dalam tampilan baca-saja (misalnya, melalui tampilan file raw di GitHub) dan pindai setiap skrip, terutama file konfigurasi dan entri scripts pada package.json.
  2. Anggap semua lampiran sebagai teks biasa. Jika file zip dikirim, ekstrak di lingkungan sandbox dan periksa isinya sebelum membuka apa pun.
  3. Gunakan pengelola kata sandi (password manager) khusus alih-alih penyimpanan browser. Bahkan jika keychain browser disusupi, brankas pengelola tersebut tetap terisolasi.
  4. Jalankan kode yang tidak tepercaya di mesin virtual atau kontainer terisolasi tanpa akses jaringan. Ini memblokir kemampuan penyerang untuk menghubungi server C2.
  5. Aktifkan autentikasi dua faktor (2FA) pada semua akun. Jika kata sandi dicuri, faktor kedua akan menghentikan login yang tidak sah.
  6. Pastikan alat pengembang selalu mutakhir dan aktifkan pemeriksaan integritas otomatis jika tersedia. Beberapa editor sekarang memberikan peringatan saat file inti dimodifikasi secara tidak terduga.

Jika Anda curiga telah menjalankan kode berbahaya, asumsikan sistem telah disusupi. Cadangkan data penting, hapus seluruh drive, dan instal ulang sistem operasi. Reboot sederhana tidak akan menghapus mekanisme persistensi yang menulis ulang file di aplikasi umum.

Intinya: satu baris JavaScript tersembunyi dapat mengubah demo rutin menjadi operasi pencurian kredensial skala penuh. Anggap setiap repositori tidak tepercaya sampai Anda memverifikasinya, dan jadikan isolasi sebagai bagian default dari alur kerja Anda. Biaya dari ketergesaan sesaat jauh lebih besar daripada upaya yang dihabiskan untuk memeriksa ulang sebuah file.