tarnish
tarnish é uma ferramenta de análise estática para auxiliar pesquisadores em revisões de segurança de extensões do Chrome. Ela automatiza grande parte do trabalho braçal e ajuda a identificar rapidamente potenciais vulnerabilidades de segurança. Esta ferramenta acompanha o artigo de pesquisa do blog que pode ser encontrado aqui. Se você não quiser passar pelo trabalho de configurar isso, pode simplesmente usar a ferramenta em https://thehackerblog.com/tarnish/.

Aviso & Notas sobre versão não polida
Vale notar que esta é uma versão não polida. Esta é a mesma fonte da implantação localizada em https://thehackerblog.com/tarnish/. No futuro, posso refiná-la e torná-la muito mais fácil de executar, mas não tenho tempo agora.
Para configurar isso, você precisará entender como:
- Configurar um bucket S3
- (se usar auto-escala) Configurar o ElasticBeanstalk
- Usar
docker-compose
- Configurar redis
A configuração é um pouco complexa devido a alguns objetivos de design:
- Realizar análise estática de forma eficaz contra extensões do Chrome
- Escalar automaticamente para aumentar a carga de trabalho com mais instâncias e reduzir.
- Trabalhar com um orçamento apertado (daí o uso do ElasticBeanstalk com Instâncias Spot).
Algumas notas rápidas para ajudar alguém que tente configurar isso:
tarnish utiliza Python Celery para análise de extensões.
- A configuração do Python Celery usa redis como broker (isso precisará ser criado).
- Os workers que processam os trabalhos de análise de extensão são executados em instâncias spot do AWS ElasticBeanstalk. Para quem não está familiarizado, instâncias spot são basicamente lances em computação não utilizada. Isso permite que o serviço funcione de forma super barata.
- Os workers exigem pelo menos uma instância AWS
t2.medium para operar.
- O frontend do
tarnish é apenas um conjunto de arquivos estáticos que é enviado para um bucket S3 configurado como host estático.
Veja o docker-compose.yaml.example para as configurações de variáveis de ambiente. Idealmente, você executaria ./start.sh e navegaria até o frontend estático para fazer as coisas funcionarem. Você pode usar S3 para o site estático ou apenas um servidor web estático simples como python -m SimpleHTTPServer (você terá que modificar os arquivos JavaScript para garantir que a origem corresponda, etc.).
Funcionalidades
Baixa qualquer extensão do Chrome a partir de um link da Chrome Webstore fornecido.
- Visualizador de
manifest.json: simplesmente exibe uma versão JSON formatada do manifesto da extensão.
- Análise de Impressão Digital: Detecção de
web_accessible_resources e geração automática de JavaScript para impressão digital de extensões do Chrome.
- Análise Potencial de Clickjacking: Detecção de páginas HTML da extensão com a diretiva
web_accessible_resources definida. Estas são potencialmente vulneráveis a clickjacking dependendo da finalidade das páginas.
- Visualizador de Aviso(s) de Permissão: mostra uma lista de todos os avisos de solicitação de permissão do Chrome que serão exibidos ao usuário ao tentar instalar a extensão.
- Função(ões) Perigosa(s): mostra a localização de funções perigosas que poderiam ser potencialmente exploradas por um atacante (por exemplo, funções como innerHTML, chrome.tabs.executeScript).
- Ponto(s) de Entrada: mostra onde a extensão recebe entrada do usuário/externa. Isso é útil para entender a superfície de ataque de uma extensão e procurar pontos potenciais para enviar dados maliciosamente criados para a extensão.
- Tanto os scanners de Função(ões) Perigosa(s) quanto de Ponto(s) de Entrada possuem o seguinte para seus alertas gerados:
- Trecho de código relevante e linha que causou o alerta.
- Descrição do problema.
- Um botão "Ver Arquivo" para visualizar o arquivo fonte completo contendo o código.
- O caminho do arquivo alertado.
- A URI completa da extensão do Chrome do arquivo alertado.
- O tipo de arquivo, como um script de Página de Fundo, Script de Conteúdo, Ação do Navegador, etc.
- Se a linha vulnerável está em um arquivo JavaScript, os caminhos de todas as páginas onde ele está incluído, bem como o tipo dessas páginas e o status de
web_accessible_resource.
- Analisador de Política de Segurança de Conteúdo (CSP) e verificador de bypass: Isso apontará fraquezas no CSP da sua extensão e também iluminará quaisquer maneiras potenciais de contornar seu CSP devido a CDNs na lista de permissões, etc.
- Bibliotecas Vulneráveis Conhecidas: Isso utiliza o Retire.js para verificar qualquer uso de bibliotecas JavaScript vulneráveis conhecidas.