Plugin de Snyk para Maven: análisis integrado de vulnerabilidades de seguridad para desarrolladores
20 de abril de 2021
0 minutos de lecturaMaven es el sistema de compilación más utilizado en el ecosistema de Java desde hace muchos años. Crear tu aplicación con Maven es fácil porque se encarga de muchas tareas. En las distintas fases del ciclo de vida de Maven, realiza tareas como:
Descargar dependencias
Compilar tu código Java
Ejecutar pruebas unitarias
Crear un artefacto listo para distribuir
Pruebas de integración
Y mucho más
Con Maven, el ciclo de desarrollo se lleva a cabo de la misma manera en cada máquina de cada desarrollador del equipo, así como en el pipeline de CI. Como Maven ya descarga las dependencias necesarias y ejecuta las pruebas, ¿no sería genial integrar sin complicaciones el análisis de vulnerabilidades en este ciclo? Eso es precisamente lo que hace el plugin de Snyk para Maven.
Es fundamental analizar las dependencias de tu proyecto para detectar vulnerabilidades de seguridad conocidas. El momento ideal para empezar a revisar tus dependencias es justo cuando las importas. Por eso creamos el plugin de Snyk para Maven: ahora puedes analizar tu aplicación en busca de vulnerabilidades de seguridad en bibliotecas de terceros como parte del ciclo de compilación y poner la experiencia en seguridad al alcance de los desarrolladores.
Si quieres ver el plugin en acción antes de seguir leyendo, aquí tienes el video ideal…

El plugin de Snyk para Maven
El plugin de Snyk para Maven ya está disponible de forma general y se publica en Maven Central. Solo tienes que configurarlo en el archivo pom.xml. A continuación, puedes ver la configuración predeterminada del plugin.
Como puedes ver, distinguimos dos objetivos diferentes: test y monitor. Después de agregar el plugin a tu proyecto, solo tienes que ejecutar mvn snyk:test o mvn snyk:monitor. De forma predeterminada, el objetivo snyk test se conecta a la fase test del ciclo de vida de Maven. Esto significa que, cuando termina la fase test de Maven, el objetivo Snyk test se ejecuta automáticamente. El objetivo Snyk monitor se conecta a la fase install y funciona de la misma manera.
Al igual que con cualquier otro plugin de Maven, puedes cambiar este comportamiento. En la sección execution, solo tienes que agregar una etiqueta <phase>. Puedes asignarle una fase existente, como test, package o verify, o ninguna. En el ejemplo de abajo, conecté snyk-test a la fase verify y snyk-monitor a none. Así, mvn snyk:monitor sigue estando disponible para ejecutarlo manualmente, pero no se ejecutará automáticamente como parte de una fase del ciclo de compilación.
Ten en cuenta que, si quieres omitir la ejecución del objetivo de Snyk en tu ciclo de vida, solo tienes que agregar -Dsnyk.skip al comando. Por ejemplo:
¿Cómo funciona el nuevo plugin de Snyk para Maven?
Ya existía un plugin de Snyk para Maven, pero usaba una lógica personalizada para determinar el árbol de dependencias. Por eso, los resultados de la CLI y del plugin anterior de Maven podían ser ligeramente diferentes.
Al igual que el plugin de Gradle, el nuevo plugin de Snyk para Maven ahora usa la Snyk CLI internamente. Descarga y actualiza automáticamente el binario adecuado de la CLI, así que no necesitas tenerla instalada previamente. Lo único que necesitas es una cuenta gratuita de Snyk para obtener el token de API.
Configurar el plugin de Snyk para Maven
Para configurar el plugin, debes establecer el token de API para habilitar el análisis de seguridad de dependencias con Snyk. Puedes encontrar el token en la sección Configuración general de tu cuenta de Snyk. También puedes crear un token específico para una cuenta de servicio.

En el primer ejemplo de esta publicación, no incluí el token en el archivo pom. En su lugar, creé una variable de entorno global llamada SNYK_TOKEN en mi máquina e hice referencia a ella.
Así, no tengo el token secreto en el archivo pom, lo que resulta especialmente útil cuando publicas tu código en un repositorio de código abierto.
En la sección <args> de la configuración, puedes proporcionar cualquier indicador que normalmente usarías con la CLI. En este ejemplo, proporciono el indicador --all-projects. De esta manera, se analizan todos mis proyectos en una sola ejecución, sin importar el ecosistema. Esto resulta especialmente útil si tu proyecto usa varios archivos pom.
Además, si quieres, también puedes configurar opciones específicas de la CLI. De forma predeterminada, la CLI se actualiza automáticamente una vez al día, en la primera ejecución. Sin embargo, si quieres usar un binario o una versión específicos de la CLI, o cambiar la estrategia de actualización, puedes agregar un objeto <cli> dentro de <configuration>. Todas las opciones posibles están documentadas en el repositorio de GitHub. En el ejemplo de abajo, cambio <updatePolicy> a always. Como resultado, el plugin busca actualizaciones de la CLI en cada ejecución, no solo una vez al día.
Agrega seguridad al ciclo de vida de Maven
Integrar el análisis de Snyk Open Source en el ciclo de compilación de Maven se siente muy natural y fluido. Con el nuevo plugin de Snyk para Maven, la integración es sencilla y se ejecuta de la misma manera en todas las máquinas, incluido tu pipeline de CI. Ya no tienes que ejecutar la CLI manualmente y la configuración para ejecutar el análisis de Snyk Open Source se guarda como parte del proyecto. Una cosa menos de la que preocuparse para los desarrolladores.
Para obtener más información sobre el plugin, visita nuestro repositorio de GitHub. Y no olvides registrarte para obtener una cuenta gratuita de Snyk antes de usar esta excelente integración.
Te recomiendo mucho consultar estos recursos relacionados:
Dependencias de Gradle: análisis con el nuevo plugin de Snyk para Gradle
Cómo corregir problemas de seguridad de Java mientras programas en IntelliJ IDEA
Empieza con los desafíos de Capture the Flag
Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.
