1 puan yazan GN⁺ 18 일 전 | 1 yorum | WhatsApp'ta paylaş
  • Mozilla’nın Add-ons API’si kullanılarak 84.000’den fazla Firefox uzantısının tamamının toplanıp kurulduğu büyük ölçekli bir deney gerçekleştirildi
  • Scraping yoluyla 84.235 benzersiz uzantı elde edildi, toplam boyut 49,3 GB, veri kümesi Hugging Face’te yayımlandı
  • Kurulum sürecinde oltalama, spam, PUA (potansiyel olarak istenmeyen uygulama) gibi çeşitli kötü amaçlı uzantıların çok sayıda olduğu ortaya çıktı
  • Sonuçta 84.194 uzantının kurulması başarıldı ancak tarayıcının pratikte kullanılamaz durumda olduğu görüldü
  • Deney, Firefox uzantı ekosisteminin ölçeğini, kalitesini ve güvenlik sorunlarını topluca ortaya koyan bir vaka olarak değerlendiriliyor

Tüm Firefox uzantılarını kurma deneyi

  • Firefox için 84.000’den fazla uzantının tamamını toplama, analiz etme ve kurma üzerine büyük ölçekli bir deney
  • Mozilla’nın açık Add-ons API’si üzerinden tüm uzantı listesi scrape edildi ve gerçek kurulum da yapıldı
  • Veri kümesi Hugging Face üzerinde yayımlandı ve herkesin erişimine açık
  • Birkaç denemenin ardından 84.194 uzantı başarıyla kuruldu, ancak tarayıcı pratikte kullanılamaz hale geldi
  • Deney sayesinde uzantı ekosisteminin ölçeği, kalitesi, kötü amaçlı uzantılar, spam ve PUA’lar (potansiyel olarak istenmeyen uygulamalar) görünür hale geldi

Firefox uzantılarını scrape etme

  • Mozilla’nın addons-server API’si kimlik doğrulama olmadan erişilebiliyor ve search uç noktasıyla uzantı listesi sayfa sayfa sorgulanabiliyor
  • Varsayılan sıralama (recommended,users) ile yalnızca yaklaşık 30.000 uzantı görülebildiği için, eksik uzantıları bulmak adına created, rating, hotness, updated gibi çeşitli sıralama seçenekleri birlikte kullanıldı
  • exclude_addons parametresi kullanılarak 600. sayfadan sonraki uzantılar da ek olarak toplandı
  • Kategori bazında paralel isteklerle toplam 84.235 benzersiz uzantı elde edildi; ortalama boyut 584,9 KB, toplam boyut 49,3 GB
  • Nihai veri kümesi Hugging Face’e yüklenerek yayımlandı
  • 11 Nisan 2026 güncellemesinde, created__gte ve created__lte filtreleri kullanılarak doğru ve verimli tam scraping gerçekleştirildi

Firefox uzantılarının analizi

  • En büyük uzantı dmitlichess (196,3 MB) oldu ve 2000’den fazla ses dosyası içeriyor
    • İlk 10 uzantının çoğu AI modelleri, Unity uygulamaları, görsel kaynaklar gibi büyük içerikler barındırıyor
  • En küçük uzantı theTabs-saver (7,5 KB) ve kod içermiyor
  • En düşük puanlı uzantı Tab Stack for Firefox
  • En eski uzantı Web Developer
  • En fazla ekran görüntüsüne sahip uzantı RDS Bar (54 adet)
  • En çok izin isteyen uzantı FalscheLaden (3.695 izin isteği), ardından Google Dark Theme (2.675 adet)
  • En çok uzantı yayımlayan geliştirici Dr. B (84 uzantı); çoğunda README var, simge yok
  • Oltalama ve kötü amaçlı uzantılar

    • Veri kümesinde çok sayıda kripto cüzdanı oltalama uzantısı bulundu
      • Örnek: “Іron Wаllеt”, kurulumdan 3 saniye sonra NocoDB’den URL alıp oltalama sayfasına yönlendiriyor
      • Bazı uzantılar seed ifadesini alıp sunucuya gönderiyor
    • Bildirimin ardından ertesi gün Mozilla tarafından çoğu kaldırıldı
    • Yazma iznine sahip API anahtarı örnekleri de bulundu ve veri silme işlemi doğrudan yapıldı
  • SEO spam uzantıları

    • Uzantı sayfasındaki “Homepage” bağlantısı backlink amacıyla kötüye kullanılıyor
    • Typo Sniper, Tab Fortune Teller gibi AI ile üretilmiş uzantılar kumarhane sitelerine yönlendiriyor
    • “Code Injector” türü çok sayıda uzantı bulunuyor; aynı kod yapısı ve rastgele alan adları kullanılıyor
    • Çoğunun 2025’te oluşturulduğu görüldü
  • PUA (potansiyel olarak istenmeyen uygulama) uzantıları

    • “Custom Web Search” desenine sahip 20’den fazla uzantı bulundu; toplam kullanıcı sayısı 700 binden fazla
    • Hepsi aynı yapı ve alan adlarını kullanıyor, ayrıca “Innover Online Group Ltd” belirtiliyor
    • Mozilla bunların bir kısmını (115.000 kullanıcılı olanlar dahil) devre dışı bıraktı
    • Yahoo ortaklık kodu safeplexsearch kullanılıyor ve Firefox’a özel sürüm de mevcut
    • Benzer şirket Atom Apps de aynı yöntemle uzantı dağıttı; toplam 220 bin günlük kullanıcıya ulaştı
  • İstatistik özeti

    • Uzantıların %34,3’ünün günlük kullanıcısı 0
      • 10’dan fazla kullanıcıya sahip olanlar: %25,1, 100’den fazla: %10,6, 1.000’den fazla: %3,2, 10.000’den fazla: %0,7
    • %76,7 açık kaynaklı (SPDX lisansına göre)
    • %23’ü yazı yayımlandıktan sonra oluşturulmuş uzantılar
      • Bunların %19’unda kullanıcı, inceleme, simge ve indirme verisi yok
    • %2,4 ücretli uzantı, bunların %38,1’i açık kaynaklı

