Deteksi perubahan pemilik pada ekstensi Chrome yang terpasang
(github.com/classvsoftware)- Under New Management adalah ekstensi yang secara berkala memeriksa apakah informasi pengembang dari ekstensi browser yang terpasang telah berubah di Chrome Web Store atau Firefox Addons
- Jika informasi pengembang berubah, ekstensi ini menampilkan lencana merah pada ikon ekstensi agar pengguna mengetahui adanya perubahan kepemilikan
- Kebutuhannya berangkat dari masalah bahwa pengembang ekstensi sering menerima tawaran akuisisi, dan dalam hampir semua kasus pihak pengakuisisi berniat menyalahgunakan pengguna yang sudah ada
- Pengguna mungkin tidak menyadari bahwa kepemilikan ekstensi yang terpasang telah berubah dan mungkin telah disusupi, sehingga alat ini memberi kesempatan untuk membuat penilaian
- Karena browser membatasi modifikasi domain marketplace ekstensi, pemeriksaan informasi pengembang didelegasikan ke server API ExBoost
Mendeteksi perubahan kepemilikan ekstensi
- Under New Management sesekali memeriksa apakah informasi pengembang dari ekstensi yang terpasang telah berubah di Chrome Web Store atau toko Firefox Addons
- Jika ada perubahan, lencana merah akan ditampilkan pada ikon ekstensi sehingga pengguna dapat menyadari perubahan kepemilikan
- Tujuannya adalah memberi pengguna kesempatan untuk membuat keputusan yang berdasarkan informasi tentang perangkat lunak yang mereka gunakan
Mengapa ini diperlukan
- Pengembang ekstensi terus menerima tawaran untuk menjual ekstensi mereka
- README menyatakan bahwa dalam hampir semua kasus pembeli memiliki tujuan untuk menipu pengguna yang sudah ada
- Pengguna mungkin tidak mengetahui bahwa kepemilikan ekstensi yang terpasang telah berubah, dan saat ini mungkin telah disusupi
Cara memasang
- Instal di Chrome: Chrome Web Store
- Instal di Firefox: Firefox Add-ons
- Atau unduh prebuilt release, ekstrak file
.zip, lalu muat direktoridistke browser
Build dari source
- Under New Management menggunakan Plasmo
pnpm install: memasang dependensipnpm dev: menjalankan secara lokalpnpm build --zip: build rilispnpm build --target=firefox-mv3: build untuk Firefox
Mengapa server eksternal diperlukan
- Browser memiliki aturan khusus untuk memodifikasi domain marketplace ekstensi
- Sebagai contoh, tidak dimungkinkan menetapkan aturan
declarative_net_requestuntukchromewebstore.google.com - Karena itu, tugas pemeriksaan informasi pengembang didelegasikan ke ExBoost server API
1 komentar
Komentar Hacker News
ID ekstensi diturunkan dari private key yang ikut diunggah saat developer pertama kali mengirimkannya ke app store, dan jika ZIP yang diunggah setelah itu berisi
key.pemyang berbeda, ID-nya akan berubahNamun jika tidak ada
key.pem, ID ekstensi tetap dipertahankan. Jadi jika ID berubah, ada kemungkinan pemiliknya berubah, tetapi pemilik lama juga bisa saja menyerahkan private key kepada pemilik baru. Karena Google tidak meminta private key di setiap unggahan, pemilik baru dapat mendistribusikan perubahan tanpa key tersebutEkosistem ekstensi menarik, jadi saya juga sedang membuat tool di bidang ini. Saya ingin membuat repository GitHub untuk ekstensi tertentu, mencatat setiap update sebagai perubahan repository, lalu menjalankan analyzer statis dan runtime taint analysis untuk melacak apakah input pengguna mengalir ke sink berbahaya seperti
evalataupostMessage: https://github.com/milesrichardson/crxmonSaat negosiasi, saya bilang akan menurunkan ekstensi itu dan menyerahkan semua source code agar mereka mendistribusikannya sendiri, tetapi pihak lain ternyata berharap saya juga menyerahkan kredensial akun ekstensi Opera. Akhirnya transaksi itu saya batalkan, dan meski tool seperti ini berguna sampai batas tertentu, saya setuju bahwa malware scanner untuk ekstensi akan lebih baik
Developer seharusnya menandatangani ekstensi atau manifest dengan private key, lalu membagikan public key atau menyertakannya dalam unggahan. Update juga harus terus ditandatangani dengan private key yang sama, dan selama key tidak berubah, public key dari unggahan pertama dapat digunakan untuk memverifikasi bahwa private key yang sama digunakan. Apakah public key disertakan dalam unggahan berikutnya bukan hal yang mendasar. Jika private key dijual atau dibagikan, orang lain bisa membuat update yang ditandatangani secara sah, tetapi ini adalah risiko yang muncul karena penanda tangan tidak menjaga private key tetap rahasia. Jika siapa pun, termasuk Google, membagikan private key, jaminan asal-usul ekstensi akan runtuh
Namun saya ragu apakah benar Google mengizinkan pemilik baru mendistribusikan perubahan tanpa private key. Chrome Web Store sangat rewel bahkan untuk hal-hal kecil, jadi aneh kalau mereka tidak peduli pada bagian seperti itu
Saya menggunakan 3 ekstensi yang hanya dipublikasikan untuk tester, tanpa developer mode atau
rsync/robocopy, agar mudah dipasang di beberapa mesin. Namun akhir pekan ini Chrome menonaktifkan semuanya hanya di satu mesin dengan alasan “tidak terdaftar di Chrome Web Store dan mungkin ditambahkan tanpa sepengetahuan pengguna”. Tidak bisa dipaksa aktif, dan di Store muncul status “nonaktif” dengan tombol “aktifkan sekarang”, tetapi banner hanya hilang sebentar lalu muncul lagi setelah refresh. Profil Chrome tersebut sedang login dengan akun yang ada di allowlistBadge di halaman Chrome Web Store menunjukkan akun saya sebagai developer tidak terkena sanksi dan statusnya baik. Jika tidak login dengan email allowlist, halaman itu pun tidak akan terlihat. Sulit diterima bahwa mereka “sangat memperhatikan” hal-hal seperti ini tetapi justru mengizinkan update tanpa key
CWS tidak boleh pernah mengubah ID ekstensi yang sudah ada, karena ID itulah yang mengidentifikasi ekstensi secara unik. Jika ID berubah, klien Chrome tidak dapat meminta update untuk ekstensi tersebut, dan CWS maupun Chrome tidak mendukung fitur memindahkan pengguna dari satu ekstensi ke ekstensi lain
Setahu saya, setelah pengajuan pertama, CWS akan menolak ZIP yang berisi
key.pem. Jika ID ekstensi berubah, itu bukan ekstensi yang sama. Pernyataan bahwa pemilik baru dapat mendistribusikan perubahan tanpa PEM pada umumnya benar, tetapi jika developer menandatangani sendiri ekstensi yang diajukan ke CWS, update tidak dapat dilakukan tanpa PEM. Jujur saya tidak tahu apakah fitur itu masih memungkinkan sekarang; dulu itu adalah jebakan besar ketika developer kehilangan private key yang dipakai untuk unggahannya sendiri dan menghancurkan basis instalasinyaHampir semua orang pada akhirnya akan setuju jika harganya cocok; perbedaan tiap orang hanya pada berapa bayaran yang diperlukan
Beberapa bulan lalu saya membuat ekstensi gratis dan open-source untuk mempercepat melewati iklan YouTube, membagikannya di sini, dan masuk halaman pertama.
Dalam waktu seminggu, seseorang yang berkomentar di postingan Show HN saya menyalinnya, mempromosikan versinya sendiri di Reddit, lalu viral hingga melampaui 300 ribu pengguna: https://github.com/rkk3/ad-accelerator/blob/main/lessons_pos...
Saya sempat bertanya-tanya kenapa ia menyalinnya alih-alih mengirim PR ke ekstensi gratis dan open-source, tetapi beberapa minggu kemudian ia mencoba menjualnya di beberapa situs dengan harga nominal 5 digit. Mungkin saja ia masih memilikinya, tetapi terlihat juga bahwa developer yang tercantum di Chrome Store sudah berbeda dibanding saat pertama kali dirilis
Saya tidak memahami seluruh latar belakangnya, tetapi ekstensi itu pada dasarnya hanyalah JavaScript sepele sekitar 50 baris. Cukup berani untuk menyebut seseorang mencurinya. Idenya sendiri tidak bernilai, dan sulit juga mengklaim bahwa ide ini sangat baru. Bahkan jika diasumsikan pihak lain terinspirasi, urutan waktu siapa melakukan apa lebih dulu tidak terlalu jelas
Namun, berapa lama YouTube dan Chrome akan membiarkannya tetap berfungsi adalah persoalan lain, dan mereka juga mungkin tidak menyukainya
“…jika seluruh dunia menyanyikan lagumu / dan semua lukisanmu terpajang / ingatlah bahwa apa yang dulu milikmu kini milik semua orang / itu bukan soal benar atau salah / kau boleh saja terus bergantung padanya / hanya saja kaulah yang akan gelisah…” — “What Light” dari Wilco
Ini benar-benar berguna, tetapi seperti yang dikatakan orang lain, ini seharusnya menjadi fitur bawaan browser.
Saya belum melihat kode sumbernya secara mendalam, tetapi penasaran apakah perubahan kepemilikan akan diberitahukan secara otomatis. Tidak perlu real-time, tetapi apakah diberi tahu saat startup, atau harus menjalankan perintah pemeriksaan secara manual?
Topik ini juga sempat ramai beberapa bulan lalu: https://news.ycombinator.com/item?id=36233068
Seperti komentar teratas saat itu, Firefox dan Chrome sebaiknya mengubah kebijakan upgrade ekstensi otomatis untuk situasi seperti ini. Jika sebuah ekstensi mengungkapkan perubahan kepemilikan, upgrade harus memerlukan persetujuan pengguna; jika tidak mengungkapkannya, pengguna harus bisa melaporkannya sebagai berbahaya. Selain itu, judulnya mungkin seharusnya memakai “Show HN”
Notifikasi yang lebih kuat dari itu saya nilai terlalu mengganggu
Ini menurunkan nilai produk atau perusahaan saat dijual. Ramah bagi pengguna, tetapi tidak ramah bagi pembuat yang harus membayar tagihan
Ini bukan bahan lelucon.
Saya memiliki ekstensi Chrome open-source yang cukup populer selama beberapa tahun, dan total donasinya bahkan tidak cukup untuk biaya kopi sebulan.
Namun tawaran untuk membeli ekstensi itu—termasuk untuk tujuan yang jelas-jelas jahat, bahkan ada yang mengatakannya terang-terangan—datang berkali-kali dan dengan nominal yang gila. Saya menolak semuanya, tetapi mengharapkan moralitas developer asli menjadi satu-satunya mekanisme keamanan dan privasi dalam situasi seperti ini bukanlah penilaian yang waras
Saya cukup memahami tujuannya dan juga mengerti keterbatasan teknisnya, tetapi agak mencurigakan bahwa daftar semua ekstensi pengguna dikirim ke jaringan iklan yang berpusat pada ekstensi
Alasannya layanan eksternal diperlukan adalah karena browser menerapkan aturan khusus untuk modifikasi domain marketplace ekstensi seperti
chromewebstore.google.com, sehingga pengecekan informasi developer didelegasikan ke server API ExBoosthttps://www.extensionboost.com/
ExBoost dijelaskan sebagai jaringan kolaborasi untuk ekstensi browser yang menginginkan lebih banyak pengguna dan ulasan. Caranya adalah memasukkan slot ExBoost di dalam UI ekstensi, lalu menampilkan promosi ekstensi serupa atau permintaan ulasan
Melihat hasil API untuk salah satu ekstensi yang saya pasang, muncul metadata terkait developer. Saya mencoba Chrome API
chrome.management.get(id), tetapi informasi ini tidak dikembalikan, dan tampaknya juga tidak ada cara untuk mengambil isimanifest.jsonsecara terprogram. Jadi untuk melakukan hal yang ingin dilakukan ekstensi ini saat ini, memang diperlukan sumber eksternalhttps://github.com/classvsoftware/under-new-management/blob/...
https://api.extensionboost.com/v1/developer?extension_ids=gh...
Isinya meminta saya memasukkan kode mereka ke ekstensi saya, dengan bunyi “kalau kamu menampilkan punyaku, aku juga menampilkan punyamu. Biaya 0, semua untung”. Karena terlihat mencurigakan, saya tandai sebagai spam, dan tampilannya tidak berbeda dari email spam lain yang pernah saya terima dari para penipu
Untuk ekstensi Firefox ada program ekstensi rekomendasi Mozilla, dan disebutkan bahwa sebelum dimasukkan, ekstensi menjalani peninjauan teknis ketat oleh pakar keamanan staf: https://support.mozilla.org/en-US/kb/recommended-extensions-...
Namun dari dokumen dukungannya saja tidak jelas apakah semua pembaruan ditinjau sebelum dipublikasikan. Jika setiap kali ditinjau, ini akan sampai batas tertentu menyelesaikan masalah untuk ekstensi populer, tetapi saya juga penasaran berapa banyak penundaan yang terjadi saat diperlukan pembaruan keamanan darurat
Saat ini, sebagai kebijakan pribadi, saya hanya mengizinkan ekstensi yang dikurasi seperti itu berjalan di semua situs dan tab
Maksudnya struktur di mana organisasi yang sangat populer atau terkenal sekalipun bisa dilarang jika berulang kali melanggar aturan atau mencoba melewati fitur marketplace
Dalam kasus yang benar-benar berniat jahat, sering kali yang dijual saat ekstensi berpindah tangan adalah kredensial akun developer Google itu sendiri, jadi kasus seperti ini tidak akan terdeteksi
Dulu sekali saya memasang adblock dan sangat menyukainya
Saya membeli mesin baru dan harus memasangnya lagi, dan saat itu untuk pertama kalinya saya melihat izinnya; itu benar-benar bikin kaget. Secara logis memang masuk akal bahwa untuk memblokir iklan, ia harus bisa melihat apa yang saya lihat, tetapi saya belum pernah benar-benar memikirkannya serius
Sekarang saya memakai Pi-hole dan tidak memakai ekstensi sama sekali
Meski begitu, bagus bahwa ada pilihan bagi yang menginginkannya, dan tiap orang punya profil risiko serta kekhawatiran yang berbeda
Beberapa ekstensi bersifat open source dan dapat dipercaya, tetapi banyak juga yang tidak, dan tampaknya orang-orang kesulitan memverifikasinya
Jika Anda menyediakan daftar blokir, browser yang langsung memblokirnya. Saya tidak tahu apakah ini juga mungkin di Firefox: https://developer.apple.com/documentation/safariservices/cre...
Jika saya pembeli ekstensi berbahaya, bukankah saya cukup mempertahankan nama developer yang sama untuk menghindari ini? Atau Chrome Extension Store mengelola nama developer dengan ketat?
Misalnya, aktor negara yang berniat jahat bisa menawarkan puluhan juta dolar kepada pembuat uBlock untuk memperoleh banyak akses browser. Saya tidak tahu bagaimana keekonomiannya, tetapi ekstensi yang lebih niche bisa menjadi target dengan biaya jauh lebih murah
Saya penasaran apakah masalah ini lebih parah di Chrome dibandingkan browser lain
Satu-satunya ekstensi browser yang saya pakai adalah HonorLock, software proctoring ujian, dan saya wajib menggunakannya. Karena ekstensinya hanya untuk Chrome, saya sesekali memakai Chrome karena HonorLock. Kalau membuka tautan instalasi di Safari, muncul pesan untuk memasang Chrome: https://app.honorlock.com/install/extension
Saya penasaran apakah hanya ekstensi Chrome yang punya karakteristik yang memungkinkan use case HonorLock, sekaligus membuat alat dalam tulisan ini lebih berguna