1 pontos por GN⁺ 18 일 전 | 1 comentários | Compartilhar no WhatsApp
  • Foi realizado um experimento em larga escala para coletar e instalar todas as mais de 84 mil extensões do Firefox usando a API de Add-ons da Mozilla
  • Por meio de scraping, foram obtidas 84.235 extensões únicas, com tamanho total de 49,3 GB, e o dataset foi publicado no Hugging Face
  • Durante o processo de instalação, foram encontradas muitas extensões maliciosas, incluindo phishing, spam e PUA (aplicativos potencialmente indesejados)
  • No fim, foi possível instalar 84.194 extensões com sucesso, mas o navegador ficou praticamente inutilizável
  • O experimento é avaliado como um caso que expôs de forma abrangente a escala, a qualidade e os problemas de segurança do ecossistema de extensões

Experimento de instalar todas as extensões do Firefox

  • Um experimento em larga escala que coletou, analisou e instalou todas as mais de 84 mil extensões do Firefox
  • Usando a API pública de Add-ons da Mozilla, foi feito o scraping da lista completa de extensões e também a instalação real
  • O dataset foi publicado no Hugging Face e está acessível a qualquer pessoa
  • Após várias tentativas, foi possível instalar 84.194 extensões, mas o navegador ficou praticamente inutilizável
  • O experimento revelou a escala do ecossistema de extensões, sua qualidade, extensões maliciosas, spam e PUA (aplicativos potencialmente indesejados)

Scraping das extensões do Firefox

  • A addons-server API da Mozilla pode ser acessada sem autenticação, e o endpoint search permite consultar a lista de extensões por página
  • Com a ordenação padrão (recommended,users), só era possível consultar cerca de 30.000 extensões, então foram combinadas várias opções de ordenação, como created, rating, hotness e updated, para recuperar as extensões faltantes
  • O parâmetro exclude_addons foi usado para coletar também as extensões após a página 600
  • Com requisições paralelas por categoria, foram obtidas 84.235 extensões únicas no total, com tamanho médio de 584,9 KB e volume total de 49,3 GB
  • O dataset final foi enviado ao Hugging Face e tornado público
  • Na atualização de 11 de abril de 2026, foi implementado um scraping preciso e eficiente de todo o acervo usando os filtros created__gte e created__lte

Análise das extensões do Firefox

  • A maior extensão é dmitlichess (196,3 MB), contendo mais de 2.000 arquivos de áudio
    • A maioria das 10 maiores extensões inclui conteúdos pesados como modelos de IA, apps Unity e recursos de imagem
  • A menor extensão é theTabs-saver (7,5 KB), sem código
  • A extensão com pior avaliação é Tab Stack for Firefox
  • A extensão mais antiga é Web Developer
  • A extensão com mais capturas de tela é RDS Bar (54 imagens)
  • A extensão com mais solicitações de permissão é FalscheLaden (3.695 solicitações), seguida por Google Dark Theme (2.675)
  • O desenvolvedor que publicou mais extensões é Dr. B (84 extensões), a maioria com README e sem ícone
  • Phishing e extensões maliciosas

    • No dataset, foram encontradas várias extensões de phishing de carteiras de criptomoedas
      • Ex.: “Іron Wаllеt” recebia uma URL do NocoDB 3 segundos após a instalação e redirecionava para uma página de phishing
      • Algumas extensões capturavam a seed phrase e a enviavam ao servidor
    • Após a denúncia, a Mozilla removeu a maioria delas no dia seguinte
    • Também foram encontrados casos em que chaves de API tinham permissão de escrita, o que permitiu apagar dados diretamente
  • Extensões de spam para SEO

    • O link “Homepage” da página da extensão era abusado para backlinks
    • Extensões geradas por IA, como Typo Sniper e Tab Fortune Teller, levavam a sites de cassino
    • Havia muitas extensões do tipo “Code Injector”, com a mesma estrutura de código e domínios aleatórios
    • A maioria foi criada em 2025
  • Extensões PUA (aplicativos potencialmente indesejados)

    • Havia mais de 20 extensões com o padrão “Custom Web Search”, com mais de 700 mil usuários no total
    • Todas tinham a mesma estrutura e os mesmos domínios, com menção a “Innover Online Group Ltd”
    • A Mozilla desativou algumas delas, incluindo uma com 115.000 usuários
    • Usavam o código de afiliado do Yahoo safeplexsearch, e havia uma versão específica para Firefox
    • Uma empresa similar, Atom Apps, também distribuía extensões do mesmo tipo, somando 220 mil usuários diários
  • Resumo estatístico

    • 34,3% das extensões têm 0 usuários diários
      • Com 10 ou mais usuários: 25,1%; 100 ou mais: 10,6%; 1.000 ou mais: 3,2%; 10.000 ou mais: 0,7%
    • 76,7% são open source (com base em licenças SPDX)
    • 23% foram criadas depois da publicação do texto
      • Entre elas, 19% não têm usuários, reviews, ícone nem downloads
    • 2,4% são extensões pagas, e 38,1% delas são open source