Tüm uzantıları kurma girişimi

  • Her uzantının .xpi dosyası profil klasörüne GUID adıyla kaydedildi ve extensions.json düzenlendi
  • addonStartup.json.lz4 silinip extensions.json üzerinde oynanarak otomatik etkinleştirme yapıldı
  • Deneme 0: 65.335 adet (Windows VM)

    • Enterprise Policy yöntemiyle kurulum denendi ancak bellek yetersizliği ve sistem kilitlenmesi yaşandı
  • Deneme 1: yaklaşık 1.000 adet

    • Doğrudan indirip elle yerleştirme yapıldı, kurulum başarılı oldu
    • Bazı uzantılar tüm metni belirli bir dizgeyle değiştirdi
    • Çok sayıdaki güvenlik uzantısı nedeniyle alan adı engelleme ve uyarı pencereleri sık görüldü
  • Deneme 2: 65.335 adet

    • addonStartup.json.lz4 silinmediği için gerçekte etkinleşen uzantı sayısı yaklaşık 1.000’de kaldı
    • about:addons görüntülenirken Firefox dondu ve yeniden başlatılamadı
  • Deneme 3: 65.335 adet (Mac)

    • Paralel indirme sırasında hız düştü, toplam 6 saat sürdü
    • Firefox açıldığında yanıt vermedi, extensions.json boyutu 144 MB oldu
    • Disk yazma miktarı 400 GB’tan fazlaya çıktı
  • Deneme 4~10: 1.000~6.000 adet

    • 3.000 adede kadar web sayfaları yüklenebildi
    • 4.000’den sonra tüm siteler engellenmeye başladı, 6.000’de yalnızca about:addons yüklenebildi
  • Deneme 11: 84.194 adet (6 ay sonra)

    • Sanal makine (VM), 16~24 GB RAM ortamında kullanıldı
    • İndirme 1 saat 43 dakika sürdü, bazı uzantılar Defender tarafından algılandı
    • Firefox açılırken extensions.json 189 MB’a kadar büyüdü ve 39 dakika sonra zorla kapatıldı
    • Sonrasında enable.js çalıştırılarak yeniden denendi
    • Launch 1~3 sonuçları

      • Launch 1: Görüntüleme olmadan 39 dakika beklendi, sonra durduruldu
      • Launch 2: Tarayıcı göründü ama 3 dakika içinde çöktü
      • Launch 3: Uzun bekleyişten sonra başarıyla kararlı hale geldi, 84.194 uzantının yüklendiği doğrulandı

Tüm uzantıları kullanma testi

  • about:addons

    • Ayar sayfası yüklenemedi, indeks sayfası 6 saat sonra tamamen yüklendi
    • Bellek kullanımı 27~37 GiB seviyesinde kaldı
    • Simgeler görünmedi, yanıt gecikmesi çok şiddetliydi
  • about:support

    • Toplam 84.205 uzantı gösterildi ancak buna yerleşik uzantılar da dahildi
    • Gerçekte kurulu harici uzantı sayısının 84.194 olduğu doğrulandı
  • about:preferences

    • Çok sayıda New Tab seçeneği göründü, çakışmalar ve çökmeler yaşandı
  • New Tab

    • Yalnızca Firefox Home düzgün yüklendi, diğer uzantıların tamamı başarısız oldu
  • moz-extension

    • buyPal uzantısı sekmeyi otomatik olarak devraldı ve düzgün yüklenen tek uzantı oldu
    • Ardından Firefox yeniden çöktü
  • example.com

    • 24 saat beklenmesine rağmen sayfa yüklenmedi, çok sayıda engelleyici uzantı olduğu tahmin ediliyor
  • about:telemetry

    • Environment Data’ya tıklanınca anında çökme yaşandı

