# Riscos de vazamento de segredos

Segredos como chaves de API, senhas e tokens comprometidos com repositórios podem ser explorados por usuários não autorizados, criando segurança, conformidade e risco financeiro para sua organização.

## O que são segredos?

Segredos são credenciais que concedem acesso a sistemas e dados confidenciais. Exemplos comuns incluem:

* Chaves de API e tokens usados para autenticar com serviços externos
* Senhas de banco de dados e cadeias de conexão
* Credenciais do provedor de nuvem e tokens de conta de serviço
* Certificados e chaves de criptografia

Quando os segredos são confirmados em repositórios, eles se tornam **credenciais codificadas** que são inseridas diretamente em seu código-fonte ou arquivos de configuração. Esses segredos codificados tornam-se parte do histórico do Git e continuam acessíveis mesmo após serem removidos da confirmação mais recente. Isso significa que o endereçamento de um vazamento de credencial requer mais do que excluir o arquivo; você também deve revogar e substituir a credencial para impedir o acesso não autorizado.

## Como os segredos são expostos

**A expansão secreta** ocorre quando as credenciais proliferam entre repositórios, equipes e sistemas sem gerenciamento centralizado ou visibilidade. Isso dificulta o rastreamento de quais segredos existem, onde eles são usados e se foram expostos. Os segredos normalmente entram nos repositórios através de vários padrões comuns.

### Fluxos de trabalho de desenvolvimento

* Credenciais codificadas adicionadas durante o teste local e confirmadas inadvertidamente
* Segredos em arquivos de configuração, como arquivos `.env` ou modelos de infraestrutura como código
* Credenciais de exemplo que contêm chaves de API reais ou tokens na documentação, wikis ou arquivos README

### Gerenciamento de repositório

* Repositórios herdados que contêm credenciais esquecidas, mas ainda ativas
* Segredos compartilhados em problemas GitHub, comentários de solicitação de pull, discussões ou gists
* Credenciais introduzidas por colaboradores externos ou empreiteiros

### Propagação de controle de versão

* Os segredos persistem no histórico do Git mesmo após a remoção do código atual.
* As credenciais são propagadas para repositórios bifurcados, sistemas de backup e logs de CI/CD.
* Repositórios públicos com segredos expostos são indexados por mecanismos de pesquisa e serviços especializados de verificação.

## Riscos à segurança

Segredos expostos podem levar a vários tipos de incidentes de segurança.

### Acesso não autorizado

Vazamentos de credenciais fornecem aos usuários não autorizados acesso direto aos seus sistemas. Depois de expostos, os segredos codificados podem ser explorados para:

* Provisionar infraestrutura ou serviços em sua conta usando credenciais de provedor de nuvem vazadas
* Acessar dados confidenciais do cliente ou da organização por meio de credenciais de banco de dados comprometidas
* Obter entrada em sistemas de produção via tokens de conta de serviço expostos

### Violações de dados

Vazamentos de credenciais fornecem aos usuários não autorizados acesso direto aos seus sistemas, levando a violações de dados. Depois que os invasores obtiverem acesso usando credenciais expostas, eles poderão exfiltrar dados confidenciais, modificar ou excluir informações críticas e comprometer a confiança do cliente. As violações de dados exigem resposta imediata a incidentes, incluindo revogação de credenciais, correção do sistema e avaliação do escopo e impacto da violação.

### Ataques à cadeia de suprimentos

Os tokens de registro de pacote expostos podem ser usados para publicar versões mal-intencionadas do software, afetando usuários downstream e organizações que dependem de seus pacotes.

## Impacto financeiro

Segredos expostos podem custar dinheiro à sua organização de várias maneiras.

* **Contas de nuvem inesperadas**: as chaves de API vazadas permitem que os invasores usem seus recursos de nuvem. Eles podem executar instâncias de computação, armazenar dados ou minerar criptomoeda em sua conta, gerando faturas elevadas.
* **Resposta a incidentes**: investigar violações, girar credenciais e sistemas de auditoria exige tempo e recursos de engenharia significativos.
* **Custos legais**: violações de dados podem resultar em multas, taxas legais e despesas de notificação.
* **Danos a longo prazo**: clientes perdidos, custos de seguro mais altos e oportunidades de negócios perdidas após incidentes de segurança se tornarem públicos.

## Segurança secreta com GitHub

GitHub fornece ferramentas para ajudá-lo a prevenir, detectar e corrigir vazamentos de segredo:

### 1. Impedir que novos segredos sejam comprometidos

Habilite **Proteção por push** para verificar o código durante operações `git push` e bloquear confirmações contendo segredos detectados antes de entrarem em seu repositório. Isso impede que credenciais codificadas sejam adicionadas à sua base de código e fornece comentários em tempo real aos desenvolvedores no ponto de risco, abrangendo padrões de provedor para serviços conhecidos e padrões genéricos, como chaves privadas e chaves de API genéricas. Observe que nem todos os tipos de segredo são protegidos por push por padrão e devem ser configurados por sua organização, com base em sua tolerância a riscos versus ruído.

Incentive desenvolvedores individuais a ativar a proteção por push de contas pessoais para proteger todos os pushes em GitHub, sem considerar as políticas da organização. Isso ajuda a evitar a expansão de segredo capturando credenciais vazadas antes que elas cheguem aos seus repositórios.

### 2. Detectar segredos existentes

Use **secret scanning** para monitorar continuamente seus repositórios em busca de segredos codificados e gerar alertas quando as credenciais forem detectadas, permitindo que você revogue e gire credenciais comprometidas rapidamente. Além da detecção padrão de padrões de provedor, você pode expandir a verificação para padrões genéricos e definir padrões personalizados para segredos específicos da organização. Isso ajuda a obter visibilidade ao disseminar segredos na sua organização.