
Ah shhgit! Encontre segredos no seu código. Detecção de segredos para seus repositórios GitHub, GitLab e Bitbucket.
Vazar acidentalmente segredos — nomes de usuário e senhas, tokens de API ou chaves privadas — em um repositório de código público é o pior pesadelo de desenvolvedores e equipes de segurança. Fraudadores constantemente escaneiam repositórios de código públicos em busca desses segredos para obter acesso a sistemas. O código está mais conectado do que nunca, então frequentemente esses segredos fornecem acesso a dados privados e sensíveis — infraestruturas em nuvem, servidores de banco de dados, gateways de pagamento e sistemas de armazenamento de arquivos, para citar alguns.
shhgit pode escanear constantemente seus repositórios de código para encontrar e alertá-lo sobre esses segredos.
Você tem duas opções. Recomendo a primeira, pois lhe dará acesso à interface web ao vivo do shhgit. Use a segunda opção se você quiser apenas a interface de linha de comando.
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml (por exemplo, adicionando seus tokens do GitHub)docker-compose upNota: este método não inclui a interface web do shhgit
go get github.com/eth0izzle/shhgit baixará e construirá o shhgit automaticamente. Ou você pode clonar este repositório e executar go build -v -i.config.yaml e veja o uso abaixo.shhgit pode funcionar de duas maneiras: consumindo as APIs públicas do GitHub, Gist, GitLab e BitBucket ou processando arquivos em um diretório local.
Por padrão, o shhgit será executado no primeiro 'modo público'. Para GitHub e Gist, você precisará obter e fornecer um token de acesso (veja este guia; ele não requer escopos ou permissões. E então coloque-o em github_access_tokens no config.yaml). GitLab e BitBucket não requerem tokens de API.
Você também pode dispensar as assinaturas e usar o shhgit com sua própria consulta de pesquisa personalizada, por exemplo, para encontrar todas as chaves AWS você poderia usar shhgit --search-query AWS_ACCESS_KEY_ID=AKIA. E para executar no modo local (e talvez integrar em seus pipelines de CI) você pode passar a flag --local (veja o uso abaixo).
--clone-repository-timeout
Tempo máximo que deve levar para clonar um repositório em segundos (padrão 10)
--config-path
Procura por config.yaml a partir do diretório fornecido. Se não definido, tenta encontrar a partir do diretório do binário shhgit e do diretório atual
--csv-path
Especifique um caminho se quiser escrever segredos encontrados em um CSV. Deixe em branco para desabilitar
--debug
Imprimir informações de depuração
--entropy-threshold
Encontra strings de alta entropia em arquivos. Limiar mais alto = segredos mais secretos, limiar mais baixo = mais falsos positivos. Defina como 0 para desabilitar verificações de entropia (padrão 5.0)
--local
Especifica diretório local (caminho absoluto) para escanear. Escaneia apenas o diretório fornecido recursivamente. Não é necessário ter tokens do Github para execução local.
--maximum-file-size
Tamanho máximo de arquivo para processar em KB (padrão 512)
--maximum-repository-size
Tamanho máximo de repositório para baixar e processar em KB (padrão 5120)
--minimum-stars
Clona apenas repositórios com este número de estrelas ou superior. Defina como 0 para ignorar a contagem de estrelas (padrão 0)
--path-checks
Defina como false para desabilitar a verificação de assinatura de nome de arquivo/caminho, ou seja, apenas corresponder padrões regex (padrão true)
--process-gists
Observar e processar Gists em tempo real. Defina como false para desabilitar (padrão true)
--search-query
Especifique uma string de pesquisa para ignorar assinaturas e filtrar arquivos contendo esta string (compatível com regex)
--silent
Suprimir toda saída exceto erros
--temp-directory
Diretório para armazenar repositórios/combinações (padrão "%temp%\shhgit")
--threads
Número de threads concorrentes para usar (padrão número de CPUs lógicas)
O arquivo config.yaml tem 7 elementos. Um padrão é fornecido.
github_access_tokens: # forneça pelo menos um token
- 'token um'
- 'token dois'
webhook: '' # URL para um webhook POST.
webhook_payload: '' # Payload para POST no URL do webhook
blacklisted_strings: [] # lista de strings para ignorar
blacklisted_extensions: [] # lista de extensões para ignorar
blacklisted_paths: [] # lista de caminhos para ignorar
blacklisted_entropy_extensions: [] # extensões adicionais para ignorar nas verificações de entropia
signatures: # lista de assinaturas para verificar
- part: '' # filename, extension, path ou contents
match: '' # comparação de texto simples (se nenhum elemento regex)
regex: '' # padrão regex (se nenhum elemento match)
name: '' # nome da assinatura
shhgit vem com 150 assinaturas. Você pode remover ou adicionar mais editando o arquivo config.yaml.