1 poin oleh GN⁺ 2025-07-13 | 4 komentar | Bagikan ke WhatsApp
  • Pembaruan MV3 di Chrome menghapus izin webRequestBlocking untuk melemahkan kemampuan adblocker yang ada
  • Penulis menemukan pada 2023 sebuah bug yang memungkinkan mengakali webRequestBlocking bahkan di lingkungan MV3
  • Bug ini terjadi karena struktur binding JavaScript yang rapuh dan kode lama yang masih dibiarkan tetap ada
  • Dengan memanipulasi ID instance WebView, pemeriksaan izin bisa dilewati sehingga fungsi pemblokiran tetap dapat digunakan di lingkungan MV3
  • Saat ini patch sudah diterapkan sehingga metode bypass ini tidak lagi berfungsi

MV3 dan perubahan pada adblocker

  • Chrome secara bertahap menghentikan ekstensi MV2 dan beralih ke MV3
  • MV3 menghapus izin webRequestBlocking, sehingga adblocker tidak lagi bisa memblokir permintaan jaringan secara dinamis lewat skrip
  • Sebagai pengganti izin tersebut, API declarativeNetRequest ditambahkan, tetapi tidak mendukung tingkat fleksibilitas yang sama
  • Perubahan ini menyebabkan kemampuan adblocker menurun secara signifikan

Keterbatasan struktur binding JavaScript

  • Inti Chrome dikembangkan dengan C++, tetapi ekstensi berjalan dengan JavaScript, dan API ekstensi juga diakses melalui JS binding
  • Hingga 2015–2016, API diinisialisasi dan diverifikasi dengan menyisipkan file JS ke situs (modul binding ekstensi)
    • Metode ini rentan terhadap override fungsi global/prototipe JS, sehingga memicu beberapa bug Universal XSS
  • Setelah itu Google memindahkan binding utama ke C++, tetapi sebagian file JS binding masih tersisa
  • Sampai sekarang, API tertentu seperti chrome.webRequest masih menggunakan struktur JS binding

Bypass menggunakan kelas event web request

  • Di MV2, pemblokiran web request bisa diimplementasikan dengan kode berikut

    chrome.webRequest.onBeforeRequest.addListener(() => { return { cancel: true } }, { urls: ['*://*.example.com/*'] }, ['blocking'])
    
  • Di MV3, opsi blocking dilarang sehingga pemblokiran normal tidak memungkinkan

  • Namun, lewat .constructor dari event webRequest, objek event arbitrer dapat dibuat

  • Secara internal, objek event ini dikelola oleh kelas wrapper khusus dari JS binding

  • Jika opt_webViewInstanceId, salah satu parameter konstruktor, ditentukan, maka logika izin khusus aplikasi platform bisa dilewati sehingga pemeriksaan izin blocking dapat dibypass

    let WebRequestEvent = chrome.webRequest.onBeforeRequest.constructor
    let fakeEvent = new WebRequestEvent("webRequest.onBeforeRequest", 0, 0, 0, 1337)
    
    fakeEvent.addListener(() => { return { cancel: true } }, { urls: ['*://*.example.com/*'] }, ['blocking'])
    
  • Awalnya mekanisme ini dirancang agar hanya bisa digunakan oleh aplikasi platform, tetapi karena validasi WebView ID lemah, ekstensi biasa pun dapat menyalahgunakannya

Hasil dan patch keamanan

  • Dengan celah ini, membuat adblocker yang sepenuhnya berfungsi di lingkungan MV3 benar-benar memungkinkan
  • Penulis melaporkan bug ini ke Google pada 2023, dan pada Chrome 118 bug ini ditambal dengan memastikan kepemilikan izin WebView diperiksa dengan benar
  • Tidak ada hadiah bug bounty yang diberikan, karena secara struktural celah ini hanya memungkinkan bypass izin tanpa paparan data tambahan
  • Kasus ini menunjukkan bahwa perubahan kode beberapa puluh baris saja dapat melumpuhkan pembaruan keamanan perusahaan besar

Kesimpulan dan referensi

  • Bug ini sekarang sudah ditambal dan tidak lagi berfungsi
  • Sebagai contoh lain dari kerentanan terkait ekstensi Chrome yang menarik, ada juga kasus yang benar-benar mendapat nomor CVE dan hadiah $10.000 (lihat tulisan blog terpisah)

4 komentar

 
hhcrux 2025-07-14