Kullanılabilirlik değerlendirmesi

  • İmkansız
  • Firefox, 84.000 uzantı kurulu durumdayken pratikte çalışamaz hale geliyor

Ek inceleme önerileri

  • about:addons’un 6 saatte yüklenmesinin ve example.com’un hiç açılmamasının nedenlerini analiz etme
  • .xpi destekleyen Kagi Orion, GNOME Web gibi diğer tarayıcılarda deney yapma
  • 500 binden fazla tema ya da tüm kullanıcı betikleri ve stillerini kurma deneyleri
  • Tüm Chrome Web Store uzantılarını kurmak ölçek nedeniyle imkansız

Dipnot özeti

  • Toplam 8 uzantı scraping sırasında kaçırıldı veya silindi
  • 2025 Eylül’ünde yazılan ilk sürümden sonra sayılar 2026 Nisan’ında güncellendi
  • “Foreshadowing”, edebi bir önseme tekniği olarak anılıyor

1 yorum

 
GN⁺ 18 일 전
Hacker News yorumları
  • "Middle Finger Emoji Sticker" ödülünü almış
    Süreci kısaca özetleyip blogunda paylaşmış
    Aslına buradan ulaşılabilir

  • Eski Internet Explorer araç çubuğu savaşlarını hatırlatıyor
    İnternet kafelerde Ask.com, Google, Yahoo, sonrasında da Bing araç çubuklarından en az ikisinin kurulu olduğu günleri hatırlıyorum

  • Bunun neden bu kadar uzun sürdüğünü araştırmış
    13 yıl önce extensions.json değil, extensions.sqlite varmış
    Şimdi yapı, tüm dosyayı her 20ms'de bir serileştirip yeniden yazıyor; bu 15 eklenti için sorun değil ama 84.194 tane olunca problem oluyor
    Bu debounce değerinin nasıl belirlendiğini merak ediyorum. Hangi eklentinin extensions.json dosyasını saniyede birkaç kez yazdığı şüpheli

  • Gerçekte sayfaların hiçbiri düzgün açılmıyor ama yazının kendisini okumak gerçekten çok eğlenceliydi
    “crash reporting'i açtım” kısmında uzun süre güldüm. Mozilla ekibi açısından korku hikayesi gibi olmalı

    • Firefox crash report'ları herkese açık
      Yine de yazarın yüklediğini bulamadım. crash-stats.mozilla.org üzerinden görülebilir
      Profil hâlâ duruyorsa bu rehber ile crash ID bulunabilir
  • Yazı gerçekten acayip ama harika
    Özellikle about: sayfalarından bir veya birkaçında performans bug'ı bulmuş olması etkileyiciydi. Kesinlikle takip edilmesi gereken bir konu

  • Eklenti listesi site haritası olarak da görülebiliyor
    Firefox Add-ons sitemap,
    Chrome Web Store sitemap,
    Edge sitemap da incelenebilir

  • Video o kadar komik ki gözümden yaş geldi
    Bilgisayardan pek anlamayan yaşlı birinin internette gezinmesi herhalde böyle bir şeydir. Keşke biri aynısını Chrome için de yapsa

    • Yazarın 30 saniye boyunca art arda bastığı sahte eklenti düğmesinin aslında bir eklentinin oluşturduğu düğme olduğunu fark etmesi çok komikti. Hem de üç taneymiş
    • Bana göre en komik kısım metal boru sesi efektiydi. Hangi eklentinin bunu eklediğini merak ediyorum
    • Bu gerçekten efsanevi bir bug report olacak gibi duruyor
    • Hiçbir şey bilmeyen biri bütün açılır pencerelerde “evet/kabul et/onayla”ya basarsa sonuç ancak böyle olur
    • Videonun nerede olduğunu bulamadım. Aşağı kaydırdım ama sadece sabit görseller gördüm
  • “Bu servis mesh bizim kullanımımız için gereğinden fazla tasarlanmıştı ama broker 84.205 mikroservis için fazla yavaş kalıyor”
    Bu bitmeyen gerilim çok tanıdık geliyor

  • Tüm NPM paketlerine bağımlı olan o efsanevi NPM paketini hatırlattı
    İlgili yazı gerçekten çok komik

  • “Bununla neredeyse tüm eklentileri kurunca, daha önce yaptığım her şey aptalca görünmeye başladı” sözüne çok katılıyorum
    Ben de benzer bir boşunalık hissi yaşadım