Show HN: Little Rat — Extensão do Chrome que monitora chamadas de rede de outras extensões
(github.com/dnakov)- 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-urlsou 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
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
É 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
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
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
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
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://
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?
Você ficaria surpreso ao ver quantas violações óbvias das políticas de extensão a Mozilla deixa passar em extensões “recomendadas”
[1]: https://firefox-source-docs.mozilla.org/devtools-user/browse...
[2]: https://firefox-source-docs.mozilla.org/networking/http/logg...
[3]: https://firefox-source-docs.mozilla.org/devtools-user/about_...
var chrome = browser;no topo de cada arquivo JS já pode fazer funcionar no Firefox. A API de extensões do Firefox é praticamente uma cópia das Chrome Extension APIs, com pequenas diferençasVou testar quando chegar à Chrome Store
declarativeNetRequest.onRuleMatchedDebug[0], que parece ser somente para depuração, então fico em dúvida se será permitido na Chrome Web Store0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
Por que não está na Chrome Store?
chrome.declarativeNetRequest, que é uma API que o uBlock também usaEstá 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
unsafe-inline, e o ID da extensão é gerado automaticamente pelo ChromeO 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