Guia rápido da Snyk CLI
26 de novembro de 2020
0 minutos de leituraÚltima atualização: abril de 2022
Você tem uma versão antiga do guia rápido da Snyk CLI? Baixe a versão mais recente abaixo.
A Snyk CLI é uma ferramenta poderosa para analisar seus aplicativos, contêineres e infraestrutura como código em busca de vulnerabilidades de segurança. Neste guia rápido, vamos explorar os recursos mais avançados da nossa CLI. Você pode usá-la para analisar e monitorar projetos na sua máquina ou integrá-la ao seu pipeline. Seja qual for o uso, a Snyk CLI é a ferramenta ideal para testar, monitorar e corrigir vulnerabilidades conhecidas nos seus aplicativos.
Estamos sempre aprimorando nossa CLI, que oferece muito mais recursos do que conseguiríamos abordar em um único guia. Para uma visão mais detalhada, consulte a documentação da Snyk CLI. Para saber mais sobre o que a CLI pode fazer com uma linguagem de programação ou sistema de build específico, confira nossa página de suporte a linguagens:
JavaScript (npm, yarn)
Java e Kotlin (maven | Gradle)
.Net (Nuget, Paket)
Python (Pip, Poetry)
PHP (composer)
Ruby (Bundler)
Go (dep, govendor)

Instalação
Vamos começar pelo início. Se você ainda não instalou a Snyk CLI, faça isso primeiro. Atualmente, você pode instalar a Snyk CLI com npm, Homebrew ou Scoop, ou baixar um binário específico do GitHub.
npm
Homebrew
Scoop
Instalação manual
Há um instalador manual disponível na página do GitHub da Snyk.
Autenticação
Depois de instalar a CLI, você precisa se autenticar com sua conta Snyk. Há algumas maneiras de fazer isso.
Ao executar snyk auth, o navegador redireciona você para a página de cadastro ou login, onde poderá se autenticar ou criar uma conta.
Outra opção é executar snyk auth [api-token] e informar um token de API da Snyk, que você pode obter na página da sua conta.
A última opção, que recomendamos especialmente para testes de CI, é criar uma variável de ambiente chamada SNYK_TOKEN. Todos os comandos da Snyk CLI usarão essa variável sem que você precise executar snyk auth explicitamente.
Dica profissional:Atualize e reinstale a CLI com frequência. Lançamos correções e novas versões da CLI regularmente. Não deixe de conferir os recursos novos e aprimorados.
Comandos da CLI
A Snyk CLI recebe um comando seguido de várias opções. Execute os comandos da CLI na pasta do projeto. Vamos ver o que cada comando faz.
Snyk test
O comando snyk test testa um projeto local em busca de vulnerabilidades conhecidas. Ele informa detalhes sobre as vulnerabilidades, como gravidade, tipo e descrição, o número de caminhos vulneráveis, as ações de correção e muito mais. A Snyk CLI detecta automaticamente os arquivos de manifesto e testa o primeiro que encontra. Como a Snyk procura dependências locais para identificar vulnerabilidades, você precisa baixar a árvore de dependências antes de executar snyk test. Para isso, execute comandos como npm install, mvn install, dotnet restore ou dep ensure.
O Snyk test também é útil em um pipeline de CI. Executar snyk test durante o build mostra se o projeto contém vulnerabilidades. Se quiser, você pode até interromper o pipeline. Para executar snyk test em um script, basta verificar o código de saída. Se for 0, está tudo certo e nenhuma vulnerabilidade foi encontrada. Caso contrário, provavelmente ainda há trabalho a fazer.
Se o projeto tiver vários arquivos de manifesto, você poderá testar um específico. Use a flag --file para indicar o arquivo que deseja analisar.
Da mesma forma, você pode especificar o gerenciador de pacotes usando a flag --package-manager. Isso é útil nos casos excepcionais em que a Snyk não detecta automaticamente o gerenciador de pacotes.
Para testar todos os projetos de uma pasta, use a flag --all-projects. Ela detecta e analisa automaticamente o diretório atual, testando todos os arquivos de manifesto encontrados. Por padrão, a Snyk analisa o diretório atual e mais três níveis de profundidade. Para alterar esse limite, basta adicionar a opção --detection-depth.
Por padrão, a Snyk não testa as dependências de desenvolvimento, pois muitas pessoas consideram que elas geram ruído em comparação com as vulnerabilidades de produção. Para incluir também as dependências de desenvolvimento, use a flag --dev.
Outra flag útil para o comando test e outros comandos da Snyk é --org. Ela associa um teste ou qualquer comando da Snyk a uma organização específica. As organizações são espaços onde você pode agrupar projetos e associar vários usuários. Isso é especialmente útil para trabalhar em equipe e criar snapshots com snyk monitor. Se você não especificar uma organização, os resultados serão associados à sua organização padrão.
Se quiser testar repositórios públicos pela linha de comando, é só informar a URL do repositório diretamente no comando. Isso só funciona com repositórios npm que tenham um arquivo package-lock.json. Experimente:
Você também pode testar pacotes npm remotamente passando apenas o nome do pacote para testar a versão mais recente, ou informando o nome e a versão completos.

