Snyk fix: correção automática de vulnerabilidades pela CLI do Snyk
7 de outubro de 2021
0 minutos de leituraTemos o prazer de anunciar a versão beta aberta de um novo comando da CLI do Snyk que torna mais fácil do que nunca encontrar e corrigir vulnerabilidades: o comando snyk fix!
A CLI do Snyk já é uma ferramenta extremamente versátil e poderosa, usada por desenvolvedores para encontrar e corrigir vulnerabilidades em seus projetos — manualmente, no ambiente de desenvolvimento local, ou automaticamente, como parte de um pipeline de CI/CD.
Com o snyk test, usuários do Snyk podem analisar seus projetos e receber uma lista de todas as vulnerabilidades identificadas. Se houver uma atualização de dependência capaz de corrigir a vulnerabilidade, a CLI do Snyk apresentará recomendações, além de todas as informações necessárias sobre a atualização e a correção da vulnerabilidade.
O novo comando snyk fix vai além e aplica essas recomendações automaticamente. Ele pode ser especialmente útil para desenvolvedores que precisam aplicar correções rapidamente durante o fluxo de trabalho de desenvolvimento local ou para quem quer automatizar as correções como parte do CI/CD.
Antes de analisarmos o comando em mais detalhes, confira algumas informações sobre disponibilidade e ecossistemas compatíveis:
O comando
snyk fixestá em beta aberta, então é possível que você encontre problemas durante o uso.No momento, há suporte apenas a projetos Python que usam Pip, Pipenv e Poetry. Consulte a documentação do
snyk fixpara saber mais.
Vamos começar!
Configure a CLI do Snyk
Primeiro, verifique se você instalou a CLI do Snyk. Se já conhece a ferramenta e a instalou, confira se está usando a versão v1.715.0 ou posterior.
É simples configurar a CLI do Snyk. Você pode instalá-la rapidamente com npm ou Homebrew. Depois, basta autenticar-se com sua conta do Snyk (se ainda não tiver uma, cadastre-se gratuitamente aqui):
Seu navegador será aberto com uma solicitação para autenticar a CLI. Basta fazer a autenticação. Agora você já pode usar a CLI do Snyk para analisar seus projetos em busca de vulnerabilidades.
Vamos executar a CLI do Snyk pela primeira vez e rodar um teste. Para esta demonstração, vou usar este fork do projeto PyGoat:

Como mostram os resultados do teste acima, a CLI do Snyk identificou 8 vulnerabilidades e recomenda atualizações para corrigi-las.
E agora? No final dos resultados do teste, a CLI do Snyk recomenda ativar o novo comando snyk fix. Esse é o nosso próximo passo!
Ative o snyk fix
Como mencionamos no início, o novo comando snyk fix está em beta aberta. Para usá-lo, primeiro é preciso ativar o recurso. Isso é feito pelo Snyk Preview — uma área dedicada na interface do Snyk que dá acesso a novos recursos ainda em desenvolvimento.
No Snyk, acesse Configurações e depois Snyk Preview. Em “Aplicar automaticamente as correções recomendadas na CLI”, ative o snyk fix (1) e clique no botão Salvar alterações (2) para aplicar a mudança.

Corrija vulnerabilidades no seu ambiente local
Agora que ativamos o novo comando, vamos testá-lo. Na CLI, digite:
Quando possível, a CLI do Snyk aplica automaticamente as atualizações de versão recomendadas para corrigir as vulnerabilidades identificadas e exibe um resumo dos resultados:

No nosso aplicativo PyGoat, 6 das 8 vulnerabilidades foram corrigidas. Uma nova análise mostra que restam dois problemas: uma vulnerabilidade de gravidade média no pacote Jinja2 e uma licença LGPLv3.0 encontrada no pacote psycopg2.
Como próximo passo, você pode pedir à CLI do Snyk que monitore continuamente o projeto e avise quando houver uma correção para essa vulnerabilidade restante ou quando novas vulnerabilidades forem identificadas nessas dependências. Para isso, use:
Corrija vulnerabilidades como parte do seu CI/CD
O novo comando snyk fix também pode automatizar correções como parte dos seus pipelines de CI/CD. Vamos ver um exemplo com o GitHub Actions.
O GitHub criou o GitHub Actions para ajudar desenvolvedores a automatizar fluxos de trabalho de integração contínua. As GitHub Actions do Snyk facilitam a integração do Snyk a esses fluxos e a análise dos seus projetos em busca de vulnerabilidades — tudo como parte do seu fluxo de CI/CD automatizado e diretamente no GitHub. Agora, você também pode corrigir vulnerabilidades como parte desse fluxo.
Mais especificamente, vamos usar esta action, que executa o seguinte fluxo de trabalho:
Init — para evitar atualizações incrementais de versão, o fluxo começa verificando a mensagem do último commit e não executa novamente o
snyk fixse o último commit já tiver sido uma correção automatizada.Security — o fluxo executa o
snyk fixpara procurar vulnerabilidades e abre um PR quando identifica uma atualização possível.
É simples usar a action.
As GitHub Actions do Snyk usam uma variável de ambiente chamada SNYK_TOKEN. Esse é o seu token da API do Snyk. Você precisará obtê-lo antes de configurar a GitHub Action. Ele está disponível na página Configurações da interface do Snyk.

Com o token em mãos, defina-o como um secret nas configurações do seu repositório, em Settings | Secrets:

Agora você já pode configurar a action do Snyk. No seu repositório do GitHub, abra a aba Actions e clique no botão New workflow, no canto superior esquerdo.
O GitHub oferece alguns modelos de actions com base na linguagem de programação do repositório. Para configurar a GitHub Action do Snyk, clique em set up a workflow yourself, no topo da página:

Substitua o código de exemplo pelo código abaixo (lembre-se de informar o nome das suas branches nos namespaces correspondentes da configuração):
Pronto! Ao fazer commit do novo arquivo, você abre um novo PR que aciona o fluxo e simula a automação das correções com o comando snyk fix. Confira este fluxo, que mostra todas as etapas:

Conforme definido no fluxo de trabalho, um novo PR é aberto com as correções recomendadas:

Experimente o snyk fix!
Um dos motivos para criarmos o Snyk Preview foi dar aos usuários acesso antecipado a recursos que ainda estão em desenvolvimento e em fase beta. O snyk fix é um ótimo exemplo de recurso novo sobre o qual gostaríamos muito de receber feedback da comunidade antes de lançá-lo oficialmente. Experimente e conte para nós o que achou: snyk-fix-feedback@snyk.io
Você encontra mais informações sobre como usar o novo comando e o que é compatível ou não na nossa documentação do snyk fix.
Boas correções!
Comece a participar de desafios de Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.


