2 poin oleh GN⁺ 4 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • 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
  • 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.js sepanjang sekitar 250 baris, yang menyamar sebagai test suite
  • Di dalamnya, URL dipecah lalu dirakit kembali agar tersembunyi
  • 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.js mengeksekusi const test = require('./test') untuk memuat dan menjalankan app/test/index.js
  • package.json menghubungkan app/index.js ke tahap startup
  • Intinya ada pada skrip prepare, karena npm otomatis menjalankan prepare setelah npm 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 install sebelum berpikir panjang
  • 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

 
GN⁺ 4 jam lalu
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 install
    Skrip prepare berjalan otomatis setelah npm install lalu 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

    • LinkedIn tidak memberi perusahaan cara untuk menyangkal pengguna yang mengaku bekerja di $company, dan selama itu tertulis di profil, mereka muncul di halaman resmi perusahaan
      Perusahaan 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
    • Kalau dia teman, jangan biarkan temanmu memakai NPM
      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
    • Cara seperti ini khususnya sudah jadi trik yang terbukti di Upwork saat boom kripto/NFT 2021~2022, dan sejak suatu titik meluas dari proyek kripto ke banyak kategori lain
      Yang terakhir saya ingat adalah unduhan yang disamarkan sebagai file screensaver Windows .scr, dan masuknya ke LinkedIn berarti ini tahap yang lebih buruk lagi
      Platform 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
    • Saya pernah mengalami phishing yang menggali email lalu mengirim hal seperti bullshitpowershellladendoucument.pdf.docx, tetapi mengirim langsung lewat DM LinkedIn adalah strategi yang cukup berani
    • Belakangan ini saya banyak wawancara dan beberapa kali juga bertemu penipu yang jelas-jelas penipu; semoga itu bukan karena saya terlihat cukup bodoh untuk ditipu, melainkan karena penipuan seperti ini memang makin umum
  • Ini 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

    • Sayangnya para pelaku kejahatan siber berbahaya tahu satu trik aneh: “melakukan kejahatan dari negara yang tidak peduli pada kejahatan itu”
    • https://www.ic3.gov
      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 utamanya adalah tidak adanya 911 global yang berlaku di seluruh dunia
      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
    • Kalau dibilang secara sinis, ini ada di cabang yang cukup tinggi dan sulit dijangkau dalam pohon hal-hal buruk yang manusia lakukan satu sama lain
      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
    • FBI juga punya IC3, tetapi penanganan kejahatan sibernya buruk dan pada praktiknya nyaris tidak berguna
      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 install sebelum sempat berpikir panjang

    • Dalam konteks wawancara, ini lebih buruk lagi
      Kita 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

    • Saya pernah melihat iklan di LinkedIn yang menyamar seperti berita CBC Kanada
      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
    • Aneh, bukan? Microsoft memiliki LinkedIn, GitHub, NPM
      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
    • Seharusnya dilaporkan sebagai pelanggaran DMCA
      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

    • Ini tidak ada hubungannya dengan npm itu sendiri
      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

    • Menjalankan skrip acak curl | bash dari GitHub, AUR, atau NPM sama buruknya, tetapi banyak developer di sini masih punya asumsi yang meragukan tentang praktik buruk ini
      Berbagai insiden kecil jenis Shai-Hulud yang beredar beberapa minggu terakhir menunjukkan betapa buruknya ini
    • Di Mac sebenarnya sudah ada cara yang lumayan
      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

    • Saudara saya sempat lama menganggur karena sakit lalu menerima “tawaran kerja” yang tampak meyakinkan dari LinkedIn
      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

    • Rasanya seperti kena batunya sendiri
  • 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