- Beberapa paket yang diunggah ke npm menyertakan skrip instalasi yang tampaknya menargetkan Cursor.com, dan saat diinstal mengirim informasi sistem ke layanan web eksternal
- Pendistribusinya adalah pengguna npm sn4k-s3c, dan menggunakan nama yang mengingatkan pada paket internal Cursor seperti
cursor-retreival,cursor-always-local,cursor-shadow-workspace - Output
envyang diambil paket dapat mencakup variabel lingkungan sensitif seperti kunci AWS, token npm, dan kredensial GitHub, sehingga cakupan dampaknya bisa besar - OpenSSF package analysis scanner mengidentifikasi paket-paket itu sebagai berbahaya, dan OSV membuat 3 advisori: MAL-2025-27, MAL-2025-28, MAL-2025-29
- Dalam metadata npm, email snyk.io milik Snyk Security Labs muncul sebagai penerbit, lalu setelah itu peneliti Snyk menurunkan paket-paket tersebut dan Snyk merespons lewat blog
Paket npm yang tampaknya menargetkan Cursor
- Dalam proses deteksi paket berbahaya oleh SourceCodeRed, ditemukan beberapa paket yang diunggah ke npm
- Nama paketnya berbentuk seperti paket internal terkait Cursor
cursor-retreivalcursor-always-localcursor-shadow-workspace
- Pendistribusinya ditampilkan sebagai pengguna npm sn4k-s3c
- Disebutkan bahwa daftar paket dapat dilihat di
https://www.npmjs.com/~sn4k-s3c
Tindakan yang dilakukan saat instalasi
- Saat paket diinstal, paket mengumpulkan data sistem lalu mengirimkannya ke layanan web yang dikendalikan penyerang
- Dari tangkapan layar, paket mengambil output perintah
env - Output
envdapat berisi pengaturan sistem sekaligus variabel lingkungan yang sensitif- kunci AWS
- token npm
- kredensial GitHub
- variabel lingkungan sensitif lainnya
- Akibatnya, hanya dengan instalasi saja, informasi lingkungan lokal dapat bocor ke luar
Kemungkinan dependency confusion dan hasil deteksi
- Paket dengan bentuk seperti ini sering muncul dalam serangan dependency confusion yang menargetkan perusahaan tertentu
- Tidak dipastikan apakah Cursor.com memiliki program bug bounty atau apa latar belakang spesifiknya
- SourceCodeRed menduga Cursor mungkin memiliki paket npm privat seperti
cursor-always-local,cursor-retrieval,cursor-shadow-workspace - Penyerang mungkin berharap karyawan Cursor secara tidak sengaja memasang paket publik tersebut lalu mengirimkan data
- OpenSSF package analysis scanner mengidentifikasi paket-paket tersebut sebagai berbahaya, dan OSV membuat 3 advisori malware
-
MAL-2025-27
-
MAL-2025-28
- MAL-2025-29
- Daftar OSV terkait ada di
https://osv.dev/list?q=cursor&ecosystem=npm
-
Metadata penerbit
- Dalam metadata paket npm, penerbit menggunakan alamat email snyk.io milik tim Snyk Security Labs
- Disebutkan bahwa metadata email penerbit ini adalah bagian yang tidak bisa dipalsukan
- Field
authorsecara spesifik menyebut karyawan Snyk - Field
authorbisa dipalsukan, tetapi karena penerbit memakai email Snyk yang terverifikasi, muncul dugaan bahwa ini memang berasal dari Snyk
Tanggapan pengguna dan pembaruan berikutnya
- SourceCodeRed mengatakan sudah memberi tahu npm, tetapi saat itu paket-paket tersebut masih belum ditandai sebagai berbahaya
- Banyak alat keamanan rantai pasok perangkat lunak hanya bisa memblokir jika sudah mengetahui bahwa paket itu berbahaya
- Disarankan untuk tidak sembarang memasang paket npm
- Paket-paket tersebut hanya berisi dua file, yaitu
package.jsondanindex.jsataumain.js, yang dapat dilihat sebagai salah satu tanda mencurigakan - Menurut pembaruan 15 Januari 2025, peneliti Snyk menurunkan paket terkait Cursor sehari setelah blog dipublikasikan
- Pada 14 Januari 2025, The Register menerbitkan artikel terkait:
https://www.theregister.com/2025/01/14/snyk_npm_deployment_removed/ - Di hari yang sama, Snyk memposting tanggapan di blog dan menyatakan pada intinya bahwa mereka tidak melakukan kesalahan:
https://snyk.io/blog/snyk-security-labs-testing-update-cursor-com-ai-code-editor/
1 komentar
Pendapat di Hacker News
[Koreksi: melihat jawaban pengembang Cursor di bawah, sepertinya ini bukan sesuatu yang disetujui Cursor] Kedengarannya seperti ada registry NPM privat di dalam Cursor yang berisi paket-paket tersebut, dan karena cara kerja NPM, situasinya memudahkan penyerang untuk menipu agar paket dengan nama yang sama diambil dari registry publik
Mungkin seorang karyawan Snyk menemukan atau mencurigai bahwa sebagian build Cursor salah dikonfigurasi seperti ini, lalu mengunggah paket sebagai proof of concept. Melihat deskripsi paketnya “for Cursor”, saya sempat mengira mereka dipekerjakan untuk tujuan ini
Kalau begitu, sebenarnya tidak ada hal besar; jika intinya adalah menunjukkan salah konfigurasi yang melewati registry privat, peneliti keamanan memang tidak mungkin memakai registry NPM privat untuk proof of concept
Terutama karena banyak proxy memilih registry publik ketimbang privat jika versi paket terbaru di publik lebih tinggi: https://snyk.io/blog/detect-prevent-dependency-confusion-att...
Kami menanganinya dengan cara yang sama seperti VS Code: https://github.com/microsoft/vscode/tree/main/extensions
Kami tidak mempekerjakan Snyk, dan setelah mengetahui hal ini kami menghubungi mereka lalu menerima permintaan maaf. Kami belum mendapat konfirmasi persis apa yang ingin mereka lakukan, tetapi penjelasan bahwa seseorang mencurigai adanya kerentanan dependency confusion terdengar masuk akal. Namun, membuatnya benar-benar mengirim variabel lingkungan dari NPM publik menurut saya cukup tidak bertanggung jawab
env, akan menjadi masalah besar bagi kebanyakan orangMenariknya, co-founder Snyk memulai pesaing Cursor
https://www.tessl.io/ https://techcrunch.com/2024/11/14/tessl-raises-125m-at-at-50...
Semoga tidak ada kecurangan
Rasanya sekarang semua pengembangan harus benar-benar dilakukan di dalam mesin virtual. Satu VM untuk satu proyek. Ada terlalu banyak cara licik yang bisa membuatku tanpa sadar melakukan kesalahan dan merusak keamanan. Satu-satunya penghiburan adalah aku orang tak dikenal yang tidak punya rahasia atau aset untuk dicuri
Kita terlalu banyak memercayai kode begitu saja, mulai dari IDE, plugin, utilitas pengembangan, library bahasa, paket sistem operasi, dan sebagainya
Di tempatku bekerja beberapa tahun lalu, laptop dilarang menjalankan browser web dan alat pengembangan. Kalau butuh browser harus lewat Citrix, dan kalau perlu coding harus memakai VDI atau menjalankan alat di dalam VM
Saat itu cara itu terlihat hampir gila, tetapi lama-lama aku makin memahaminya
Karena NVIDIA mengunci fitur GPU virtualisasi di balik kartu enterprise, kita jadi bergantung pada penerjemahan instruksi yang tidak efektif
Hampir semua overhead VM lain masih bisa kutoleransi, tetapi GUI yang tersendat dan tidak responsif berdampak buruk pada ergonomi lebih dari yang diduga, dan anehnya ikut menurunkan performa lain
Kalau masalah ini bisa diselesaikan setidaknya untuk virtualisasi Linux di atas Linux, opsi untuk memvirtualisasikan semuanya akan jauh lebih realistis
Secara spesifik, aku sedang memindahkan lingkungan pengembangan Go dan Zig dari Mac lama ke Asahi Linux di M1, tetapi sudah tersendat sejak mencari pengganti TrueCrypt dan Little Snitch. Apakah alat VM seperti ini mendukung VM terenkripsi dan aturan firewall? Vagrant disebut di sini dan sepertinya bisa menangani isolasi jaringan sampai batas tertentu, tetapi apa lagi yang bisa direkomendasikan?
VM bisa melindungiku, tetapi tidak melindungi pengguna software yang kubuat. Bagaimana aku bisa mengirim produk yang hanya berani kusentuh dengan pakaian pelindung kepada pelanggan, lalu berharap mereka bisa memakainya dengan aman tanpa perlindungan?
Itu bukan lingkungan yang kuinginkan
Solusi saat ini adalah memilih dependensi dengan sangat ketat. Lebih spesifiknya, menurutku yang harus dipercaya bukan proyek atau perusahaan, melainkan orangnya saja. Ini tidak mudah, tetapi untuk saat ini aku belum melihat alternatif yang lebih baik
Aku menuliskan bind filesystem di file dot sederhana per proyek, lalu saat membuka terminal baru ketika bekerja, terminal itu otomatis terisolasi berdasarkan file dot tersebut. Beban kognitifnya sangat rendah dan integrasinya hampir mulus. Kurasa banyak developer punya skrip serupa. Dulu aku pernah mencari proyek seperti ini tetapi tidak menemukannya; entah karena terlalu sederhana untuk dijadikan proyek, atau karena aku tidak tahu orang lain menyebutnya apa. Akan bagus kalau ada referensi yang bisa dilihat
Akses jaringan tidak kubatasi. Aku pernah bereksperimen mencatat semua traffic dan otomatis menyiapkan proxy man-in-the-middle, tetapi belum cukup nyaman untuk dipakai sebagai pengguna biasa. Tentu saja permukaan serangan kernel masih tetap ada. Namun kekhawatiran utamaku adalah file dibaca atau dihancurkan
Bagian tulisan yang tidak kusetujui adalah: “Sebaiknya jangan memasang paket NPM secara membabi buta, dan ada sinyal untuk melihat apakah paket mencurigakan. Paket-paket ini hanya punya dua file,
package.jsondanindex.jsataumain.js, jadi itu salah satu flag untuk menilai apakah normal”Ini mungkin cukup berlaku untuk paket tingkat atas, tetapi hampir mustahil meninjau semua dependensi transitif
Kalau mengambil paket dengan 400 dependensi, bagaimana mungkin memeriksa bahkan 10% dari permukaan itu dengan benar? https://gist.github.com/anvaka/8e8fa57c7ee1350e3491#top-1000...
id_rsa—bisa cukup terselesaikanSnyk juga perusahaan yang tidak merotasi kunci publik, melainkan menggantinya begitu saja tanpa pemberitahuan: https://github.com/snyk/cli/pull/5649
Jika sebuah proyek pindah ke hosting repositori selain GitHub, mereka menandainya sebagai “abandoned”, dan meskipun ada rilis baru di npm/PyPI, proyek itu tetap dianggap ditinggalkan
Menurutku kemampuan mereka tidak sebesar reputasinya
Selain itu, sales Snyk pernah menghinaku lewat email. Rupanya kalau tidak tertarik membeli produk mereka, itu berarti aku developer tidak kompeten yang hanya bisa memakai software penuh kerentanan
Terlihat seperti software yang sepenuhnya terbalik, dibeli perusahaan karena perusahaan asuransi menyuruh mereka mengisi item checklist keamanan
Codeberg terlihat menarik, dan kalau sanggup mengurus pemeliharaannya, opsi self-hosted seperti Forejo juga tampak bagus
Aku belum banyak mendengar tentang Snyk selain bahwa mereka cukup tinggi hati, jadi ini sudut pandang yang cukup menarik
Tanpa konteks lebih lanjut, ini juga tidak terlihat baik bagi Snyk. Artinya, seorang karyawan menguji layanan perusahaannya sendiri di lingkungan nyata melalui NPM, atau saat melakukan audit yang sah terhadap Cursor, mereka kekurangan kontrol dan prosedur untuk memastikan tidak menggunakan sumber daya publik
Ini terlihat seperti audit white-hat dari pengujian Snyk.
oastify.comadalah server default Burp Collaborator, jadi mungkin itu sebabnya terdeteksiSeharusnya pengujian memakai repositori npm privat, dan tidak sulit untuk menimpanya secara lokal. Mereka juga seharusnya memakai server Collaborator sendiri
console.log, membuatnpm installgagal, atau memakai cara yang tidak mengekstrak payloadNPM tampaknya menciptakan lapangan kerja bagi industri keamanan. Ini kekacauan yang tidak bisa diperbaiki, dan saya berharap pesaing seperti JSR bisa memberi tekanan yang cukup pada organisasi tersebut
Justru regulasi seperti DORA dan NSIS kemungkinan besar akan makin menuntut audit paket pihak ketiga. Ini akan memaksa industri penting mengubah cara pengembangan. Selain itu, di era LLM saya rasa penggunaan paket eksternal akan jauh berkurang. Untuk apa mengambil paket eksternal hanya demi hal seperti membuat spesifikasi OpenAPI? Dengan satu-dua jam pengaturan, LLM bisa menuliskan skrip CLI yang dibutuhkan. Demikian pula, meski tidak memakai LLM untuk langsung menghasilkan bagian kode yang membosankan, kita bisa memintanya membuat tool CLI yang melakukan pekerjaan itu. Dengan begitu tidak perlu bergantung pada faktor eksternal, dan meskipun hampir pasti tool CLI itu berupa kode koboi yang berantakan, output-nya bisa dibentuk sesuai keinginan dengan menyempurnakan tool tersebut
Jika melihat bahasa seperti Go yang memasukkan hal-hal yang dibutuhkan ke paket standar, tampak sebuah dunia tempat banyak hal bisa dilakukan dengan sangat mudah hanya memakai standard library
Sedikit keluar topik, tetapi apakah ada yang pernah mendapatkan SBOM yang layak untuk tool dan layanan Snyk sendiri? Saya bertanya karena mereka mencoba menjual solusi pembuat SBOM ke perusahaan kami
Saya rasa saya tidak akan memasangnya meski dibayar. Unit 8200 terus melahirkan pendiri dan mendanai mereka, terasa seperti struktur yang sudah menaruh kaki di pintu, mirip NSA
Snyk Research Labs secara rutin berkontribusi kepada komunitas melalui pengujian dan riset atas paket perangkat lunak umum. Riset Cursor kali ini tidak berniat jahat, dan paketnya mencantumkan Snyk Research Labs serta kontak penelitinya. Kami secara sangat spesifik meneliti dependency confusion pada beberapa ekstensi VS Code, dan paket-paket tersebut memang bukan sesuatu yang ditujukan untuk dipasang langsung oleh developer
Snyk mengikuti kebijakan disclosure yang bertanggung jawab. Tidak ada yang mengambil paket ini, tetapi jika ada yang melakukannya, kami akan segera melakukan tindak lanjut
Responsnya terdengar seperti akan mengirim surat permintaan maaf ke pemakaman orang yang tertembak. Sekalipun “berniat baik”, jika kredensial seseorang dikompromikan, orang itu sudah berada dalam kondisi terkompromikan dan harus merespons sama seperti ketika terkena penyerang jahat
Ini begitu dekat sampai sulit merasakan bedanya dengan niat jahat
Selain itu, semua orang juga perlu ingat bahwa pemangku kepentingan Snyk saat ini sedang mencoba meluncurkan produk pesaing Cursor. Menjadi jauh lebih sulit untuk berprasangka baik
envsayaTerlebih lagi, karena ada konflik kepentingan dengan produk pesaing Cursor, mereka seharusnya lebih berhati-hati. Pengambilan keputusan maupun responsnya buruk sekali