trufflehog: encontrando e verificando credenciais vazadas
TruffleHog · AGPL-3.0
O trufflehog varre conteúdo em busca de credenciais e — é isto que o separa de todo scanner de segredos baseado em regex — tenta verificá-las contra o serviço emissor. Um match não verificado é uma string que parece uma chave. Um match verificado é uma chave que funciona.
Instalação
# macOS
brew install trufflehog
# Linux
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh
| sh -s -- -b /usr/local/bin
# Docker
docker run --rm -it trufflesecurity/trufflehog:latest github --repo https://github.com/example/repo Comandos principais
# um repo git, histórico completo
trufflehog git https://github.com/example/repo --only-verified
# um checkout local
trufflehog filesystem ./src --only-verified
# uma organização inteira do GitHub
trufflehog github --org=example --only-verified
# JSON para importar
trufflehog git file://./repo --only-verified --json > secrets.jsonl
# S3, com um perfil de credencial específico
trufflehog s3 --bucket=example-assets --only-verified O --only-verified é a flag que torna a saída reportável. Sem ela você recebe milhares de strings candidatas; com ela você recebe credenciais que autenticaram com sucesso.
Saída
{"SourceMetadata":{"Data":{"Git":{"commit":"a3f9...","file":"config/settings.py",
"line":42,"repository":"https://github.com/example/repo"}}},
"DetectorName":"AWS","Verified":true,"Raw":"AKIA..."} Onde ele entra no Tandera
O trufflehog roda na fase de analyze do recon_web_lite e do recon_web_full, contra os bundles JavaScript e assets que katana e linkfinder recuperaram. O uso voltado para web é mais estreito que o uso em histórico git pelo qual a maioria o conhece: ele procura chaves enviadas ao navegador.
Resultados verificados mapeiam para o catálogo de findings secrets.yaml, que é o que lhes dá uma severidade e remediação canônicas em vez de um nome bruto de detector.
Usando em um pentest
Verificado muda a severidade, e a conversa. “Encontramos uma string que combina com o formato de uma chave AWS” convida ao debate. “Encontramos uma chave AWS que autentica” encerra. Reporte as duas categorias separadamente e nunca as misture.
Não use a credencial além da verificação. Confirmar que uma chave é válida está no escopo. Enumerar a conta que ela abre é outra autorização, e frequentemente outro contrato. Verifique, capture evidência, pare, escale para o cliente.
O histórico git é onde elas vivem. Uma chave deletada do HEAD ainda está no commit que a adicionou. Varrer a working tree em vez do histórico do repositório é o jeito mais comum de usar esta ferramenta errado.
Rotacionar é a remediação, não deletar. Uma chave removida do repo mas nunca rotacionada continua sendo uma chave válida. Diga isso explicitamente no finding.