Aproveite ao máximo o snyk test com JSON
Tim Kadlec
29 de junho de 2017
0 minutos de leituraA execução de snyk test verifica as dependências do seu aplicativo e testa se alguma delas contém vulnerabilidades conhecidas. Se forem encontradas vulnerabilidades, o comando retornará um erro e exibirá no console informações sobre elas e como corrigi-las.
Ele funciona muito bem em um ambiente de CI e fornece muitas informações úteis para você tomar medidas. Mas, às vezes, você pode querer ir além: manipular os resultados dos testes de alguma forma ou criar um relatório local fácil de compartilhar. É aí que entra a opção --json, que gera em JSON os resultados de snyk test.
Vamos mostrar algumas coisas que você pode fazer usando snyk test --json e ferramentas gratuitas.
A opção JSON
A execução de snyk test --json gera um objeto JSON com informações úteis e básicas sobre o seu projeto. Este é o formato básico desse objeto atualmente:
Além disso, vulnerabilities contém informações detalhadas sobre cada vulnerabilidade encontrada:
Com todas essas informações, você pode personalizar os resultados do Snyk test de várias maneiras.
Ordenação personalizada de vulnerabilidades
Por padrão, snyk test informa as vulnerabilidades na ordem em que são encontradas na árvore de dependências gerada.
Você pode usar várias ferramentas para ajustar e reordenar os resultados, mas vamos usar o jq. O jq é um processador de JSON de linha de comando. Com ele, você pode direcionar dados JSON, filtrá-los e, em seguida, direcionar os dados resultantes para a saída.
Com o jq, você pode ordenar os resultados como quiser. Por exemplo, é possível ordenar as vulnerabilidades pela data de publicação, para que as mais recentes apareçam primeiro.
Com mais algumas linhas, você também pode ordenar as vulnerabilidades por gravidade, para que as mais críticas apareçam primeiro.
Gravidade personalizada para vulnerabilidades
Você também pode usar o jq para alterar a gravidade de uma vulnerabilidade que, por algum motivo, deveria ter uma classificação diferente daquela definida pelo Snyk.
Por exemplo, talvez seu site dependa de uma versão do Nokogiri que contém uma vulnerabilidade de execução arbitrária de código de alta gravidade, mas sua equipe concluiu que a forma como o Nokogiri é usado torna o problema menos grave. Você pode usar o jq para alterar a gravidade da vulnerabilidade nos relatórios.
Gere um relatório HTML local
O painel online do seu projeto detalha cada vulnerabilidade: gravidade, descrição, caminhos vulneráveis e muito mais. Se quiser uma cópia local baseada nos resultados de snyk test, use o Snyk JSON to HTML Mapper, nossa ferramenta de código aberto.
O mapper recebe snyk test --json e gera um relatório HTML local sem recursos externos. Para usá-lo, instale-o globalmente com npm install -g snyk-to-html. Depois, ao executar o comando test, você pode direcionar os resultados diretamente para o módulo, assim:
O comando acima cria um relatório local com um belo estilo, sem dependências externas.

Se você estiver personalizando a saída JSON com jq, também poderá direcionar os resultados alterados. Por exemplo, o comando a seguir gera um relatório HTML local com as vulnerabilidades ordenadas pela data de publicação.
Relatórios personalizados com JSON
A execução de snyk test por si só já fornece muitas informações úteis. Se você precisar de um pouco mais de flexibilidade, snyk test --json resolve. Com algumas ferramentas gratuitas e um pouco de criatividade, você pode personalizar os resultados do Snyk para atender às suas necessidades.
Se você usa a saída JSON para criar relatórios ou funcionalidades personalizadas, conte para a gente. Adoraríamos saber o que você criou!
Comece a jogar Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.