2 puan yazan GN⁺ 2023-08-15 | 1 yorum | WhatsApp'ta paylaş
  • Little Rat, diğer Chrome uzantılarının ağ çağrılarını izleyen ve isteğe bağlı olarak engelleyen küçük bir Chrome uzantısıdır
  • Diğer uzantıların trafiğini algılamak ve engellemek için chrome://flags/#extensions-on-chrome-urls içindeki extensions-on-chrome-urls bayrağını etkinleştirmek veya Chrome'u --extensions-on-chrome-urls ile çalıştırmak gerekir
  • Manuel kurulum için GitHub ZIP dosyasını indirip açın, Chromium/Chrome Extensions'ta Developer mode'u etkinleştirin ve little-rat-main dizini üzerinden Load unpacked extension adımını kullanın

1 yorum

 
GN⁺ 2023-08-15
Hacker News yorumları
  • Bunun üçüncü taraf bir eklentiden ziyade Firefox ya da Chrome’un yerleşik özelliği olması daha iyi olurdu. Böylece benimsenme oranı yeterince yüksek olur ve diğer tarayıcılar da bunu dikkate alırdı; belirli bir eklenti için, başlıkları değiştiremeyeceği şekilde yalnızca önceden belirlenmiş statik URL’lere GET isteği yapmasına izin vermek isterdim.
    Bu sayede veri güncellemeleri mümkün olurken sızıntı riski de azaltılabilir. Bazı eklentiler yalnızca yerel tarayıcı içinde çalıştığından ağ erişimine hiç ihtiyaç duymaz. Ancak sayfa kaynağını değiştirebiliyorsa veri gönderimini dolanabilir; tarayıcıların bunu bu yüzden yapmadığını düşünüyorum. Yine de pes edip işi Chrome eklentilerine bırakmaktansa denemek daha iyi bence.

    • Sadece gözlemlemek için bile olsa bu mümkün. Geçerli sayfa için olan debugger’ı değil, tarayıcı için olan debugger’ı açmanız gerekiyor.
      UI incelemeyle neredeyse aynı adımlarla uzaktan hata ayıklamayı açıp Browser Toolbox’ı çalıştırmanız yeterli: https://superuser.com/questions/1608096/how-to-inspect-firef...
      Sekme görünümünü temadan öte değiştirmek istediğinizde user-chrome CSS dosyasında ne gerektiğini bulmak için de iyi. Ancak user-chrome CSS kullanmak başlı başına biraz zahmetli.
      Eklenti ağ isteklerinin görünmesi için multi-process mode’a geçmem gerekti; genel olarak mantıklı bir davranış.
      Örneğin test için tıkladığım rastgele bir engelleme listesini uBlock’un çekmesi: https://i.imgur.com/wBYbBM2.png
      Firefox’un kendisinin arka planda safe-browsing listesini güncellemesi: https://i.imgur.com/JYxWwjW.png
    • GET istekleri de yol ve sorgu dizesi parametreleri üzerinden veri sızdırabilir. Bunu bile engelleseniz, zamanlama ya da sıklıkla etkinliği ima eden Mors kodu benzeri bir iletişim kurabilirsiniz; yeterince çok istek varsa megabaytlarca veriyi aktarmak da kolaydır.
    • Bir eklenti, sayfada zaten bulunan bir URL’yi tekrarlamak düzeyinde olmayan HTTP istekleri oluşturduğunda, isteğin gövdesini okunabilir şekilde düzenleyen bir toast bildirimi gösterilmeli bence.
      İyi yapılmış bir eklentide bu bildirim yalnızca ara sıra çıkar; sunucuya ihtiyaç duyan eklentilerde de kullanıcının sunucuyla iletişim beklediği anda çıkar. Tuş vuruşları ya da şüpheli veriler gönderen eklentiler ise çok kolay fark edilir.
    • Hatırladığım kadarıyla eklentiler, manifest’in permissions bölümünde belirtilmeyen URL’lere erişemiyor. Firefox’un izin onay penceresinde bu URL’leri gösterdiğini biliyorum.
      Ancak URL’lerde wildcard kullanılabiliyor ve tüm URL’leri ifade eden özel bir değer de vardı sanırım. Yine de böyle bir izne ihtiyaç duyan eklenti sayısı çok olmamalı.
    • Tarayıcı geliştiricilerinin böyle bir özellik sunmamasının nedeni, hangi korumayı koyarsanız koyun dolanmanın kolay olması olabilir.
      Örneğin eklentinin kendisi istek oluşturamasa bile, web sayfası DOM’unu değiştirme yetkisi varsa web sayfasını onun yerine istek göndermeye kandırmanın birçok yolu var.
  • Bu eklentiyi kurmak çok kolay değil; bu yüzden gerçekten yakalanmış ağ olaylarını gösteren ekran görüntüleri eklenirse iyi olur. Mevcut ekran görüntüleri en ilginç işlevi gizliyor.

    • Google Chrome’u açıp sağ üstteki üç nokta menüsü → Extensions → Manage Extensions → sağ üstte Developer Mode anahtarı → sol üstte “Load Packged” düğmesi → açılmış .zip dizinini yükleyin.
      Ardından normal tarayıcı ekranına dönüp adres çubuğunun sağındaki yapboz parçası eklenti simgesine tıklayın ve Little Rat’in yanındaki küçük raptiye simgesine basın; böylece kurulup eklenti simgeleri listesinde görünür.
  • Harika. Açıkçası bunun mümkün olmasına şaşırdım.
    Bu API’lerin tam olarak hangi verileri sağladığını bilmiyorum ama bir eklenti başka eklentilerin isteklerine erişebiliyorsa, parola yöneticisi eklentileri ya da kimlik doğrulama token’ı kullanan eklentiler için güvenlik endişesi doğmaz mı?

  • Güzel. Böyle bir şeyin chrome:// URL’si olarak bulunması gerekiyormuş gibi geliyor.

    • Eklentiler güvenlik ve gizlilik açısından bu kadar büyük bir riskken bunun neden Chromium’un yerleşik özelliği olmadığı aklıma ilk gelen şeydi.
  • İyi görünüyor; Firefox’a port etme planı var mı merak ediyorum.
    Firefox’ta aynı işi yapan bir alternatif bilen var mı?

  • Chrome Store’a çıkınca deneyeceğim.

    • declarativeNetRequest.onRuleMatchedDebug[0] kullanıyor; bu yalnızca debug amaçlı göründüğü için Chrome Web Store’da kabul edilip edilmeyeceği şüpheli.
      0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
    • Releases bölümüne gidip crx dosyasına sağ tıklayarak kaydedin; sonra Chrome’daki Extensions sayfasına gidip o crx dosyasını sürükleyip bırakın.
  • Neden Chrome Store’da yok?

    • Şu anda incelemede. chrome.declarativeNetRequest kullandığı için; bu, uBlock’un da kullandığı API.
  • Temiz görünüyor ama şu kısım daha dikkatli ele alınmalı: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
    Başka bir eklentinin manipüle edilmiş bir istek, ID ya da ad ile buraya XSS enjekte edip edemeyeceği konusunda endişelenmek istemem.

    • Çok iyi bir nokta; ancak içerik güvenliği politikası unsafe-inline’a izin vermiyor ve eklenti ID’si Chrome tarafından otomatik oluşturuluyor.
  • Ağ çağrısı olmaması tek başına bir eklentinin güvenli olduğunu kanıtlamaz. Gizli tutmak istediğiniz verileri önbelleğe alıp daha sonra periyodik olarak gönderebilir.