1 puan yazan GN⁺ 2025-07-13 | 4 yorum | WhatsApp'ta paylaş
  • Chrome'un MV3 güncellemesi, mevcut reklam engelleyicilerin işlevini zayıflatmak için webRequestBlocking iznini kaldırıyor
  • Yazar, MV3 ortamında da webRequestBlocking'i aşmaya imkân veren bir hatayı 2023'te keşfetti
  • Bu hata, JavaScript binding'lerinin gevşek yapısı ve eski kodun olduğu gibi kalmış olması nedeniyle ortaya çıktı
  • WebView instance ID'sini manipüle ederek izin kontrolü aşılabildiği için MV3 ortamında da engelleme işlevi kullanılabiliyordu
  • Şu anda yama uygulanmış durumda ve bu aşma yöntemi artık çalışmıyor

MV3 ve reklam engelleyicilerdeki değişim

  • Chrome, MV2 eklentilerini kademeli olarak kaldırıyor ve bunun yerine MV3'e geçiş yapıyor
  • MV3, webRequestBlocking iznini kaldırarak reklam engelleyicilerin ağ isteklerini script ile dinamik biçimde engellemesini önlüyor
  • Bu iznin yerine declarativeNetRequest API'si eklendi, ancak aynı düzeyde esneklik sunmuyor
  • Bu değişim nedeniyle reklam engelleyicilerin performansında büyük bir düşüş yaşanıyor

JavaScript binding yapısının sınırları

  • Chrome'un çekirdeği C++ ile geliştirilse de eklentiler JavaScript ile çalışır ve genişletme API'lerine de JS binding'leri üzerinden erişilir
  • 2015~2016'ya kadar API'ler, siteye JS dosyaları (eklenti binding modülleri) enjekte edilerek başlatılıyor ve doğrulanıyordu
    • Bu yöntem, JS global fonksiyonları ve prototype override'larına karşı savunmasız olduğu için birden fazla Universal XSS açığına yol açtı
  • Sonrasında Google, ana binding'lerin çoğunu C++ tarafına taşıdı, ancak bazı JS binding dosyaları hâlâ duruyor
  • Bugün bile chrome.webRequest gibi bazı API'ler JS binding mimarisini kullanıyor

Web request event sınıfını kullanarak aşma

  • MV2'de web request engelleme aşağıdaki kodla uygulanabiliyordu

    chrome.webRequest.onBeforeRequest.addListener(() => { return { cancel: true } }, { urls: ['*://*.example.com/*'] }, ['blocking'])
    
  • MV3'te blocking seçeneği yasaklandığı için normal yoldan engelleme mümkün değil

  • Ancak webRequest event'inin .constructor özelliği üzerinden keyfi event nesneleri oluşturulabiliyor

  • Dahili olarak, JS binding'lerindeki özel wrapper sınıfı bu event nesnelerini yönetiyor

  • Constructor parametrelerinden biri olan opt_webViewInstanceId verildiğinde, platform uygulamalarına özel izin mantığı aşılabiliyor ve böylece blocking izni kontrolü atlatılabiliyordu

    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'])
    
  • Aslında yalnızca platform uygulamaları için tasarlanmıştı, ancak WebView ID doğrulaması yetersiz olduğu için sıradan eklentiler tarafından kötüye kullanılabiliyordu

Sonuç ve güvenlik yaması

  • Bu açık sayesinde MV3 ortamında da tam işlevli bir reklam engelleyici geliştirmek gerçekten mümkündü
  • Yazar, ilgili hatayı 2023'te Google'a bildirdi ve açık Chrome 118'de WebView izninin gerçekten o uzantıya ait olup olmadığını doğru şekilde kontrol ederek yamandı
  • Herhangi bir ödül verilmedi; bunun nedeni, ek veri ifşası olmadan yalnızca izin aşımına imkân tanıyan yapısal özellikti
  • Bu örnek, birkaç onlarca satırlık kod değişikliğinin büyük bir şirketin güvenlik güncellemesini etkisiz hâle getirebileceğini gösteriyor

Sonuç ve referans

  • Hata şu anda yamalanmış durumda ve artık çalışmıyor
  • Benzer şekilde ilginç bir Chrome eklentisi güvenlik açığı örneği olarak, gerçekten CVE numarası ve 10.000 $ ödül alan bir vaka da mevcut (ayrı blog yazısına bakın)

4 yorum

 
hhcrux 2025-07-14