Mungkin setelah pembaruan itu, pendapatan penyedia adblock justru naik lebih tinggi.
Aplikasi standalone yang memblokir langsung di tingkat jaringan memang hanya bisa dipakai berbayar, jadi kemungkinan terjual cukup banyak.

 
crawler 2025-07-14

Mengunggah kerentanan yang setelah 2 tahun berlalu sudah sama sekali tidak berarti lagi sambil sengaja menyebut tidak dibayar untuk itu... secara pribadi rasanya tidak terlalu keren.
Tapi mungkin hal seperti ini juga memang harus ditulis di blog untuk membuktikan nilai diri sendiri?
Sejujurnya saya juga ingin belajar pola pikir seperti ini dan menulis lebih banyak di blog

 
ndrgrd 2025-07-14

Cukup pakai Firefox. Dalam 1–2 tahun terakhir ini performanya jauh lebih cepat, jadi tidak buruk sama sekali.
Saya sudah bertahun-tahun memakai Firefox sebagai browser utama dan sesekali membandingkannya dengan Chrome, dan terutama belakangan ini saya merasa Firefox sudah cukup layak dipakai.
Bahkan halaman web yang dulu mengabaikan standar web, seperti bank-bank di Korea, belakangan ini sudah banyak diperbaiki sehingga sebagian besar kini juga berfungsi dengan baik di Firefox.
Untuk kustomisasi juga, Firefox jauh lebih mudah.

 
GN⁺ 2025-07-13
Komentar Hacker News
  • Meskipun ingin mencoba Firefox, hambatan terbesarnya adalah bug pemuatan situs web yang kadang muncul, ditambah tidak bisa memasang PWA (Progressive Web Apps). Chrome dan browser turunannya sudah lama mendukung fitur ini, jadi saya tidak begitu paham kenapa Firefox masih belum mengimplementasikannya. Saya memang sempat menemukan ekstensi pihak ketiga (PWAs for Firefox), tetapi saya enggan memakainya dari sisi privasi

  • Sekalipun ada cara untuk mengakali tindakan Google, saya rasa itu bukan arah yang benar. Jika orang tidak setuju dengan langkah Google, satu-satunya cara yang benar adalah meninggalkan Chrome dan semua browser berbasis Chromium. Penting untuk memukul dominasi Google dan merebut kendali mereka atas arah masa depan web

    • Saya rasa monopoli saat ini terjadi karena semua orang melupakan pelajaran yang seharusnya didapat dari IE. Penyebabnya adalah orang tidak mempelajari standar web dan malah membundel Chrome bersama aplikasi mereka
    • Itu bukan inti artikelnya, dan artikel aslinya menyebutkan bahwa cara akal-akalan ini sudah ditambal di Chrome 118
    • Saya jadi ingin menyindir, memangnya pernah ada sesuatu yang benar-benar berubah hanya karena orang bilang "monopoli harus dipukul"?
    • Secara realistis, itu tidak akan terjadi
    • Banyak orang menganggap pindah ke browser Chromium yang sudah dibuang pelacak Google-nya itu tidak cukup, tetapi menurut saya justru itu frame yang diinginkan Google. Firefox jelas berbeda dari Chrome dan tidak mudah dijadikan tujuan migrasi dari Chrome. Sebaliknya, Brave, Chromium kustom, Vivaldi, dan semacamnya pada dasarnya hampir sama dengan Chrome tanpa pelacakan Google. Klaim bahwa "itu tetap tidak boleh karena Google masih mengendalikan Chromium" justru terdengar seperti FUD (fear, uncertainty, doubt) yang layak disebarkan dari sudut pandang Google
  • Jalan akal-akalan yang sesungguhnya adalah memakai Firefox. uBlock Origin bekerja paling baik di Firefox
    uBlock Origin works best on Firefox

    • Karena saya selalu memakai Firefox, saya bahkan tidak sadar hal seperti ini sedang terjadi. Saya baru tahu setelah istri saya bilang dia melihat iklan di YouTube, padahal dulu saya sudah memasangkan uBlock untuknya
  • Saya juga ragu MV3 benar-benar lebih aman daripada MV2 menurut Google. Rasanya pindah ke MV3 tidak secara mendasar membuat keamanan jadi lebih kuat

    • Sejujurnya saya heran kalau benar ada orang yang percaya itu. Artikelnya sendiri dimulai dengan konflik kepentingan yang sangat jelas. Membiarkan sebuah ekstensi mengetahui situs yang dikunjungi pengguna dan informasi permintaan memang jelas menciptakan lingkungan yang rentan. Meski begitu, saya tetap lebih percaya uBO daripada perusahaan iklan dan pengumpul data, jadi saya tetap memakainya begitu saja
  • Tentang kasus seseorang menemukan cara mengakali adblocker lalu memberitahukannya ke Google, ada reaksi seperti, “menemukannya lalu langsung ngadu ke Google, keren sekali”

    • Sebenarnya, kalau adblocker mulai memanfaatkan ini, Google pasti akan langsung menambalnya dan pengembang terkait tidak akan mendapatkan apa pun. Ironisnya, hasil akhirnya tetap sama-sama tidak mendapatkan apa-apa
  • OP melaporkan “isu” yang sama sekali bukan masalah ke Google, sehingga menutup jalan bagi pengembang addon untuk mengakali pembatasan MV3. Semoga itu memang bernilai $0

    • Cara akal-akalan seperti ini paling lama juga akan dihapus Google dalam sehari. Bahkan OP mungkin saja bisa mendapat imbalan uang, jadi menurut saya itu cukup masuk akal untuk dilakukan. Saya tidak ingin menyalahkannya
    • Saya tidak setuju dengan kesimpulan itu. Semua tanggung jawab memang seharusnya ditanggung Google. Kalau OP tidak melaporkannya, saat adblocker lain nanti memakai cara ini pun Google tetap akan segera melarangnya. Bahkan mungkin mereka akan mengambil langkah ekstrem dengan menghapus ekstensi itu langsung dari Web Store
    • Kalau adblocker yang benar-benar dipakai orang sampai mengimplementasikan metode ini, Google tentu akan langsung memblokirnya. Ini bukan semacam cheat tak terbatas yang bisa dipakai selamanya
    • Saya juga berpikir begitu. OP pada dasarnya bekerja gratis untuk perusahaan besar dan hasilnya malah membuat lingkungan web jadi lebih tidak nyaman. Alasannya ya... "demi keamanan," katanya. Hebat sekali
  • Sejak mulai memakai Brave, saya sama sekali tidak merindukan Chrome
    Brave

    • Menurut saya justru Brave lebih merepotkan daripada Chrome. Terlepas dari masalah Brendan Eich, browser itu penuh dengan fitur-fitur arbitrer, pemblokiran iklan (Brave Shields) yang bahkan tidak bisa dimatikan sepenuhnya, unsur terkait kripto, tombol unduhan web app yang tidak bisa dinonaktifkan, UI yang tidak bisa dihapus, dan banyak sampah lain
    • Brave tetaplah perusahaan komersial, dan secara bawaan punya terlalu banyak fitur yang tidak perlu sehingga wajar jika orang merasa enggan. Namun, ada juga cukup banyak konten tips seperti "Cara diet Brave" untuk merampingkan pengaturannya
    • Mesinnya pada akhirnya tetap Blink, jadi ini hanya seperti mengganti tampilan luar. Saya belum pernah melihat browser Blink yang benar-benar terus mempertahankan Manifest V2. Kalaupun ada, itu hanyalah soft fork dan tidak akan bertahan lama
    • Brave pada akhirnya juga berbasis Chromium, jadi pada dasarnya tetap sama dengan Chrome. Manifest V3 pada akhirnya tetap akan berlaku
    • Ada juga sudut pandang kritis yang mengatakan sebaiknya tidak memakai browser Brave
      Stop using Brave browser
  • Menanggapi klaim bahwa "adblocker mutlak membutuhkan webRequestBlocking, dan karena Google menghasilkan uang dari iklan maka penghapusan fitur itu sangat disengaja," ada juga pendapat yang mengatakan, "itu tidak benar; siapa pun bisa memakai uBlock Origin Lite di Chrome dan manifest v3, performanya bagus dan saya tidak merasakan perbedaan dengan uBlock Origin biasa. Semuanya difilter di C++ sehingga jauh lebih cepat. Memang ada batas maksimum rule, tetapi untuk sekarang masih sangat memadai"

    • Tetap saja, Lite itu Lite, jadi kemampuannya memang terbatas. Karena dari sananya bukan adblocker yang sama persis, hasilnya juga tidak akan sepenuhnya sama
  • Selain laptop kerja, saya hampir tidak pernah memakai Chrome, dan sehari-hari tetap menggunakan Firefox. Meski begitu, saya tetap merasa sayang karena tidak bisa memakai uBlock Origin untuk kegiatan browsing kerja seperti riset dan dokumen

  • Kalau cuma ingin jalan akal-akalan, tinggal pasang Firefox saja

    • Menurut saya Firefox kurang bagus, baik sebagai browser maupun sebagai basis. Sayang sekali Zen tidak memakai Chromium