Back

Escaneando Seu Repositório em Busca de Segredos Com TruffleHog

Escaneando Seu Repositório em Busca de Segredos Com TruffleHog

Cometeu acidentalmente uma chave de API no seu repositório? Você não está sozinho. Milhares de credenciais vazam através do git todos os dias—frequentemente permanecendo no histórico de commits muito tempo depois que os desenvolvedores acham que as deletaram. O escaneamento de segredos do TruffleHog oferece uma maneira direta de detectar chaves de API expostas em repositórios antes que se tornem incidentes de segurança.

Este artigo aborda como o TruffleHog funciona, como escanear repositórios git em busca de segredos localmente e em CI, e como interpretar os resultados para que você possa priorizar a remediação de forma eficaz.

Pontos-Chave

  • O TruffleHog escaneia históricos git completos, não apenas arquivos atuais, revelando segredos enterrados em commits antigos
  • Descobertas verificadas indicam credenciais ativas e exploráveis que requerem rotação imediata
  • Integrar o TruffleHog em pipelines de CI previne vazamentos de credenciais antes que cheguem à produção
  • Quando segredos são encontrados, rotacione primeiro, depois remova do histórico usando ferramentas como BFG Repo-Cleaner ou git-filter-repo

Por Que Segredos Acabam no Git

Desenvolvedores trabalham rápido. Uma senha de banco de dados é codificada diretamente durante a depuração. Uma chave AWS acaba em um arquivo de configuração. Esses erros acontecem constantemente, e o histórico imutável do git significa que até segredos “deletados” persistem em commits mais antigos.

O risco é real: bots automatizados escaneiam repositórios públicos continuamente, e credenciais expostas podem ser exploradas em minutos após serem enviadas. Até repositórios privados não estão seguros—uma única conta de desenvolvedor comprometida ou controle de acesso mal configurado pode expor tudo.

Como o TruffleHog Detecta Segredos

O TruffleHog não é uma simples ferramenta grep. Ele usa escaneamento baseado em detectores com centenas de padrões integrados para tipos específicos de credenciais: chaves AWS, tokens GitHub, chaves de API Stripe, strings de conexão de banco de dados, e mais.

A abordagem de detecção combina:

  • Correspondência de padrões: Detectores regex ajustados para formatos conhecidos de segredos
  • Análise contextual: Examinando o código ao redor para reduzir ruído
  • Verificação opcional: Testando credenciais contra APIs reais para confirmar que estão ativas

Esta abordagem em camadas significa menos falsos positivos do que scanners baseados apenas em entropia. Quando o TruffleHog sinaliza algo, geralmente vale a pena investigar.

Escaneando um Repositório Local

Para escanear repositórios git em busca de segredos localmente, aponte o TruffleHog para seu repositório:

trufflehog git file://.

Isso escaneia todo o histórico git—não apenas a árvore de trabalho atual. Segredos enterrados em commits antigos são revelados junto com os recentes.

Para feedback mais rápido durante o desenvolvimento, você pode limitar o escopo do escaneamento a commits recentes ou branches específicos. Isso torna prático executar antes de enviar mudanças.

Entendendo Resultados Verificados vs. Não Verificados

O TruffleHog distingue entre dois tipos de descobertas:

  • Verificadas: A credencial foi testada contra sua API e confirmada como ativa
  • Não verificadas: O padrão corresponde a um formato conhecido de segredo, mas a verificação não foi possível ou não foi tentada

Descobertas verificadas exigem ação imediata—estas são credenciais ativas que poderiam ser exploradas agora mesmo. Descobertas não verificadas ainda merecem revisão, mas você pode priorizá-las mais baixo ao triar um grande conjunto de resultados.

Para filtrar a saída apenas para resultados verificados:

trufflehog git file://. --only-verified

Integrando a TruffleHog GitHub Action no CI

Executar escaneamentos manualmente detecta problemas, mas a automação os previne. A TruffleHog GitHub Action integra-se diretamente ao seu pipeline de CI para escanear cada pull request e push.

Uma configuração básica de workflow escaneia mudanças recebidas e falha a build se segredos forem detectados. Isso cria uma barreira que impede vazamentos de credenciais antes que cheguem à sua branch principal—ou pior, à produção.

A action suporta escanear apenas o diff (mais rápido para verificações de PR) ou o histórico completo do repositório (útil para auditorias periódicas). A maioria das equipes executa escaneamentos leves de diff em cada PR e agenda escaneamentos abrangentes de histórico semanalmente.

Além do Git: Outros Alvos de Escaneamento

Embora este artigo foque em workflows git, o TruffleHog suporta alvos adicionais: sistemas de arquivos, buckets S3 e imagens Docker. Para a maioria dos desenvolvedores, os scanners de git e sistema de arquivos cobrem casos de uso típicos. As capacidades mais amplas tornam-se relevantes conforme sua infraestrutura cresce.

O Que Fazer Quando Segredos São Encontrados

Encontrar um segredo é apenas o primeiro passo. A resposta importa mais:

  1. Rotacione a credencial imediatamente—assuma que está comprometida
  2. Remova-a do histórico git usando ferramentas como BFG Repo-Cleaner ou git-filter-repo
  3. Audite logs de acesso para o serviço afetado para verificar uso não autorizado
  4. Atualize seu workflow para prevenir vazamentos de credenciais no controle de código-fonte daqui em diante

Simplesmente deletar o arquivo e fazer commit novamente não ajuda. O segredo permanece no histórico até que você o reescreva.

Conclusão

O TruffleHog funciona melhor como um controle preventivo, não apenas uma ferramenta de auditoria. Execute-o cedo no CI, idealmente em cada pull request. Quanto mais cedo você detectar uma credencial vazada, menor o raio de impacto.

Combine escaneamento automatizado com boa higiene: use variáveis de ambiente para segredos, adicione padrões sensíveis ao .gitignore, e considere hooks de pre-commit para aplicação local.

O escaneamento de segredos não eliminará todos os riscos, mas reduz drasticamente a janela entre um erro e sua descoberta. Isso frequentemente é a diferença entre um quase-incidente e um incidente real.

Perguntas Frequentes

O TruffleHog escaneia todo o histórico git por padrão, não apenas a árvore de trabalho atual. Isso significa que segredos enterrados em commits antigos são revelados mesmo se foram deletados em commits posteriores. O histórico imutável do git preserva tudo, então o escaneamento abrangente é essencial para encontrar todas as credenciais expostas.

Descobertas verificadas significam que o TruffleHog testou a credencial contra sua API real e confirmou que ainda está ativa. Descobertas não verificadas correspondem a padrões conhecidos de segredos mas não foram validadas. Priorize descobertas verificadas para ação imediata, pois representam credenciais ativas e exploráveis.

Deletar o arquivo e fazer commit não removerá o segredo do histórico. Use ferramentas como BFG Repo-Cleaner ou git-filter-repo para reescrever o histórico git e purgar a credencial de todos os commits. Após reescrever, force-push para o remoto e peça para todos os colaboradores re-clonarem o repositório.

Sim, o TruffleHog pode ser executado como um hook de pre-commit para aplicação local. Isso detecta segredos antes que cheguem ao seu repositório remoto. Combine hooks de pre-commit com integração de CI para defesa em profundidade, garantindo que segredos sejam bloqueados tanto localmente quanto no seu pipeline.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay