Plugin do Snyk para Maven: análise integrada de vulnerabilidades de segurança para desenvolvedores
20 de abril de 2021
0 minutos de leituraO Maven é o sistema de build mais usado no ecossistema Java há muitos anos. Criar sua aplicação com o Maven é fácil, pois ele cuida de muitas tarefas para você. Em diferentes fases do ciclo de vida do Maven, ele realiza tarefas como:
Baixar dependências
Compilar seu código Java
Executar testes unitários
Criar um artefato pronto para distribuição
Testes de integração
E muito mais
Com o Maven, o ciclo de desenvolvimento acontece da mesma forma em todas as máquinas de todos os desenvolvedores da equipe, além de também ocorrer assim no pipeline de CI. Como o Maven já baixa as dependências necessárias e executa os testes, não seria ótimo integrar a análise de vulnerabilidades a esse ciclo de forma simples? É exatamente isso que o plugin do Snyk para Maven faz.
É essencial analisar as dependências do seu projeto em busca de vulnerabilidades de segurança conhecidas. O momento ideal para começar a verificar suas dependências é assim que você as importa! Por isso, criamos o plugin do Snyk para Maven: agora você pode analisar sua aplicação em busca de vulnerabilidades de segurança em bibliotecas de terceiros durante o ciclo de build, levando conhecimento especializado em segurança para as mãos dos desenvolvedores.
Se quiser ver o plugin em ação antes de continuar lendo, tenho um vídeo para você...

O plugin do Snyk para Maven
O plugin do Snyk para Maven já está disponível publicamente no Maven Central. Basta configurá-lo no arquivo pom.xml. Abaixo, você encontra a configuração padrão do plugin.
Como você pode ver, há dois objetivos diferentes: test e monitor. Depois de adicionar o plugin ao seu projeto, basta chamar mvn snyk:test ou mvn snyk:monitor. Por padrão, o objetivo snyk test é associado à fase test do ciclo de vida do Maven. Isso significa que o objetivo Snyk test é executado automaticamente após a conclusão da fase test do Maven. O objetivo Snyk monitor é associado à fase install e funciona da mesma forma.
Assim como acontece com qualquer outro plugin do Maven, você pode alterar esse comportamento. Na seção de execução, basta adicionar uma tag <phase>. Ela pode ser definida como uma fase existente, como test, package ou verify, ou como none. No exemplo abaixo, associei snyk-test à fase verify e snyk-monitor a none. Agora, mvn snyk:monitor continua disponível para execução manual, mas não será executado automaticamente como parte de uma fase do ciclo de build.
Se quiser ignorar a execução do objetivo Snyk no seu ciclo de vida, basta adicionar -Dsnyk.skip ao comando. Exemplo:
Como funciona o novo plugin do Snyk para Maven?
Já existia um plugin do Snyk para Maven, mas ele usava uma lógica própria para determinar a árvore de dependências. Por isso, os resultados da CLI e do antigo plugin do Maven podiam ser um pouco diferentes.
Assim como o plugin do Gradle, o novo plugin do Snyk para Maven agora usa a Snyk CLI internamente. Ele baixa e atualiza automaticamente o binário apropriado da CLI, então não é necessário instalá-la antes. Você só precisa de uma conta gratuita do Snyk para obter o token de API.
Configurando o plugin do Snyk para Maven
Para configurar o plugin, você precisa definir o token de API para ativar a análise de segurança das dependências com o Snyk. Você encontra o token na seção Configurações gerais da sua conta do Snyk. Outra opção é criar um token específico para uma conta de serviço.

No primeiro exemplo desta publicação, não incluí o token no arquivo pom. Em vez disso, criei uma variável de ambiente global chamada SNYK_TOKEN na minha máquina e fiz referência a ela.
Assim, não deixo meu token secreto no arquivo pom, o que é especialmente útil quando você publica seu código em um repositório de código aberto.
Na seção <args> da configuração, você pode informar qualquer flag que normalmente usaria na CLI. No meu exemplo, informo a flag --all-projects. Assim, todos os meus projetos, independentemente do ecossistema, são analisados de uma só vez. Isso é especialmente útil se você usa vários arquivos pom no projeto.
Além disso, se quiser, você também pode configurar alguns detalhes específicos da CLI. Por padrão, a CLI é atualizada automaticamente na primeira execução do dia. Mas, se quiser usar um binário ou uma versão específica da CLI, ou alterar a estratégia de atualização, você pode adicionar um objeto <cli> dentro de <configuration>. Todas as configurações possíveis estão documentadas no repositório do GitHub. No exemplo abaixo, defino <updatePolicy> como always. Com isso, o plugin verifica se há atualizações da CLI em todas as execuções, e não apenas uma vez por dia.
Adicione segurança ao ciclo de vida do Maven
Integrar a análise do Snyk Open Source ao ciclo de build do Maven é simples e natural. Com o novo plugin do Snyk para Maven, essa integração é perfeita e pode ser executada da mesma forma em todas as máquinas, inclusive no pipeline de CI. Você não precisa mais chamar a CLI manualmente, e a configuração da análise do Snyk Open Source fica armazenada como parte do projeto. Menos uma preocupação para os desenvolvedores.
Para saber mais sobre o plugin, acesse nosso repositório no GitHub. E não se esqueça de criar uma conta gratuita do Snyk antes de usar essa ótima integração.
Confira também estes recursos, que recomendo muito:
Dependências do Gradle: análise com o novo plugin do Snyk para Gradle
Como corrigir problemas de segurança em Java enquanto você programa no IntelliJ IDEA
Comece a resolver desafios de capture the flag
Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.
