- Seorang pengembang di Kanada menjadi sasaran serangan yang memancing backdoor dengan menyamar sebagai wawancara VC palsu, dan alur serangannya disesuaikan dengan pekerjaan pengembang hingga dicurigai menargetkan pengelola paket crates.io
- Repositori umpan tampak seperti aplikasi TypeScript bernama “Ticket Harbor”, tetapi menyembunyikan kode berbahaya di jalur eksekusi TypeScript lewat
patch-packagedantypescript+5.9.2.patch - Stub yang disisipkan membuka obfuscation base64 dan XOR lalu menjalankannya dengan
new Function(...), kemudian melalui chunk tersembunyi dioperators/3.pngdan stub WASM untuk meluncurkan payload tahap kedua berukuran 1.68MB dalam proses Node terpisah - Payload akhir “PinpinRAT” membuat pasangan kunci RSA-2048 dan kunci sesi AES-256-CBC, serta mendukung pengumpulan sidik jari host, unggah·unduh file, eksekusi proses, manipulasi filesystem, kueri DNS, dan penghapusan diri
- Jika repositori itu sempat dijalankan, jaringan harus segera diputus dan kredensial diganti dari perangkat lain, dengan asumsi bahwa cookie dan rahasia yang dilindungi kata sandi mungkin sudah dicuri
Serangan Bertarget ke Pengembang yang Dimulai dari Wawancara Palsu
- Penyerang mendekati korban dengan mengaku sebagai tokoh palsu dari “Lua Ventures”
- Lua Ventures diperkenalkan sebagai VC bidang DeFi yang berbasis di Singapura, tetapi sebenarnya sudah tidak lagi aktif
- Nama orangnya tidak diungkap karena bisa membingungkan dengan orang nyata yang memiliki nama sama
- Emailnya tampak meyakinkan, dan juga menyertakan tautan profil LinkedIn yang biasa saja tetapi terlihat normal
- Sebagai firma investasi yang mencari penasihat, mereka menyebut Lyrasing dan Roadpay
- Kedua perusahaan punya jejak web dasar sehingga terlihat seperti perusahaan tahap awal, bukan sekadar palsu
- Snapshot archive.org untuk situs Roadpay juga masih ada
- Setelah saling berkirim email, percakapan berlanjut sampai panggilan Google Meet
- Lawan bicara di panggilan adalah pria dengan aksen Jerman dan mengatakan dirinya sedang bepergian
- Panggilan itu sendiri tidak memiliki kejanggalan yang jelas
Pemicu Eksekusi yang Disamarkan sebagai “Tugas Tes”
- Setelah panggilan, penyerang mengusulkan sebuah “tes” dan mengirimkan repositori
- Repositori itu disamarkan sebagai aplikasi pemesanan tiket feri bernama “Ticket Harbor”
task.txtyang disertakan berisi daftar tugas yang membosankan tetapi masuk akal, dan di bagian akhir ada instruksi untuk menjalankannya- Isinya meminta korban menjalankan typecheck repositori, test suite, serta perintah build desktop/server terkait
- Instruksi inilah yang menjadi pemicu infeksi sebenarnya
- Saat TypeScript dijalankan seperti
npm run typecheck,build,dev, atau ketikatypescript.jsdi-import, payload dapat dieksekusi
- Saat TypeScript dijalankan seperti
Rantai Eksekusi yang Tersembunyi dalam Patch TypeScript
- Sinyal peringatan pertama adalah bahwa repositori itu tampak seperti tugas TypeScript
- Permintaannya terasa lebih dekat ke tugas rekrutmen TypeScript daripada analisis arsitektur
- Setelah repositori dicek cepat dengan Claude, muncul kejanggalan terkait
patch-package
- Direktori
patches/berisi patch dalam jumlah yang tidak normal- Sebagian patch tampak wajar dan berfungsi sebagai noise untuk menyembunyikan payload sebenarnya
- Contohnya termasuk
sumchecker+3.0.1.patch,@electron+get+2.0.3.patch,extract-zip+2.0.1.patch
- Kode berbahaya inti ada di
typescript+5.9.2.patch- Patch itu menyisipkan stub yang langsung dieksekusi di bagian paling atas
typescript.jsdan_tsc.js - Stub tersebut mendekode string base64, lalu mendekripsi XOR tiap byte dengan kunci
73, dan menjalankannya dengannew Function(...) require,Buffer,WebAssembly,process,__dirnamediteruskan ke fungsi eksekusi
- Patch itu menyisipkan stub yang langsung dieksekusi di bagian paling atas
- Rantai eksekusinya melewati beberapa tahap
- Empat hook
postinstallmenjalankanpatch-package - Salah satunya menerapkan
git update-index --skip-worktreeke file patch agar tersembunyi darigit status - Loader membaca chunk tersembunyi yang ditempel di belakang file
operators/3.png - Ia menjalankan stub WASM kecil dari chunk
wAsmkustom - Payload tahap kedua yang di-obfuscate berukuran 1.68MB dijalankan diam-diam dalam proses Node terpisah
- Empat hook
- Kode serangan dirancang untuk meminimalkan jejak setelah dijalankan
- Patch disembunyikan dengan
git skip-worktree - Dropper menghapus baris yang disisipkannya sendiri dari file patch setelah eksekusi pertama
- Direktori sementara tahap kedua menghapus dirinya sendiri saat dijalankan
- Patch disembunyikan dengan
Kemampuan PinpinRAT
- Payload akhir disebut “PinpinRAT”
- Nama ini diberikan karena string internalnya, dan tidak menutup kemungkinan bahwa ia dikenal dengan nama lain
- Tidak ditemukan referensi lain secara online
- Payload dibungkus dalam beberapa lapisan obfuscation
- obfuscator.io
- dua lapisan base64 tambahan
- Saat mulai berjalan, RAT mengumpulkan sidik jari host dan mengekfiltrasinya
- alamat IP utama dan daftar lengkap IP
- username dari
os.userInfo().username - hostname
- jenis OS, release, platform, arsitektur
- PID proses dan seluruh
process.argv - versi Node
- Ia juga menyertakan struktur enkripsi
- membuat pasangan kunci RSA-2048 secara lokal
- membuat kunci sesi AES-256 acak
aes_psk - lalu trafik berikutnya dienkripsi dengan AES-256-CBC dan diberi tag integritas HMAC-SHA256
- Perintah yang didukung menyediakan kemampuan setingkat remote access trojan
env: mengubahprocess.envmenjadi string JSON lalu mengirimkannyaupload: membaca jalur file arbitrer dan mengekfiltrasinyadownload: menulis byte yang diberikan penyerang ke jalur yang dapat ditulisispawn: menjalankan proses arbitrer dengan perluasan shell opsionalls,cd,pwd,cp,mv: manipulasi filesystem umumdns: melakukan resolusi nama arbitrer lewat resolver yang ditentukandismantle: menghapus diri sendiri
Indikator Kompromi dan Respons Segera
- Gambar yang membawa payload tidak terdeteksi oleh mesin AV mana pun di VirusTotal
- Jika sempat dijalankan, sistem harus segera dipisahkan dari jaringan
- Kredensial harus diganti dari perangkat lain
- Cookie dan rahasia yang dilindungi kata sandi juga harus dianggap telah dikompromikan
- Indikator kompromi terkait PinpinRAT adalah sebagai berikut
- C2:
89.124.107.161:80 - Scheduled task Windows:
PinpinWrappedJs - Penyamaran proses macOS:
com.apple.WebKit.Networking - Variabel lingkungan:
NODT_PAYLOAD_PATH,NODT_PAYLOAD_ARGS - Guard chunk PNG:
WASMPACK(wAsm) PINPIN_NO_AUTOSTART=1: menghentikan persistence- Cronjob yang menyertakan
mutex.js: mungkin hanya ada saat RAT memiliki hak yang cukup, dan bisa jadi tidak ada di macOS - String anchor
typescript.js:12ff4b51,ticket-harbor-tsc-shim-anchor typescript+5.9.2.patchyang memuat payload- Direktori artefak:
- macOS:
~/Library/Caches/runtime-cache/.cache-<randomhex>/ - Linux:
/tmp/.cache-<randomhex>/ - Windows:
%TEMP%\\.cache-<randomhex>\\ - Di dalamnya ada
payload.jsdanmutex.js
- macOS:
- C2:
Sinyal Peringatan yang Baru Terlihat Belakangan
- Dalam pesannya, jika dilihat lebih saksama ada ungkapan yang tampak seperti jejak LLM
- Profil LinkedIn itu pada pandangan pertama terlihat normal, tetapi daftar gelar·kualifikasinya terasa janggal dan tidak menunjukkan aktivitas nyata
- Tautan media sosial di situs web memang punya riwayat nyata, tetapi namanya diubah pada November 2025
- Postingan-postingannya kurang spesifik dan lebih mirip pujian samar terhadap perusahaan-perusahaan itu
- Situs web perusahaan tampak mewah, tetapi hampir tidak punya kehadiran nyata
- Penyerang tidak mengirim undangan kalender resmi, hanya menyampaikan waktu dan Google Meet
- Selama panggilan, kamera terus dimatikan dan ia mengatakan sedang bepergian
- Muncul bersamaan: VC berbasis Singapura, aktivitas di zona waktu CEST, pendekatan ke pengembang Kanada, dan domain
.ccyang menyasar pelanggan AS- Ini membuat verifikasi kredibilitas organisasi yang jauh menjadi lebih sulit
- Sinyal-sinyal individualnya memang tidak tegas, tetapi bila beberapa lampu kuning menumpuk bersama, polanya bisa dipandang sebagai lampu merah
Pelaku di Balik Serangan dan Cakupannya
- Pelakunya tidak bisa dipastikan
- Serangan ini menargetkan pengembang dan mencakup tokoh palsu, cerita sampul yang meyakinkan, beberapa situs web palsu, penjadwalan yang sabar, dan jebakan
gityang canggih - Serangan ini sejalan dengan alur “penipuan wawancara palsu” yang digunakan oleh beberapa pelaku pada 2026
- Di komunitas Rust di Reddit juga disebutkan kasus serupa yang menyasar target
- Pendekatannya sangat melekat pada workflow pengembang, sampai-sampai jika metode yang sama dikemas sebagai jebakan skrip
build.rsdi repositori Rust, korban mungkin saja akan terkecoh
1 komentar
Opini di Lobste.rs
Agak membingungkan bahwa judulnya berspekulasi ini mungkin ulah aktor yang didukung negara. Di sini tampaknya tidak ada bagian yang benar-benar memerlukan tingkat persiapan atau kompleksitas sebesar itu
Kemungkinannya bisa dibayangkan, tetapi rasanya masuk akal hanya setara dengan skenario-skenario lain
Meski begitu, hampir pasti ini bukan aktor yang didukung negara. Serangan seperti ini sekarang sudah tidak terlalu sulit
Benar-benar kebetulan bahwa serangan ini mirip dengan contoh hipotetis yang saya jelaskan di posting blog saya seminggu lalu: the hypothetical I describe in my blog post from a week ago
Saya hanya memilih salah satu dari beberapa serangan yang terdengar masuk akal sebagai contoh bahwa bahkan pakar yang paham teknologi pun bisa tertipu. Saya memang melihat semakin banyak penipuan canggih yang menyasar manusia, tetapi saya tidak tahu bahwa tren penipuan wawancara kerja sedang berlangsung. Jadi mengetahui serangan kali ini terasa agak menyeramkan
Minggu lalu saya menerima ajakan wawancara kerja dengan pola yang sama dari D____ S_____ di Lua Ventures. Saya mengabaikannya seperti sebagian besar spam perekrut, dan ternyata itu keputusan yang tepat
Sepertinya ada kiriman seperti ini beberapa hari atau beberapa minggu lalu
Rasanya ada beberapa tulisan serupa
Yang mengejutkan adalah klaim “terlihat seperti email sungguhan”. Buat saya ini sangat jelas berupa kalimat buatan LLM, jadi saya rasa saya sudah akan curiga sejak kalimat kedua