Depois de executar snyk test em um projeto, os resultados são apresentados em três seções.
Problemas corrigidos com uma atualização:Ao atualizar a biblioteca conforme a recomendação, você elimina uma ou mais vulnerabilidades encontradas no projeto.
Problemas com patch disponível:Não há uma atualização disponível para corrigir o problema. No entanto, a Snyk criou um patch para corrigir a vulnerabilidade.
Problemas sem atualização direta ou patch:Não há uma atualização disponível para a dependência importada. A vulnerabilidade pode estar em uma das dependências transitivas. Se já existir uma versão mais recente da dependência transitiva que corrija a vulnerabilidade, também mostraremos essa informação. Em alguns ecossistemas, é possível substituir manualmente as dependências transitivas, então esse dado é útil.
Para cada vulnerabilidade exibida pela CLI em uma dessas três seções, você pode consultar uma descrição, o nível de gravidade e um link com mais informações sobre o problema específico.
Se preferir receber os resultados da CLI no formato JSON, use a flag --json. Com a saída em JSON, você pode formatar os resultados como quiser.
Salvar os resultados da análise em um arquivo JSON é ainda mais simples. Com a flag --json-file-output flag, você salva o resultado diretamente no arquivo que quiser para consultar depois. Enquanto isso, os resultados continuarão sendo exibidos no console em um formato legível, como mostramos antes. Essa é uma ótima solução para pipelines de CI, por exemplo, quando você quer exibir em um painel os resultados de um build específico. Experimente:
Também temos um conversor de JSON para HTML da Snyk, que formata os resultados em um relatório HTML bem organizado para você apresentar à sua liderança.
Com a flag --severity-threshold, você controla a saída da CLI por nível de gravidade. Se não quiser incluir vulnerabilidades de gravidade média ou baixa, remova-as dos resultados assim:
Snyk monitor
O comando snyk monitor cria um snapshot do seu projeto e envia os resultados para o site da Snyk. Embora snyk monitor use snyk test nos bastidores, é importante saber que ele não substitui esse comando: o Snyk monitor cria um snapshot e acompanha sua evolução ao longo do tempo. Quando são encontradas novas vulnerabilidades ou novas formas de corrigir problemas no projeto, você recebe um alerta pelo canal de comunicação escolhido.
Em um ambiente de CI, normalmente você executa snyk test primeiro para verificar se há vulnerabilidades naquele momento. Se houver, você poderá interromper o build, dependendo do caso de uso. Depois, geralmente se usa snyk monitor para criar um snapshot daquela versão e monitorá-la ao longo do tempo. Um ótimo momento para fazer isso é logo antes de colocar o projeto em produção. Quando você estiver confortável com determinado nível de vulnerabilidades, o snyk monitor ajuda a evitar que a situação piore com o tempo.
Ao executar snyk monitor, é importante especificar informações suficientes para garantir que o snapshot seja salvo no local esperado. Se você participa de várias organizações, indique para qual delas deseja enviar o snapshot usando a flag --org. Se houver projetos com nomes parecidos, você pode substituir o nome padrão que a Snyk atribui aos snapshots pelo nome que preferir, usando a flag --project-name.
Snyk ignore
Imagine que seu aplicativo tenha uma vulnerabilidade sem patch ou atualização disponível para corrigi-la, ou uma vulnerabilidade que você não considera explorável no momento. Nesse caso, você pode pedir à Snyk para ignorá-la por um período determinado. Para usar o comando ignore, primeiro execute snyk test e obtenha o ID da vulnerabilidade, que aparece nos resultados da CLI. Depois, você pode ignorá-la com o seguinte comando:
As flags --expiry e --reason são opcionais. Por padrão, a vulnerabilidade de segurança é ignorada por 30 dias.
Observação: o comando snyk ignore cria um arquivo .snyk com informações sobre o problema de segurança que você está ignorando.
Snyk Container
Snyk Container é o recurso da CLI para analisar imagens de contêiner, como imagens Docker. Antes, esse recurso era acessado pela flag --docker na CLI.
Assim como na análise e no monitoramento do seu aplicativo, você pode usar a Snyk para analisar imagens Docker.
Para baixar imagens do Docker Hub, você pode analisar e monitorar a imagem assim:
Ao adicionar um Dockerfile a qualquer um desses comandos, a Snyk oferece recomendações de correção para a imagem-base usada, entre outras coisas. Se houver outras imagens-base disponíveis para a imagem que você criou, podemos indicar essas alternativas.
O Snyk Container oferece suporte não só a contêineres Docker, mas também a imagens distroless. Você pode analisá-las assim:
Também é possível analisar e monitorar arquivos de contêiner com os recursos do Snyk Container. A análise funciona tanto para arquivos de contêiner Docker quanto para imagens da Open Container Initiative (OCI).
Assim como na análise dos seus aplicativos, as flags --json e --json-file-output estão disponíveis para facilitar a integração com seus próprios sistemas.
Saiba mais sobre o Snyk CLI Container
Snyk Infrastructure as Code (Snyk IaC)
Com os recursos de análise do Snyk Infrastructure as Code, ajudamos desenvolvedores a encontrar e corrigir configurações incorretas que podem causar problemas de segurança. Com o comando snyk iac, você também pode usar esse recurso na Snyk CLI, na sua máquina local ou no ambiente de CI. Assim, você recebe feedback o quanto antes no ciclo de desenvolvimento. O Snyk IaC oferece suporte a recursos do Kubernetes, Helm Charts e Terraform AWS.
Para analisar um arquivo do Kubernetes ou Terraform, experimente algo assim:
Assim como no snyk test, os problemas encontrados pelo snyk iac incluem uma descrição e um nível de gravidade. Se você precisar dos resultados no formato JSON para integrar ao seu sistema, também pode usar as flags --json e --json-file-output:
O Snyk IaC também permite detectar e acompanhar desvios na infraestrutura e recursos não gerenciados, além de gerar alertas sobre eles:
$ snyk iac describe <OPTIONS>
Saiba mais sobre o Snyk CLI IaC
Solução de problemas
Se não souber qual comando usar ou como funciona uma flag específica, você pode usar a opção --help ou executar snyk help.
Depuração
Se algo não funcionar, você pode pedir à CLI que exiba os registros de depuração usando a flag -d. Ao falar com nossa excelente equipe de suporte, provavelmente vão pedir que você faça isso também:
Está ficando sem testes em um projeto de código aberto?
A análise do Snyk é gratuita e ilimitada para desenvolvimento de projetos de código aberto. No entanto, nem sempre reconhecemos um projeto como sendo de código aberto. Se a saída da CLI avisar que você está ficando sem testes, siga estas etapas para comprovar que seu projeto é, de fato, de código aberto.
Execute
snyk monitorAcesse sua aplicação no navegador. (O URL direto está na saída da CLI.)
Clique em Settings no menu
Insira o URL do seu repositório de código aberto no campo Git remote URI.

Resultados de teste inesperados?
Para obter os melhores resultados, compile o projeto completo antes de executar qualquer comando da CLI. Se a saída de snyk test ou snyk monitor não for a esperada, execute sua ferramenta de build para baixar e instalar todas as dependências.
Por exemplo:
Remover sua chave de API e configuração
Se você autenticou sua CLI com snyk auth, pode remover seu token da configuração usando o seguinte comando:
Para saber mais sobre outras configurações, execute:
Confira sua versão
Use sempre a versão mais recente da nossa CLI. Lançamos uma nova versão várias vezes por semana e, às vezes, até com mais frequência.
Instale ou atualize para a versão mais recente usando seu gerenciador de pacotes, conforme descrito na primeira seção, ou procure a versão mais recente no nosso repositório no GitHub.
Para conferir sua versão atual, basta executar:
Consulte a documentação
Cada projeto e ecossistema tem necessidades específicas. Consulte a documentação da CLI e a documentação de suporte a linguagens para encontrar ajuda para um caso de uso mais específico.
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.
