- Contoh serangan rekayasa sosial di mana seorang rekruter mendekati lewat pesan LinkedIn dengan dalih merekrut lead engineer dan meminta review repositori GitHub publik
- Dalam kode yang diminta untuk direview, tersembunyi backdoor yang menyamar sebagai test suite, dan permintaan untuk "memeriksa isu deprecated Node modules" menjadi umpan yang mendorong eksekusi
npm install - Karena merasa curiga, alih-alih memeriksa secara lokal, kode ditinjau di VPS sekali pakai dengan agen read-only, dan file bermasalah terdeteksi hanya dalam hitungan detik
- Baik commit repositori maupun profil rekruter sama-sama mencuri identitas orang nyata, masing-masing menyamar sebagai pengembang sungguhan dan jurnalis bidang seni
- Disajikan pelajaran pertahanan yang praktis: kecurigaan, security hygiene, dan pemanfaatan agen read-only ternyata lebih efektif daripada membaca kode secara langsung
Awal mula pendekatan
- Minggu lalu saya menerima pesan LinkedIn dari seorang rekruter di startup kripto kecil
- Kami beberapa kali bertukar pesan selama beberapa hari, dan ia menjelaskan proof-of-concept yang rusak yang membutuhkan lead engineer
- Ia mengirim repositori GitHub publik untuk direview sambil meminta saya "memeriksa isu deprecated Node modules"
- Permintaan untuk mereview codebase yang sudah ada memang hal yang umum, tetapi saya merasakan ada kejanggalan sehingga menjadi lebih waspada
Cara pemeriksaan
- Alih-alih clone lalu memasang dependensi, saya menyalakan VPS sekali pakai di Hetzner dan meng-clone repositori di sana
- Saya menjalankan Pi dalam mode read-only, dengan hanya mengaktifkan tool untuk membaca file
- Perintah yang digunakan:
pi --tools read,grep,find,ls
- Perintah yang digunakan:
- Ketika saya meminta agen itu mereview codebase dan menandai hal-hal yang mencurigakan, ia hampir langsung berhenti di
app/test/index.js
Struktur backdoor
- Repositori tersebut berbentuk frontend React + backend Node
- Jebakannya ada pada
app/test/index.jssepanjang sekitar 250 baris, yang menyamar sebagai test suite - Di dalamnya, URL dipecah lalu dirakit kembali agar tersembunyi
- Variabel seperti protocol, domain, separator, path, token, subdomain digabungkan untuk membentuk
https://rest-icon-handler.store/icons/77
- Variabel seperti protocol, domain, separator, path, token, subdomain digabungkan untuk membentuk
- Payload disembunyikan di antara dummy test yang dikomentari, dan akan menjalankan apa pun yang dikirim server di mesin pengguna
- Payload berada di baris 225
Mekanisme pemicu
- File tersebut tidak menunggu test dijalankan
app/index.jsmengeksekusiconst test = require('./test')untuk memuat dan menjalankanapp/test/index.js
package.jsonmenghubungkanapp/index.jske tahap startup- Intinya ada pada skrip
prepare, karena npm otomatis menjalankanpreparesetelahnpm install- Artinya, cukup dengan memasang dependensi saja backdoor akan berjalan
- Instruksi untuk "memeriksa deprecated Node modules" pada akhirnya adalah umpan untuk mendorong eksekusi
npm install - Sebenarnya payload bisa dijalankan di sandbox untuk mengamati payload tahap kedua, tetapi saya berhenti begitu ada bukti bahwa kode dari server akan dieksekusi
Identitas curian pertama
- Commit ditulis dengan nama dan email milik pengembang full-stack nyata
- Ia memiliki profil LinkedIn biasa, situs web pribadi, dan akun GitHub dengan riwayat panjang
- Dengan berpura-pura telah mewarisi codebase itu, saya menghubungi pengembang tersebut
- Ia menjawab bahwa ia tidak pernah bekerja di perusahaan itu, pernah juga disamar di GitHub sebelumnya hingga repositori diturunkan, dan tidak ada hubungannya dengan repositori ini
- Ia juga mengatakan bahwa dirinya sedang melaporkan repositori-repositori semacam ini
- Seluruh riwayat commit, total 39 commit, diatribusikan atas nama seorang pengembang yang sebenarnya tidak pernah menyentuh repositori itu
Identitas curian kedua
- Profil rekruter itu ternyata milik jurnalis bidang seni yang nyata, dengan riwayat hanya di bidang budaya dan sama sekali tanpa unsur teknis
- Ketika saya membalas bahwa instalasi tidak berhasil, jurnalis nonteknis itu seketika berubah menjadi ahli npm dan versi Node dan menekan saya agar menjalankan
npm install
Ini bisa terjadi pada siapa saja
- Saya sudah pernah mendengar serangan seperti ini dan membacanya di HN, tetapi ketika diri sendiri yang menjadi target, rasanya tetap agak mengejutkan
- Saya memang curiga sejak pesan pertama, tetapi jika itu terjadi pada hari saat saya lelah atau sedang terburu-buru, saya mungkin saja menjalankan
npm installsebelum berpikir panjang
- Saya memang curiga sejak pesan pertama, tetapi jika itu terjadi pada hari saat saya lelah atau sedang terburu-buru, saya mungkin saja menjalankan
- Pesan LinkedIn yang berisi permintaan review repositori memang perlu disikapi dengan sedikit kewaspadaan dan security hygiene
- Mereview kode dengan agen read-only ternyata lebih efektif daripada membaca langsung
- Backdoor itu disamarkan seperti kode pemula yang ceroboh, tetapi agen tersebut menemukannya dalam hitungan detik
- Repositori telah dilaporkan ke GitHub, dan rekruternya ke LinkedIn, tetapi hingga kini belum ada perubahan dan kodenya masih tetap dipublikasikan
1 komentar
Opini Hacker News
Seorang perekrut startup kripto kecil mengirim repositori GitHub publik dan meminta agar repositori proof-of-concept yang rusak itu ditinjau, sambil menyuruh memeriksa “deprecated Node modules issue”, dan ternyata alurnya adalah phishing yang mendorong
npm installSkrip
prepareberjalan otomatis setelahnpm installlalu menjadi backdoor yang mengeksekusi kode arbitrer yang dikirim server di mesin lokal, dan fakta bahwa phishing seperti ini bisa terjadi lewat LinkedIn terasa sangat serius sampai mengejutkan$company, dan selama itu tertulis di profil, mereka muncul di halaman resmi perusahaanPerusahaan kami juga pernah punya perekrut palsu yang melakukan penipuan serupa, dan itu profil palsu yang cukup meyakinkan dengan banyak posting terkait di LinkedIn Premium, tetapi mereka bukan karyawan sungguhan
Sebanyak apa pun dilaporkan tidak pernah diturunkan, dan akhirnya masalahnya selesai hanya karena mentraktir minum kenalan yang bekerja di LinkedIn, tetapi tidak semua startup punya koneksi seperti itu
Melihat orang terus jadi korban seperti sekarang, sulit dipahami kenapa kita tidak memakai alat seperti PNPM dan menutup celah paling jelas dan paling sering disalahgunakan, yaitu eksekusi kode arbitrer saat proses mengunduh kode
Alat yang menjalankan kode arbitrer saat kita baru mau mengunduh kode seharusnya dihentikan sekarang juga
Yang terakhir saya ingat adalah unduhan yang disamarkan sebagai file screensaver Windows
.scr, dan masuknya ke LinkedIn berarti ini tahap yang lebih buruk lagiPlatform mungkin tidak terlalu peduli karena terlihat seperti “pertumbuhan lowongan kerja”, mirip seperti jaringan iklan Google atau Meta yang juga tidak terlalu peduli pada iklan penipuan
bullshitpowershellladendoucument.pdf.docx, tetapi mengirim langsung lewat DM LinkedIn adalah strategi yang cukup beraniIni jelas tindak kriminal, jadi saya tidak paham kenapa tidak ada kanal yang dikenal luas semacam 911 untuk kejahatan siber agar hal seperti ini bisa dilaporkan dan mendapat bantuan
Masyarakat harus lebih cepat mengejar risiko nyata dan membangun jaringan dukungan, dan kejahatan terorganisasi butuh pertahanan yang terorganisasi juga
Kemungkinan besar Anda tidak akan mendapat balasan, tetapi bagi warga AS, atau mungkin siapa pun, sejauh yang saya tahu ini tempat yang paling mendekati 911 internet
Masalah kedua adalah asimetri bahwa upaya untuk membuat penipuan seperti ini nyaris nol, sementara untuk menangkap dan menuntut pelakunya perlu upaya besar dan biaya astronomis
Posisinya mirip dengan panggilan penipuan yang menyamar sebagai dukungan Microsoft dan menarget orang tua, dan hampir mustahil menangkap tersangkanya
Entah karena mereka sangat pandai menyembunyikan jejak, atau lebih sering karena mereka tinggal di negara yang pemerintahnya tidak peduli, atau bahkan membiarkan, penipuan terhadap orang Barat
Meski melaporkan kejahatan, kemungkinan besar Anda tidak akan dibantu atau dihubungi
Ini sekarang terasa tidak nyaman karena sangat dekat dengan tugas wawancara yang biasa
Situasi ketika seseorang mengirim repositori, bilang instalasinya rusak, lalu meminta kita melihatnya terasa wajar, dan banyak developer yang sedang lelah atau sedang cari kerja bisa saja menjalankan
npm installsebelum sempat berpikir panjangKita tidak ingin terlihat lambat, jadi cenderung melewati tahap bertanya apakah itu memang aman untuk dijalankan
“Repositorinya sudah dilaporkan ke GitHub, perekrutnya ke LinkedIn, tapi masih belum ada yang berubah dan kodenya masih tetap online”, ah, Microsoft
Iklan itu mengarah ke video palsu tentang perdana menteri Kanada yang mengumumkan rencana investasi kripto untuk semua warga Kanada, lengkap dengan tautan pendaftaran, dan ketika saya laporkan, jawabannya justru bahwa setelah investigasi mereka tidak menemukan pelanggaran kebijakan
Ketiganya punya masalah keamanan atau keandalan, dan semakin dalam Microsoft masuk ke AI, situasinya terlihat bukan membaik melainkan memburuk
Saya tidak tahu produktivitas AI internal perusahaan itu, yang menurut sebagian orang sampai 10x, sebenarnya dipakai ke mana
Kalau begitu pasti langsung diturunkan
Sepertinya domain yang sama dipakai untuk banyak target
Ada thread Reddit 3 bulan lalu dengan isi serupa: https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_t...
Saya tidak mengerti kenapa sampai sekarang semua sistem operasi di dunia belum memblokir npm
Orang-orang ini sepertinya tidak akan pernah belajar
Penipuan seperti ini bisa dilakukan dengan berbagai teknologi lain, bahkan dengan Makefile pun mungkin berhasil
Saya berharap Mac akhirnya punya framework virtualisasi yang benar-benar layak
Mengunduh skrip acak dari internet tanpa perlindungan seperti tahun 1995 sudah sangat melelahkan sekarang
Saat bertemu orang asing dan memasukkan barang mereka jauh ke dalam komputer kita, jangan lupa memakai alat pelindung
curl | bashdari GitHub, AUR, atau NPM sama buruknya, tetapi banyak developer di sini masih punya asumsi yang meragukan tentang praktik buruk iniBerbagai insiden kecil jenis Shai-Hulud yang beredar beberapa minggu terakhir menunjukkan betapa buruknya ini
Di IntelliJ, perintah npm bisa diatur agar dijalankan di dalam kontainer Docker
Tawaran kerja yang saya terima dari LinkedIn semuanya terlalu mencurigakan
Bentuknya seperti menyuruh melamar lewat platform, merekam video perkenalan, atau mengerjakan tes coding penyaring di balik platform kode
Mereka meminta dia menulis cek sebagai uang jaminan laptop perusahaan; dari luar itu jelas tidak masuk akal, tetapi setelah lama mencari kerja dia sedang putus asa dan benar-benar gembira karena merasa akhirnya mendapat pekerjaan
Orang yang lama menganggur sering kali jadi begitu terdesak sampai melewatkan tanda bahaya serius yang tidak mungkin diabaikan oleh orang yang punya tabungan cukup atau masih bekerja dan hanya sedang ingin pindah kerja
Bukankah kebanyakan penulis paket NPM sekarang diretas dengan cara seperti ini?
Orang yang mengelola axios juga tampaknya kena pendekatan serupa lewat LinkedIn
Saya memakai LinkedIn hanya untuk lowongan kerja, tetapi beberapa bulan terakhir lowongan sampahnya terlalu banyak
Ada banyak sekali posting dari perusahaan seperti Ladders, Swooped, dan sejenisnya, dan rasanya sudah waktunya meninggalkan LinkedIn sepenuhnya