Como encontrar e corrigir segredos expostos no seu projeto do GitHub com o Snyk
25 de junho de 2024
0 minutos de leituraO Snyk é uma excelente ferramenta para identificar vulnerabilidades em projetos, inclusive segredos definidos diretamente no código. Neste artigo, vamos mostrar como usar o Snyk para localizar segredos e credenciais expostos e, em seguida, refatorar nosso código para armazená-los no Doppler. Usaremos o projeto open source Snyk goof como aplicação de referência em Node.js, então fique à vontade para acompanhar.
Comece a usar o projeto Snyk goof
Para começar, faça um fork de projeto Snyk Goof para sua conta do GitHub. Esse projeto de exemplo está repleto de vulnerabilidades que podemos identificar com o Snyk.
Em seguida, crie uma conta gratuita no Snyk acessando Snyk login page e entre com sua conta do GitHub (ou de outro provedor de sua preferência).

Você precisará permitir que o Snyk acesse o endereço de e-mail vinculado à sua conta. O Snyk usa esse e-mail para enviar informações importantes, incluindo notificações de segurança e relatórios dos projetos que você importou.
Se você ainda não usou o Snyk, também precisará configurar as permissões de acesso para que ele possa verificar seus projetos regularmente e gerar automaticamente solicitações de pull para correções nos seus repositórios. Para isso, é necessário conceder permissões adicionais à sua conta do GitHub.
Selecione o GitHub como origem do código do seu projeto (ou escolha onde seu código está armazenado). Em seguida, você pode manter as configurações padrão, como mostra a captura de tela abaixo, para usar todos os recursos recomendados do Snyk. Se quiser, você pode desativar essas permissões, mas isso impedirá o uso dos recursos mais avançados e úteis de solicitações de pull para correções do Snyk, que automatizam correções de segurança e atualizações de dependências.

Em seguida, selecione the Snyk goof project na lista de repositórios do GitHub para adicioná-lo como projeto à sua conta do Snyk.

Para criar um grafo de dependências, o Snyk vai analisar o arquivo de manifesto `package.json` do projeto goof em Node.js. Esse grafo incluirá tanto as dependências diretas usadas pelo projeto quanto as dependências transitivas das quais as diretas dependem. O processo continua até formar um grafo completo de dependências. Em seguida, o Snyk compara essas dependências com seu banco de dados de vulnerabilidades e gera um relatório abrangente.

O projeto goof tem vários problemas. O Snyk pode ajudar você a corrigir muitos deles, atualizando as dependências diretas para versões sem vulnerabilidades ou aplicando correções. Vamos analisar o código mais de perto e identificar os segredos definidos diretamente nele que precisamos corrigir.
Corrija os segredos enviados ao GitHub
Acesse a visualização Code Analysis e filtre por Use of Hardcoded Credentials e Hardcoded Secret.

Precisamos corrigir vários segredos. Primeiro, adicione esses segredos ao Doppler. Isso evitará que sejam expostos acidentalmente, centralizará o gerenciamento deles e permitirá configurar segredos diferentes para os ambientes de desenvolvimento e produção. Assim, não precisaremos mais nos preocupar em enviá-los ao GitHub.
Clone o projeto Goof com o Git para fazer as alterações necessárias no código. Depois, siga as instruções do Goof Project README para executar o projeto localmente.
Vamos começar as correções com um token definido diretamente no arquivo `app.js`:

Abra `app.js` no editor de código de sua preferência e localize a variável do token. Copie o token e acesse o Doppler para criar uma conta gratuita.

Na sua conta do Doppler, crie um projeto chamado `Goof`.

Os ambientes serão criados por padrão. Adicione todos os segredos à configuração Development > Dev. Assim, você poderá atualizar os segredos em todas as configurações derivadas. Clique na configuração Development > Dev e, em seguida, em Add First Secret.

Crie um segredo chamado `SECRET_TOKEN` com o valor que está definido diretamente no código. Depois, clique em salvar.

Agora que adicionamos o segredo ao Doppler, podemos usá-lo no código. Substitua o valor do token definido diretamente no código por uma variável de ambiente. Vamos usar a Doppler CLI para injetar os segredos na aplicação. O código deve ficar assim:
A Doppler CLI dá acesso aos seus segredos em todos os ambientes, do desenvolvimento local à CI/CD, homologação e produção. É um binário leve, disponível para todos os principais sistemas operacionais, gerenciadores de pacotes e Docker.
Siga as instruções para configurar a Doppler CLI no seu sistema na página de instalação da Doppler CLI. No Doppler, o acesso aos segredos de um projeto é limitado a um diretório específico do sistema de arquivos. Isso permite buscar segredos de vários projetos em uma única máquina.
No terminal, acesse o diretório do projeto Goof e configure o Doppler.
Selecione o projeto goof.

Selecione a configuração dev:

Para usar seus segredos, acrescente o comando `‘doppler run’` ao iniciar a aplicação. Esse comando vai injetar os segredos no ambiente da aplicação.
Lembre-se de adicionar todos os seus segredos e configurar os ambientes de acordo com as necessidades da sua aplicação e da sua equipe. Você também pode configurar reinicializações automáticas da aplicação quando editar segredos.
Proteja segredos com Snyk e Doppler
Snyk e Doppler são ótimos exemplos de ferramentas para desenvolvedores que funcionam ainda melhor juntas. Comece a integrar o Snyk e o Doppler hoje mesmo e veja como essas ferramentas poderosas podem simplificar seu processo de desenvolvimento. Confira o Snyk e o Doppler em ação e dê o primeiro passo rumo a um fluxo de trabalho mais seguro e eficiente.