Tentativa de instalar todas as extensões

  • O arquivo .xpi de cada extensão foi salvo na pasta de perfil com nome de GUID, e depois o extensions.json foi modificado
  • addonStartup.json.lz4 foi apagado e o extensions.json foi manipulado para ativação automática
  • Tentativa 0: 65.335 extensões (Windows VM)

    • Foi tentada a instalação pelo método Enterprise Policy, mas houve falta de memória e travamento do sistema
  • Tentativa 1: cerca de 1.000

    • Após download direto e distribuição manual, a instalação funcionou
    • Algumas extensões mudavam todo o texto para uma string específica
    • Devido a várias extensões de segurança, eram frequentes os bloqueios de domínio e pop-ups de alerta
  • Tentativa 2: 65.335

    • Como o addonStartup.json.lz4 não foi apagado, na prática só cerca de 1.000 foram ativadas
    • Ao abrir about:addons, o Firefox congelava e não conseguia reiniciar
  • Tentativa 3: 65.335 (Mac)

    • O download paralelo reduziu a velocidade, levando 6 horas no total
    • Ao iniciar o Firefox, ele ficava sem resposta, e o extensions.json tinha 144 MB
    • Houve mais de 400 GB de escrita em disco
  • Tentativas 4~10: 1.000~6.000

    • Até 3.000, páginas web ainda podiam ser carregadas
    • A partir de 4.000, todos os sites eram bloqueados; com 6.000, só about:addons carregava
  • Tentativa 11: 84.194 (6 meses depois)

    • Foi usada uma máquina virtual (VM) em ambiente com 16~24 GB de RAM
    • O download levou 1 hora e 43 minutos, e algumas extensões foram detectadas pelo Defender
    • Ao iniciar o Firefox, o extensions.json cresceu para 189 MB, e o processo foi encerrado à força após 39 minutos
    • Depois disso, foi feita nova tentativa executando enable.js
    • Resultados do Launch 1~3

      • Launch 1: após 39 minutos de espera sem renderização, foi interrompido
      • Launch 2: o navegador apareceu, mas travou em menos de 3 minutos
      • Launch 3: após longa espera, a estabilização foi bem-sucedida, confirmando o carregamento de 84.194 extensões

Teste de uso com todas as extensões

  • about:addons

    • A página de configurações não carregava, e a página de índice só ficou totalmente carregada após 6 horas
    • O uso de memória se manteve entre 27~37 GiB
    • Os ícones não eram exibidos e a resposta era extremamente lenta
  • about:support

    • Foram mostradas 84.205 extensões no total, mas isso incluía as extensões integradas
    • Confirmou-se que as extensões externas realmente instaladas eram 84.194
  • about:preferences

    • Havia muitas opções de New Tab, causando conflitos e travamentos
  • New Tab

    • Apenas o Firefox Home carregava normalmente; todas as outras extensões falhavam
  • moz-extension

    • A extensão buyPal substituía automaticamente a aba e foi a única a carregar corretamente
    • Depois disso, o Firefox travava novamente
  • example.com

    • Mesmo após 24 horas de espera, a página não carregava, sugerindo a existência de muitas extensões de bloqueio
  • about:telemetry

    • Ao clicar em Environment Data, ocorria travamento imediato

