Membuat sendiri ekstension/extention untuk browser Google Chrome tidak semudah yang dibayangkan. Maksudnya ada hal-hal yang harus diperhatikan sebelum di upload ke browser chrome kita.
Pasalnya tempo hari saya kedatangan message/inbox dari teman-teman terdekat di akun Facebook saya yang isinya semua adalah pertanyaan. Dari sana saya langsung ngeh bahwa ini adalah spyware. Lalu menular ke akun tiktok saya, yang ujung-ujungnya berakhir dengan pencarian sumber masalahnya.
Membuat Ekstension Fitur Sharing Halaman ke Sosmed
Membuat Chrome extension sendiri untuk fitur sharing halaman rentan disusupi spyware terutama karena lemahnya sistem keamanan kode, celah pada library pihak ketiga, dan kurangnya pengawasan berkelanjutan.
Ketika Anda mengembangkan extension secara mandiri—terutama jika tujuannya hanya untuk penggunaan pribadi atau internal—faktor keamanan sering kali terabaikan dibanding fungsionalitasnya.Berikut adalah beberapa alasan utama mengapa extension sharing buatan sendiri sangat rentan disusupi spyware:
5 Penyebab Serangan Spyware di Ekstension
Hak Akses (Permissions) yang Terlalu Luas
Untuk membagikan halaman, extension biasanya meminta izin seperti "activeTab" atau "tabs". Jika kode tidak ditulis dengan prinsip least privilege (hak akses minimal), extension bisa saja secara tidak sengaja memberikan akses ke seluruh data penjelajahan pengguna, termasuk cookie, riwayat, dan data sensitif di tab lain. Jika ada celah kecil saja, spyware bisa memanfaatkan izin luas ini untuk mencuri data.
-
Penggunaan Library Pihak Ketiga yang Tidak Aman
Saat membuat fitur sharing, pengembang sering kali menggunakan library atau package open-source (misalnya lewat NPM) untuk mempercepat proses coding.Serangan Supply Chain: Penetas sering kali mengambil alih library populer yang telantar dan menyisipkan kode jahat (malicious code) ke dalamnya.Jika Anda memperbarui library tersebut tanpa memeriksa kodenya kembali, spyware akan otomatis masuk ke dalam extension Anda.
-
Kerentanan Cross-Site Scripting (XSS)
Extension sharing bekerja dengan mengambil konten atau URL dari halaman web yang sedang dibuka. Jika extension Anda menyalin teks atau HTML dari halaman luar dan mengeksekusinya tanpa proses sanitasi (pembersihan) yang ketat, penyerang bisa menyisipkan skrip berbahaya. Skrip ini kemudian dapat berjalan dengan hak istimewa extension dan berubah menjadi spyware yang memata-matai aktivitas Anda.
Tidak Adanya Review Keamanan Otomatis
Jika extension ini tidak didaftarkan ke Chrome Web Store, extension tersebut tidak akan melewati proses pemindaian otomatis dan peninjauan manual oleh tim Google. Proses peninjauan Google berfungsi untuk mendeteksi kode berbahaya atau pola aneh yang mengindikasikan adanya spyware. Tanpa proteksi ini, infeksi kode bisa terjadi tanpa Anda sadari.
-
API Key dan Token yang Bocor
Fitur sharing biasanya terhubung ke layanan pihak ketiga (seperti database, email, atau media sosial) menggunakan API Key atau token autentikasi. Jika Anda menaruh (hardcode) API key tersebut langsung di dalam file JavaScript extension, penyerang dapat dengan mudah membongkar file .crx atau memeriksa kode extension Anda untuk mencuri token tersebut dan menyalahgunakannya.
Tips Coding Aman (Secure Coding) menghindari Ancaman
Untuk memastikan Chrome extension Anda aman dari ancaman spyware dan kebocoran data, Anda harus menerapkan prinsip Least Privilege (hak akses minimal) serta mempraktikkan metode secure coding yang ketat.
Berikut adalah panduan daftar permissions minimal dan tips secure coding yang wajib Anda terapkan:
- Daftar Permissions Minimal (Manifest V3)
- activeTab: Ini adalah permission paling aman untuk fitur sharing. Extension hanya akan mendapatkan akses ke tab yang sedang aktif dibuka pengguna saat mereka mengklik ikon extension Anda. Begitu tab ditutup atau pengguna pindah halaman, akses otomatis terputus.
- declarativeNetRequest: Jika fitur sharing Anda perlu memodifikasi atau memeriksa network request (misalnya menyisipkan header khusus untuk autentikasi API), gunakan API ini. Jangan gunakan webRequest karena webRequest memberikan akses penuh untuk membaca seluruh lalu lintas data pengguna (sangat rawan disalahgunakan menjadi spyware).
- storage: Gunakan permission ini hanya jika Anda perlu menyimpan setting pengguna atau token OAuth secara lokal di browser.
Contoh konfigurasi manifest.json yang aman:
- Tips Secure Coding untuk Extension Chrome
- Hindari XSS dengan Menolak innerHTML dan eval()
- Salah (Rawan XSS): element.innerHTML = tab.title;
- Benar (Aman): element.textContent = tab.title; atau element.innerText = tab.title;
- Jangan pernah menggunakan fungsi eval() atau new Function() untuk mengeksekusi string menjadi kode.
- Jangan Taruh (Hardcode) API Key di Kode Client-Side
- Terapkan Content Security Policy (CSP) yang Ketat
- Lakukan Audit Dependencies (Library Pihak Ketiga)
- Jalankan perintah npm audit secara berkala sebelum melakukan build extension.
- Batasi penggunaan library. Jika fitur sharing Anda sederhana, gunakan JavaScript murni (Vanilla JS) agar Anda memiliki kontrol penuh atas setiap baris kode.
Hindari penggunaan permission global seperti <all_urls> atau *://*/*. Sebaliknya, gunakan daftar permission yang hanya aktif saat dibutuhkan:
{
"manifest_version": 3,
"name": "Secure Page Sharer",
"version": "1.0",
"permissions": [
"activeTab",
"storage"
],
"host_permissions": [
"https://layanan-sharing-anda.com"
]
}
Catatan: Masukkan URL API tujuan Anda di host_permissions secara spesifik, jangan gunakan wildcard domain secara luas.
Extension sharing sering mengambil judul halaman (document.title) atau URL. Jika halaman web yang Anda kunjungi ternyata sengaja disisipi kode jahat pada judulnya, menggunakan innerHTML akan membuat kode jahat tersebut langsung tereksekusi di browser Anda.
Siapa pun bisa membongkar file extension Anda dan membaca kode JavaScript di dalamnya. Jika Anda menaruh API Key media sosial atau database langsung di sana, key tersebut akan bocor.
Solusi: Gunakan alur OAuth2 (menggunakan API chrome.identity) sehingga pengguna masuk menggunakan akun mereka sendiri, atau gunakan Backend Proxy / Serverless Function. Extension Anda mengirim data ke server Anda sendiri, dan server Andalah yang menempelkan API Key rahasia sebelum meneruskannya ke pihak ketiga.
Secara bawaan, Manifest V3 melarang eksekusi skrip eksternal (skrip yang di-host di server luar). Pastikan Anda mempertahankan aturan ini. Semua kode JavaScript harus berada di dalam paket extension Anda sendiri. Jangan pernah memuat library JS langsung dari CDN via tag
<script src="https://example.com..."></script>
Jika Anda menggunakan framework atau library bantuan via NPM, pastikan Anda rajin memeriksa kerentanan kodenya.
Diskusi & Komentar