A metodologia para coletar segredos inclui várias fases, o que permite identificar informações classificadas com um alto grau de confiança. Ilustração de um trabalho científicoO GitHub e plataformas semelhantes para publicação de código aberto hoje se tornaram ferramentas padrão para desenvolvedores. No entanto, surge um problema se esse código-fonte aberto funcionar com tokens de autenticação, chaves de API privadas e chaves criptográficas privadas. Para garantir a segurança, esses dados devem ser mantidos em segredo. Infelizmente, muitos desenvolvedores adicionam informações confidenciais ao código, o que geralmente leva a vazamentos acidentais de informações.
Uma equipe de pesquisadores da Universidade da Carolina do Norte conduziu um
estudo em larga escala de vazamentos de dados classificados no GitHub.
Eles examinaram bilhões de arquivos, que foram coletados por dois métodos complementares:
- Quase seis meses de verificação pública do GitHub em tempo real
- instantâneo de repositórios públicos, cobrindo 13% de todos os repositórios no GitHub, cerca de 4 milhões no total.
As conclusões são decepcionantes. Os cientistas não apenas descobriram que os vazamentos são generalizados e afetam mais de 100.000 repositórios. Pior ainda, milhares de novos "segredos" únicos chegam ao GitHub todos os dias.
A tabela lista as APIs de serviços populares e os riscos associados ao vazamento dessas informações.

As estatísticas gerais sobre os objetos secretos encontrados mostram que as chaves da API do Google geralmente entram no domínio público. Chaves privadas RSA e identificadores do Google OAuth também são comuns. Normalmente, a grande maioria dos vazamentos ocorre através de repositórios únicos.
Secret | Total | Único | %, um proprietário |
---|
Chave da API do Google | 212 892 | 85 311 | 95,10% |
Chave secreta RSA | 158 011 | 37.781 | 90,42% |
ID do Google OAuth | 106 909 | 47.814 | 96,67% |
Chave privada regular | 30.286 | 12.576 | 88,99% |
ID da chave de acesso do Amazon AWS | 26 395 | 4648 | 91,57% |
Token de acesso ao Twitter | 20.760 | 7953 | 94,83% |
Chave privada EC | 7838 | 1584 | 74,67% |
Token de acesso do Facebook | 6367 | 1715 | 97,35% |
Chave privada PGP | 2091 | 684 | 82,58% |
Chave da API MailGun | 1868 | 742 | 94,25% |
Chave da API MailChimp | 871 | 484 | 92,51% |
Chave da API padrão de distribuição | 542 | 213 | 91,87% |
Chave da API do Twilio | 320 | 50. | 90,00% |
Token de acesso quadrado | 121 | 61 | 96,67% |
Secret Square OAuth | 28. | 19 | 94,74% |
Token de autenticação do Amazon MWS | 28. | 13 | 100,00% |
Token de acesso ao Braintree | 24 | 8 | 87,50% |
Chave da API Picatic | 5 | 4 | 100,00% |
Total | 575.456 | 201 642 | 93,58% |
O monitoramento em tempo real das confirmações tornou possível determinar a quantidade de informações confidenciais removidas dos repositórios logo após chegar lá. Verificou-se que no primeiro dia pouco mais de 10% dos segredos são excluídos e alguns% nos dias seguintes, no entanto, mais de 80% das informações privadas permanecem nos repositórios duas semanas após a adição, e essa proporção praticamente não diminui no subsequente.
Entre os vazamentos mais notáveis, há uma conta da AWS de uma agência governamental em um dos países da Europa Oriental, bem como 7.280 chaves RSA privadas para acessar milhares de VPNs privadas.
O estudo mostra que um invasor, mesmo com recursos mínimos, pode comprometer muitos usuários do GitHub e encontrar uma tonelada de chaves privadas. Os autores observam que muitos métodos de proteção existentes são ineficazes contra a coleta de informações classificadas. Por exemplo, ferramentas como TruffleHog mostram apenas 25% de eficiência. O limite interno do GitHub para o número de solicitações de API também é facilmente ignorado.
No entanto, muitos segredos descobertos têm padrões claros que facilitam
a pesquisa deles. É lógico supor que esses mesmos padrões possam ser usados para monitorar o vazamento de informações classificadas e avisar os desenvolvedores. Provavelmente, esses mecanismos devem ser implementados no servidor, ou seja, no GitHub. Um serviço pode emitir um aviso diretamente durante uma confirmação.
O GitHub implementou recentemente uma versão beta da verificação de token (função de
verificação de token ), que verifica repositórios, pesquisa por tokens e notifica os provedores de serviços sobre vazamento de informações. Por sua vez, o fornecedor pode cancelar esta chave. Os autores acreditam que, graças às suas pesquisas, o GitHub pode melhorar esse recurso e expandir o número de fornecedores.