2 pontos por GN⁺ 2023-08-15 | 1 comentários | Compartilhar no WhatsApp
  • Little Rat é uma pequena extensão do Chrome que monitora e, opcionalmente, bloqueia chamadas de rede de outras extensões do Chrome
  • Detectar e bloquear o tráfego de outras extensões só é possível ativando a flag extensions-on-chrome-urls em chrome://flags/#extensions-on-chrome-urls ou executando o Chrome com --extensions-on-chrome-urls
  • A instalação manual usa o procedimento de baixar o ZIP do GitHub, descompactar, ativar o Developer mode em Extensions do Chromium/Chrome e carregar a extensão descompactada a partir do diretório little-rat-main

1 comentários

 
GN⁺ 2023-08-15
Comentários do Hacker News
  • Eu gostaria que isso fosse um recurso nativo do Firefox ou do Chrome, mais do que uma extensão de terceiros. Assim a adoção seria grande o bastante para outros navegadores também prestarem atenção; eu gostaria de permitir que certas extensões fizessem apenas requisições GET para URLs estáticas definidas, sem poder alterar cabeçalhos
    Isso permitiria atualizações de dados, mas reduziria o risco de vazamento. Algumas extensões funcionam apenas dentro do navegador local, então nem precisam de acesso à rede. O problema é que, se elas puderem modificar o código-fonte da página, conseguem contornar isso para transmitir dados; talvez seja por isso que os navegadores não façam. Ainda assim, acho melhor tentar do que desistir e deixar a cargo de extensões do Chrome

    • Só para observar, já é possível. Você precisa abrir o depurador do navegador, não o depurador da página atual
      É quase o mesmo processo de inspecionar a UI: habilite a depuração remota e depois execute o Browser Toolbox: https://superuser.com/questions/1608096/how-to-inspect-firef...
      Também é útil para descobrir o que é necessário em um arquivo CSS user-chrome quando você quer mudar a aparência das abas além do que temas permitem. Mas usar CSS user-chrome em si é meio chato
      Para fazer as requisições de rede de extensões aparecerem, tive que mudar para o multi-process mode, o que em geral faz sentido
      Por exemplo, o uBlock buscando uma lista de bloqueio aleatória em que cliquei para testar: https://i.imgur.com/wBYbBM2.png
      O próprio Firefox atualizando listas de safe-browsing em segundo plano: https://i.imgur.com/JYxWwjW.png
    • Requisições GET também podem vazar dados por meio do caminho e dos parâmetros da query string. Mesmo bloqueando isso, ainda dá para criar uma comunicação em estilo código Morse que indique atividade por tempo ou frequência; com requisições suficientes, é fácil transmitir dados na casa dos megabytes
    • Acho que, se uma extensão gerar uma requisição HTTP que não seja apenas repetir uma URL que já estava na página, o navegador deveria mostrar uma notificação toast com o corpo da requisição formatado de forma legível
      Extensões bem feitas só disparariam notificações de vez em quando, e extensões que precisam de servidor fariam isso nos momentos em que o usuário espera que elas se comuniquem com o servidor. Extensões que enviam pressionamentos de tecla ou dados suspeitos ficariam muito fáceis de notar
    • Pelo que lembro, extensões não conseguem acessar URLs que não estejam especificadas na seção de permissões do manifesto. Acho que o Firefox mostra essas URLs na janela de confirmação de permissões
      Dito isso, dá para colocar curingas nas URLs, e acho que também havia um valor especial que significava todas as URLs. Mesmo assim, não deveria haver muitas extensões que realmente precisem dessa permissão
    • Imagino que os fabricantes de navegadores não ofereçam esse tipo de recurso porque, qualquer proteção que coloquem, seria fácil de contornar
      Por exemplo, mesmo que a própria extensão não pudesse criar a requisição, se ela tiver permissão para modificar o DOM da página, há muitas maneiras de enganar a página para que envie a requisição em seu lugar
  • Esta extensão não é tão fácil de instalar, então seria bom adicionar uma captura de tela mostrando eventos de rede realmente capturados. As capturas atuais escondem o recurso mais interessante

    • Abra o Google Chrome e vá ao menu de três pontos no canto superior direito → Extensions → Manage Extensions → ative o Developer Mode no canto superior direito → botão “Load Packged” no canto superior esquerdo → carregue o diretório do .zip descompactado
      Depois volte à tela normal do navegador, clique no ícone de extensões em forma de peça de quebra-cabeça à direita da barra de endereços e clique no pequeno ícone de alfinete ao lado de Little Rat; assim ele fica instalado e aparece na lista de ícones de extensões
  • Legal. Sinceramente, me surpreende que isso seja possível
    Não sei exatamente quais dados essas APIs expõem, mas, se uma extensão consegue acessar as requisições de outras extensões, isso não poderia criar preocupações de segurança para extensões gerenciadoras de senhas ou extensões que usam tokens de autenticação?

  • Gostei. Parece o tipo de coisa que deveria existir como uma URL chrome://

    • Como extensões representam um risco tão grande para segurança e privacidade, a primeira coisa que me veio à cabeça foi: por que isso não é um recurso nativo do Chromium?
  • Parece bom, mas fico curioso se há planos para um port para Firefox
    Alguém conhece alguma alternativa que faça a mesma coisa no Firefox?

  • Vou testar quando chegar à Chrome Store

    • Ele usa declarativeNetRequest.onRuleMatchedDebug[0], que parece ser somente para depuração, então fico em dúvida se será permitido na Chrome Web Store
      0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
    • Vá em Releases, clique com o botão direito no arquivo crx para salvá-lo e, depois, vá em Extensions do Chrome e arraste e solte o arquivo crx ali
  • Por que não está na Chrome Store?

    • Está em análise no momento. É porque usa chrome.declarativeNetRequest, que é uma API que o uBlock também usa
  • Está limpo, mas esta parte precisa ser tratada com mais cuidado: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
    Eu não queria ter que me preocupar se outra extensão poderia injetar XSS aqui com uma requisição, ID ou nome manipulados

    • Ótimo ponto, mas a política de segurança de conteúdo não permite unsafe-inline, e o ID da extensão é gerado automaticamente pelo Chrome
  • O simples fato de não haver chamadas de rede não prova que uma extensão seja segura. Ela poderia manter em cache dados que você gostaria de preservar como privados e enviá-los periodicamente