2 poin oleh GN⁺ 2023-08-15 | 1 komentar | Bagikan ke WhatsApp
  • Little Rat adalah ekstensi Chrome kecil yang memantau dan secara opsional memblokir panggilan jaringan dari ekstensi Chrome lain
  • Deteksi dan pemblokiran trafik dari ekstensi lain hanya dimungkinkan jika flag extensions-on-chrome-urls di chrome://flags/#extensions-on-chrome-urls diaktifkan atau Chrome dijalankan dengan --extensions-on-chrome-urls
  • Instalasi manual menggunakan prosedur mengunduh ZIP GitHub, mengekstraknya, mengaktifkan Developer mode di Chromium/Chrome Extensions, lalu memilih Load unpacked extension pada direktori little-rat-main

1 komentar

 
GN⁺ 2023-08-15
Komentar Hacker News
  • Saya berharap ini menjadi fitur bawaan Firefox atau Chrome, bukan ekstensi pihak ketiga. Dengan begitu tingkat adopsinya cukup tinggi sehingga browser lain juga akan memperhatikannya; saya ingin bisa mengizinkan ekstensi tertentu hanya melakukan request GET ke URL statis yang sudah ditentukan, tanpa bisa mengubah header
    Dengan cara ini pembaruan data tetap memungkinkan, sementara risiko kebocoran berkurang. Ada juga ekstensi yang hanya bekerja di dalam browser lokal, jadi sama sekali tidak memerlukan akses jaringan. Namun kalau ekstensi bisa memodifikasi source halaman, ia bisa melewati batasan pengiriman data, jadi sepertinya itu alasan browser tidak melakukannya. Meski begitu, menurut saya lebih baik dicoba daripada menyerah dan menyerahkannya ke ekstensi Chrome

    • Untuk sekadar mengamati pun sebenarnya bisa. Yang perlu dibuka bukan debugger untuk halaman saat ini, melainkan debugger untuk browser
      Prosedurnya hampir sama seperti inspeksi UI: aktifkan remote debugging lalu jalankan Browser Toolbox: https://superuser.com/questions/1608096/how-to-inspect-firef...
      Ini juga berguna untuk mencari tahu apa yang dibutuhkan di file CSS user-chrome ketika ingin mengubah tampilan tab lebih dari sekadar tema. Hanya saja penggunaan CSS user-chrome sendiri agak merepotkan
      Agar request jaringan ekstensi terlihat, saya harus mengubahnya ke multi-process mode, dan secara umum perilakunya masuk akal
      Misalnya, uBlock mengambil daftar blokir acak yang saya klik untuk pengujian: https://i.imgur.com/wBYbBM2.png
      Firefox sendiri memperbarui daftar safe-browsing di background: https://i.imgur.com/JYxWwjW.png
    • Request GET pun bisa membocorkan data lewat path dan parameter query string. Bahkan jika itu juga diblokir, ekstensi masih bisa membuat komunikasi seperti kode Morse yang mengisyaratkan aktivitas lewat waktu atau frekuensi; jika request-nya cukup banyak, data berukuran megabyte pun mudah dikirim
    • Jika ekstensi membuat HTTP request yang bukan sekadar mengulang URL yang sudah ada di halaman, menurut saya browser perlu menampilkan notifikasi toast yang merapikan isi request agar mudah dibaca
      Ekstensi yang dibuat dengan baik hanya akan memunculkan notifikasi sesekali, dan ekstensi yang membutuhkan server akan memunculkannya pada saat pengguna memang memperkirakan ada komunikasi dengan server. Ekstensi yang mengirim penekanan tombol atau data mencurigakan akan sangat mudah terlihat
    • Sepingat saya, ekstensi tidak bisa mengakses URL yang tidak ditentukan di bagian permission manifest. Setahu saya Firefox menampilkan URL-URL itu di dialog konfirmasi permission
      Namun URL bisa memakai wildcard, dan sepertinya ada juga nilai khusus yang berarti semua URL. Meski begitu, seharusnya tidak banyak ekstensi yang membutuhkan permission seperti itu
    • Alasan pembuat browser tidak menyediakan fitur semacam ini mungkin karena perlindungan apa pun mudah diakali
      Misalnya, meskipun ekstensi itu sendiri tidak bisa membuat request, jika ia punya izin untuk memodifikasi DOM halaman web, ada banyak cara untuk menipu halaman web agar mengirim request sebagai gantinya
  • Ekstensi ini tidak terlalu mudah dipasang, jadi akan bagus jika ditambahkan screenshot yang menampilkan event jaringan yang benar-benar tertangkap. Screenshot saat ini justru menutupi fitur yang paling menarik

    • Buka Google Chrome, menu tiga titik di kanan atas → Extensions → Manage Extensions → aktifkan toggle Developer Mode di kanan atas → tombol “Load Packged” di kiri atas → muat direktori .zip yang sudah diekstrak
      Setelah itu kembali ke tampilan browser biasa, klik ikon ekstensi berbentuk kepingan puzzle di kanan address bar, lalu klik ikon pin kecil di samping Little Rat; ekstensi akan terpasang dan muncul di daftar ikon ekstensi
  • Keren. Jujur, saya terkejut ini bisa dilakukan
    Saya tidak tahu persis data apa yang disediakan API ini, tetapi jika sebuah ekstensi bisa mengakses request ekstensi lain, bukankah itu bisa menimbulkan kekhawatiran keamanan untuk ekstensi password manager atau ekstensi yang memakai token autentikasi?

  • Bagus. Rasanya hal seperti ini semestinya tersedia sebagai URL chrome://

    • Karena ekstensi merupakan risiko sebesar ini dari sisi keamanan dan privasi, hal pertama yang terpikir oleh saya adalah kenapa ini bukan fitur bawaan Chromium
  • Kelihatannya bagus, saya penasaran apakah ada rencana porting ke Firefox
    Ada yang tahu alternatif yang melakukan hal serupa di Firefox?

  • Kalau sudah masuk Chrome Store, saya akan mencobanya

    • Mereka memakai declarativeNetRequest.onRuleMatchedDebug[0], dan ini terlihat khusus untuk debug, jadi saya ragu apakah akan diizinkan di Chrome Web Store
      0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
    • Buka Releases, klik kanan file crx lalu simpan, kemudian buka Extensions di Chrome dan drag-and-drop file crx itu
  • Kenapa tidak ada di Chrome Store?

    • Saat ini sedang dalam peninjauan. Alasannya karena menggunakan chrome.declarativeNetRequest, yaitu API yang juga digunakan uBlock
  • Rapi, tetapi bagian ini perlu ditangani dengan lebih hati-hati: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
    Saya tidak ingin perlu khawatir apakah ekstensi lain bisa menyuntikkan XSS di sini lewat request, ID, atau nama yang dimanipulasi

    • Poin yang sangat bagus, tetapi Content Security Policy tidak mengizinkan unsafe-inline, dan ID ekstensi dibuat otomatis oleh Chrome
  • Fakta bahwa tidak ada panggilan jaringan tidak membuktikan bahwa sebuah ekstensi aman. Ekstensi bisa saja menyimpan data yang ingin Anda rahasiakan di cache, lalu mengirimkannya secara berkala