Avaliação de usabilidade

  • Impossível
  • O Firefox fica praticamente inutilizável com 84 mil extensões instaladas

Sugestões para exploração adicional

  • Analisar por que about:addons leva 6 horas para carregar e por que example.com não carrega
  • Testar em outros navegadores que suportam .xpi, como Kagi Orion e GNOME Web
  • Fazer experimentos instalando todos os temas (mais de 500 mil) ou todos os user scripts/estilos
  • Instalar todas as extensões da Chrome Web Store é inviável pela escala

Resumo das notas

  • Um total de 8 extensões não foi coletado no scraping ou foi removido
  • Após a versão inicial escrita em setembro de 2025, os números foram atualizados em abril de 2026
  • “Foreshadowing” é mencionado como recurso literário de antecipação

1 comentários

 
GN⁺ 18 일 전
Comentários do Hacker News
  • Ganhou o prêmio de "Middle Finger Emoji Sticker"
    Resumiu brevemente o processo e publicou no blog
    O texto original pode ser visto aqui

  • Isso lembrou as antigas guerras das barras de ferramentas do Internet Explorer
    Lembro que em todo cibercafé tinha pelo menos duas barras do Ask.com, Google, Yahoo e, mais tarde, Bing instaladas

  • Fui investigar por que isso levou tanto tempo
    Há 13 anos era extensions.sqlite, não extensions.json
    Hoje a estrutura reserializa e regrava o arquivo inteiro a cada 20 ms, então funciona bem com 15 extensões, mas com 84.194 vira um problema
    Fico curioso sobre como definiram esse valor de debounce. É difícil imaginar que alguma extensão esteja escrevendo em extensions.json várias vezes por segundo

  • Nenhuma das páginas de fato abre direito, mas o texto em si foi muito divertido de ler
    Ri bastante na parte do “ativei o crash reporting”. Do ponto de vista da equipe da Mozilla, isso deve soar como história de terror

    • Os crash reports do Firefox são públicos
      Só não consegui encontrar o que o autor enviou. Dá para ver em crash-stats.mozilla.org
      Se o perfil ainda existir, é possível encontrar o crash ID por meio deste guia
  • O texto é realmente bizarro e incrível
    Fiquei especialmente impressionado com o fato de terem encontrado um bug de performance em uma ou mais páginas about:. Isso merece investigação posterior

  • A lista de extensões também pode ser vista como sitemap
    Firefox Add-ons sitemap,
    Chrome Web Store sitemap,
    Edge sitemap também podem servir de referência

  • O vídeo é tão engraçado que dá vontade de chorar
    Deve ser assim a navegação na web de idosos que quase não entendem de computador. Queria que alguém fizesse isso também no Chrome

    • Foi hilário perceber que o botão falso de extensão que o autor ficou clicando freneticamente por 30 segundos era, na verdade, um botão criado por uma extensão. E ainda eram três
    • Pessoalmente, a parte mais engraçada para mim foi o efeito sonoro de tubo metálico. Fiquei curioso para saber qual extensão colocou aquilo
    • Isso tem tudo para virar um bug report lendário
    • Se alguém que não entende nada sair clicando em “sim/aceitar/confirmar” em todos os pop-ups, o resultado só pode ser esse
    • Não sei onde está o vídeo. Rolei a página e só vi imagem estática
  • “Esse service mesh é projetado demais para o nosso caso de uso, mas o broker é lento demais para 84.205 microsserviços”
    Essa tensão interminável é familiar demais

  • Isso me lembrou o lendário pacote NPM que dependia de todos os pacotes do NPM
    O texto relacionado é realmente engraçado

  • Concordei muito com a frase “depois de instalar quase todas as extensões com isso, tudo que eu tinha feito antes parece idiota”
    Eu também senti um tipo parecido de vazio