Dependencias de Gradle: análisis con el nuevo plugin de Snyk para Gradle
23 de octubre de 2020
0 minutos de lecturaGradle es uno de los principales sistemas de compilación, tanto en el ecosistema de Java como en el desarrollo de Android. Con Gradle, puedes administrar las dependencias, compilar y probar tu proyecto.
Es importante analizar las dependencias de tu proyecto para detectar vulnerabilidades de seguridad conocidas. El momento ideal para empezar a analizarlas es justo cuando las importas. Para eso, creamos un plugin para Gradle con el que puedes analizar tu aplicación en busca de vulnerabilidades de seguridad en bibliotecas de terceros como parte de tu ciclo de compilación.
Plugin de Snyk para Gradle
El plugin de Snyk para Gradle está publicado en el portal de plugins de Gradle, por lo que es fácil incluirlo en tu proyecto de Gradle.

Para usarlo, solo tienes que declarar el plugin con el DSL de plugins.
Groovy:
Kotlin:
Configuración
Para usar el plugin necesitas una cuenta de Snyk. Si todavía no tienes una, puedes crearla aquí. ¿Ya mencioné que una cuenta de Snyk es totalmente gratis?
Hay varias formas de configurar tu clave de API:
Puedes configurarla directamente en tu archivo de Gradle, como te mostraré más adelante. Sin embargo, quizás quieras evitar que este token quede expuesto públicamente, por ejemplo, si tu proyecto es de código abierto.
La alternativa es configurar una variable de entorno SNYK_TOKEN que contenga la clave de API. Este también es el método recomendado si quieres usar el análisis de Snyk en tu pipeline de CI.
Configuración del plugin de Snyk
Si configuraste la clave de API como variable de entorno, puedes usar el plugin de inmediato. De todos modos, te explicaré cómo ajustar algunas de sus opciones.
Agrega un objeto de extensión snyk a tu archivo de Gradle.
Groovy:
Kotlin:
apiEs la clave de API de Snyk. Puedes configurarla aquí o dejar este campo vacío y configurar la variable de entorno
SNYK_TOKENque contiene la clave de API.severityEs el umbral de gravedad sobre el que quieres recibir una advertencia. Puede ser bajo, medio o alto. Se mostrarán todas las vulnerabilidades que tengan la gravedad elegida o una mayor, y la compilación fallará. Si omites esta opción, se mostrarán todas las vulnerabilidades detectadas, pero la compilación no fallará.
autoDownloadSnyk usa el binario de la CLI para realizar el análisis. Si instalaste la CLI por separado, por ejemplo, con npm, el plugin de Gradle usará esa instancia. Si no encuentra la CLI en tu sistema, el plugin de Gradle descargará automáticamente la versión más reciente. Esta propiedad es
truede forma predeterminada, así que no hace falta especificarla. Si no quieres que se descargue automáticamente, especifica esta propiedad y configúrala comofalse.autoUpdateSi no tienes la CLI de Snyk preinstalada y el plugin la descarga automáticamente, también puede actualizarla cuando haya una versión más reciente. De forma predeterminada, esta propiedad está configurada como
false. Ten en cuenta que autoUpdate no funciona si ya instalaste manualmente la CLI de Snyk, por ejemplo, con npm.argumentsEl plugin de Gradle usa la CLI de Snyk internamente. Esta propiedad te permite configurar argumentos adicionales para la CLI, si los necesitas. Consulta la referencia de la CLI para obtener más información sobre las opciones disponibles. Consejo: si usas subproyectos en Gradle, configura la propiedad arguments como
--all-sub-projects, tal como se muestra en el ejemplo anterior. Así se analizarán todos los subproyectos de Gradle.
Ejecutar el plugin de Snyk
El plugin de Snyk agrega dos tareas nuevas:
snyk-testsnyk-monitor
Puedes agregar cualquiera de estas tareas por separado o encadenarlas:
Snyk test
La tarea Snyk test analiza tus dependencias y comprueba si hay vulnerabilidades conocidas, tanto en las dependencias de primer nivel como en las transitivas. Si encuentra vulnerabilidades que coinciden con el nivel de gravedad elegido o lo superan, las mostrará en la consola y la compilación fallará.
Si quieres recibir advertencias sobre las dependencias sin que falle la compilación, omite la configuración de gravedad.

Snyk monitor
Snyk monitor también recopila todas tus dependencias de la misma manera que la tarea snyk-test. Sin embargo, guarda una instantánea de ese momento en tu cuenta de Snyk y la monitorea. A medida que se detecten nuevas vulnerabilidades o se corrijan las existentes, recibirás notificaciones automáticamente. Es ideal cuando publicas una versión en producción y quieres seguir monitoreándola. Snyk monitor NO hará que falle la compilación; solo monitorea.
Encadenamiento
Puedes encadenar las nuevas tareas de Snyk con otras tareas existentes para que los análisis se ejecuten automáticamente. En el siguiente ejemplo, conecto la tarea snyk-test con la tarea test habitual del archivo de Gradle.
Groovy:
Kotlin:
Ahora, cada vez que se ejecute gradle test, la tarea snyk-test se ejecutará después de las pruebas habituales. Esto también significa que la tarea snyk-test se ejecutará cada vez que se compile o se vuelva a compilar la aplicación. Según el contexto, esta estrategia puede ayudar a garantizar que se realicen pruebas y monitoreo para detectar vulnerabilidades.

