Skip to main content

Guia rápido da Snyk CLI

Escrito por
Blog Headers cli cheat sheet

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:

Guia de referência rápida da Snyk CLI com seções numeradas sobre instalação, autenticação, análise de projetos, monitoramento, análise de código e contêineres e documentação.
Baixe a folha de dicas

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

npm install snyk -g

Homebrew

brew tap snyk/tap && brew install snyk

Scoop

scoop bucket add snyk https://github.com/snyk/scoop-snyk
scoop install snyk

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.

$ snyk [cmd] --file=package.json

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.

$ snyk test --file=req.txt --package-manager=pip

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.

$ snyk test --all-projects --detection-depth=4

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.

$ snyk test --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.

$ snyk [cmd] --org=<org_id>

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:

$ snyk test https://github.com/snyk/goof

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.

$ snyk test lodash
$ snyk test ionic@1.6.5
Relatório de vulnerabilidades no terminal com problemas atualizáveis, corrigíveis e não resolvidos, níveis de gravidade e versões dos pacotes.

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.

$ snyk test --json

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:

$ snyk test --json-file-output=vuln.json

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 [cmd] --severity-threshold=high

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 monitor --file=package.json --project-name=myapp --org=myorg

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:

$ snyk ignore --id=npm:tough-cookie:20160722 --expiry=2019-04-30 --reason='Not currently exploitable'

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:

$ snyk container test <image>:<tag>
$ snyk container monitor <image>:<tag>

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:

$ snyk container test gcr.io/distroless/base | head

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).

$ snyk container test docker-archive:container.tar
$ snyk container test oci-archive:container.tar

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:

$ snyk iac test /path/to/Kubernetes.yaml
$ snyk iac test /path/to/terraform_file.tf

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:

$ snyk iac test /path/to/Kubernetes.yaml --json

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.

$ snyk auth --help
$ snyk container --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:

$ snyk [cmd] -d

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.

  1. Execute snyk monitor

  2. Acesse sua aplicação no navegador. (O URL direto está na saída da CLI.)

  3. Clique em Settings no menu

  4. Insira o URL do seu repositório de código aberto no campo Git remote URI.

Formulário de código aberto com instruções, um campo para inserir o URI de um repositório Git remoto e um botão Salvar

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:

$ npm install
$ mvn install
$ dotnet restore
$ dep ensure

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:

$ snyk config unset api

Para saber mais sobre outras configurações, execute:

$ snyk help config

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:

$ snyk --version

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.