Muhtemelen o güncellemeden sonra reklam engelleyici şirketlerin gelirleri daha da arttı.
Ağı doğrudan ağ katmanında engelleyen bağımsız uygulamalar ise yalnızca ücretli kullanılabildiği için epey satmış olmalı.

 
crawler 2025-07-14

2 yıl geçmiş ve artık hiçbir anlamı kalmamış bir açığı paylaşırken bir de özellikle para almadığını söylemesi... Bana pek cool gelmedi açıkçası
Ama herhalde insan ancak böyle şeyleri bloga yazarak kendi değerini kanıtlayabiliyor, değil mi?
Ben de samimiyetle bu zihniyeti öğrenip bloga bol bol yazı yazmak isterdim

 
ndrgrd 2025-07-14

Sadece Firefox kullanın. Son 1-2 yılda epey hızlandı, artık hiç de fena değil.
Ben yıllardır ana tarayıcı olarak Firefox kullanıyorum ve ara sıra Chrome ile karşılaştırıyorum; özellikle son dönemde Firefox’un fazlasıyla kullanılabilir olduğunu düşünüyorum.
Kore’deki bankalar gibi web standartlarını göz ardı eden web sayfaları da son zamanlarda büyük ölçüde düzeltildi, bu yüzden artık çoğu Firefox’ta da iyi çalışıyor.
Özelleştirme tarafı da Firefox’ta çok daha kolay.

 
GN⁺ 2025-07-13
Hacker News görüşleri
  • Firefox'u denemek istememe rağmen, ara sıra yaşanan web sitesi yükleme hataları ve PWA'leri (Progressive Web Apps) kuramamak en büyük engel. Chrome ve türevi tarayıcılar bu özelliği uzun zamandır destekliyor; Firefox'un bunu hâlâ neden hayata geçirmediğini bilmiyorum. Üçüncü taraf bir eklenti (PWAs for Firefox) buldum ama gizlilik açısından kullanmaya çekiniyorum

  • Google'ın davranışını aşmanın bir yolu olsa bile bunun doğru yön olduğunu düşünmüyorum. İnsanlar Google'ın yaptıklarına katılmıyorsa, yapılacak tek doğru şey Chrome'u ve Chromium tabanlı tüm tarayıcıları bırakmaktır. Google'ın tekeline darbe vurup web'in gelecekteki yönü üzerindeki hakimiyetini elinden almak önemli

    • Bugünkü tekelin sebebi, herkesin IE'den çıkarılması gereken dersi unutmuş olması. Web standartlarını öğrenmek yerine uygulamalarla birlikte Chrome'u paketleyip dağıtmak buna yol açtı
    • Yazının ana fikri bu değil; asıl yazıda bu yöntemin Chrome 118'de yamandığı belirtiliyor
    • “Tekele darbe vurmak lazım” demekle gerçekten bir şey değişmiş gibi mi, diye alay etmek istiyorum
    • Gerçekçi olarak bunun olması pek mümkün değil
    • Pek çok kişi, Google takip özellikleri kaldırılmış Chromium tarayıcılarına geçmenin yeterli olmadığını düşünüyor ama bence bu tam da Google'ın istediği çerçeve. Firefox, Chrome'dan belirgin biçimde farklı ve Chrome'dan geçiş kolay değil. Buna karşılık Brave, özelleştirilmiş Chromium, Vivaldi gibi seçenekler Google takibi olmayan Chrome kadar benzer. “Google hâlâ Chromium'u kontrol ettiği için olmaz” iddiası, bence Google açısından yayılması faydalı bir FUD (korku, belirsizlik, şüphe)
  • Gerçek çözüm Firefox kullanmak. uBlock Origin en iyi Firefox'ta çalışıyor
    uBlock Origin works best on Firefox

    • Ben hep Firefox kullandığım için bunun yaşandığını bile fark etmemiştim. Eşimin YouTube'da reklam gördüğünü söylemesi üzerine baktım; daha önce ona uBlock kurmuş olmama rağmen durum buydu
  • Google'ın MV3'ün gerçekten MV2'den daha güvenli olup olmadığı da şüpheli. MV3'e geçmenin özünde güvenliği artırdığını sanmıyorum

    • Dürüst olmak gerekirse buna gerçekten inanan biri var mı diye şaşırıyorum. Yazı zaten bariz bir çıkar çatışmasıyla başlıyor. Bir eklentinin kullanıcının ziyaret ettiği siteleri ve istek bilgilerini bilmesine izin vermek açıkça zayıf bir ortam yaratıyor. Yine de reklam şirketleri ve veri toplayıcılardan daha çok uBO'ya güvendiğim için kullanmaya devam ediyorum
  • Birinin adblocker geçici çözümünü bulup Google'a bildirmesi hakkında, “Bulup hemen Google'a ispiyonluyor, harika” diye tepki verenler var

    • Aslında bir adblocker bunu kullanmaya başlasaydı Google hemen yamalardı ve ilgili geliştirici de hiçbir kazanç elde edemezdi. Sonuçta yine hiçbir şey kazanılmayacak olması ironik
  • OP, Google'a aslında sorun olmayan bir “issue” bildirerek eklenti geliştiricilerinin MV3 kısıtlarını aşma yolunu kapattı. Umarım değeri $0 değildir

    • Böyle bir geçici çözüm en fazla bir gün içinde Google tarafından kaldırılırdı. Hatta OP maddi ödül bile alabilirdi; bence bunu yapması anlaşılabilir. Suçlamak istemem
    • Bu sonuca katılmıyorum. Tüm sorumluluk Google'a ait. OP bunu bildirmeseydi, daha sonra başka bir adblocker bu yöntemi kullansa bile Google muhtemelen hızla yasaklayacaktı. Hatta belki ilgili eklentiyi Web Store'dan tamamen kaldırmak gibi daha uç bir adım da atabilirdi
    • İnsanların gerçekten kullandığı bir adblocker bunu uygulasaydı, Google elbette anında engellerdi. Sonsuza kadar kullanılabilecek bir hile değil
    • Ben de aynı fikirdeyim. OP büyük bir şirket için bedavaya çalışmış oldu ve sonuçta web'i daha kullanışsız hale getirdi. Sebep de herhalde... “güvenlik”. Müthiş
  • Brave kullanmaya başladıktan sonra Chrome'u hiç aramıyorum
    Brave

    • Hatta Brave bana Chrome'dan daha rahatsız edici geliyor. Brendan Eich meselesi bir yana, tarayıcının içine doldurulmuş türlü rastgele özellikler, reklam engellemeyi (Brave Shields) tamamen kapatamama, kripto para unsurları, kapatılamayan web uygulaması indirme düğmesi, kaldırılamayan arayüz parçaları derken fazla çöp var
    • Brave sonuçta yine kâr amaçlı bir şirket ve varsayılan olarak gereksiz özelliklerle aşırı dolu olması insanı soğutuyor. Yine de "Brave nasıl zayıflatılır" gibi ayarları sadeleştirme ipuçları veren içerikler de az değil
    • Motor sonuçta Blink, yani sadece dış görünüş değişmiş oluyor. Manifest V2'yi sürdürmeye devam eden bir Blink tarayıcısı görmedim. Olsa bile bu bir soft fork olur ve uzun süre dayanmaz
    • Brave de en nihayetinde Chromium tabanlı; yani fiilen Chrome'la aynı şey. Manifest V3 sonunda oraya da gelecek
    • Brave tarayıcısını kullanmamayı savunan eleştirel bir bakış da var
      Stop using Brave browser
  • “adblocker'ların webRequestBlocking'e mutlaka ihtiyacı var, Google reklamdan para kazandığı için bu özelliği kaldırması son derece kasıtlı” iddiasına karşı, “Bu doğru değil; herkes Chrome ve manifest v3 üzerinde uBlock Origin Lite kullanabilir, performansı iyi ve eski uBlock Origin'den farkını hissetmiyorum. Her şey C++ içinde filtrelendiği için çok daha hızlı. Elbette kural üst sınırı var ama şu anda gayet yönetilebilir düzeyde” diyenler de var

    • Ama Lite sonuçta Lite; bu yüzden imkanları sınırlı. Zaten baştan tam teşekküllü bir adblocker olmadığı için tamamen aynı değil
  • İş dizüstü bilgisayarım dışında Chrome kullanmıyorum; günlük hayatta Firefox kullanmaya devam ediyorum. Yine de iş için web'de gezinirken (araştırma, belgeler vb.) çok yardımcı olan uBlock Origin'i artık kullanamamak üzücü

  • Sadece bir geçici çözüm istiyorsanız Firefox kurmanız yeterli

    • Bence Firefox ne web tarayıcısı olarak ne de temel olarak pek iyi değil. Zen'in Chromium kullanmaması üzücü