Guía rápida de Snyk CLI
26 de noviembre de 2020
0 minutos de lecturaÚltima actualización: abril de 2022
¿Tienes una versión anterior de la guía de referencia de Snyk CLI? Descarga la versión más reciente a continuación.
Snyk CLI es una herramienta excelente y potente para analizar tus aplicaciones, contenedores e infraestructura como código en busca de vulnerabilidades de seguridad. En esta guía rápida, veremos las funciones más potentes que ofrece nuestra CLI. Puedes usarla para analizar y monitorear desde tu máquina local, pero también puedes integrarla en tu pipeline. Independientemente de cómo la uses, Snyk CLI es la herramienta ideal para probar, monitorear y corregir vulnerabilidades conocidas en tus aplicaciones.
Mejoramos nuestra CLI constantemente y ofrece muchas más funciones de las que podemos cubrir en una sola guía rápida. Para obtener una descripción más detallada, consulta la documentación de Snyk CLI. Si quieres saber más sobre lo que puede hacer la CLI para un lenguaje o sistema de compilación específico, consulta nuestra página de lenguajes compatibles:
JavaScript (npm, yarn)
Java y Kotlin (maven | Gradle)
.Net (Nuget, Paket)
Python (Pip, Poetry)
PHP (composer)
Ruby (Bundler)
Go (dep, govendor)
Muchos más...

Instalación
Empecemos por el principio. Si todavía no instalaste Snyk CLI, ese es el primer paso. Actualmente, puedes instalar Snyk CLI con npm, Homebrew o Scoop, o descargar un binario específico desde GitHub.
npm
Homebrew
Scoop
Instalación manual
Hay un instalador manual disponible en la página de Snyk en GitHub.
Autenticación
Una vez que hayas instalado la CLI, debes autenticarte con tu cuenta de Snyk. Hay varias formas de hacerlo.
Al ejecutar snyk auth, el navegador te redirige a la página de registro o inicio de sesión, donde puedes autenticarte o registrarte.
También puedes ejecutar snyk auth [api-token] e incluir un token de API de Snyk, que puedes obtener desde la página de tu cuenta.
La última opción, que recomendamos específicamente para las pruebas de CI, es crear una variable de entorno llamada SNYK_TOKEN. Todos los comandos de Snyk CLI la usarán sin que tengas que ejecutar explícitamente snyk auth.
Consejo profesional:Asegúrate de actualizar y reinstalar la CLI con frecuencia. Corregimos errores y publicamos nuevas versiones de la CLI muy seguido. No querrás perderte las nuevas funciones mejoradas.
Comandos de la CLI
Snyk CLI recibe un comando seguido de varias opciones. Asegúrate de ejecutar los comandos de la CLI desde la carpeta del proyecto. Veamos qué hace cada uno.
Snyk test
El comando snyk test analiza un proyecto local en busca de vulnerabilidades conocidas. Proporciona información sobre esas vulnerabilidades, su gravedad, tipos y descripciones, la cantidad de rutas vulnerables, las acciones de corrección y mucho más. Snyk CLI detecta automáticamente tus archivos de manifiesto y prueba el primero que encuentra. Ten en cuenta que Snyk busca dependencias locales para detectar vulnerabilidades. Por eso, debes realizar los pasos necesarios para descargar el árbol de dependencias antes de ejecutar snyk test, como npm install, mvn install, dotnet restore o dep ensure.
Snyk test también resulta útil en un pipeline de CI. Ejecutar snyk test directamente al compilar el binario muestra si tu proyecto contiene vulnerabilidades. Si quieres, incluso puedes detener el pipeline por completo. Cuando ejecutas snyk test desde un script, solo tienes que revisar el código de salida. Si es 0, todo está bien y no se encontraron vulnerabilidades. Si es otro valor, probablemente aún tengas trabajo por hacer.
Si un proyecto contiene varios archivos de manifiesto, puedes probar uno específico. Usa la opción --file para indicar qué archivo quieres analizar.
Del mismo modo, puedes especificar el administrador de paquetes con la opción --package-manager. Esto resulta útil en el caso excepcional de que snyk no detecte automáticamente el administrador de paquetes.
Si quieres probar todos los proyectos de una carpeta, puedes usar la opción --all-projects. Esta opción busca automáticamente en el directorio actual y prueba todos los archivos de manifiesto que encuentra. De forma predeterminada, Snyk analiza el directorio actual y hasta tres niveles adicionales. Para cambiar la profundidad, agrega la opción --detection-depth.
Sin embargo, Snyk no prueba las dependencias de desarrollo de forma predeterminada, ya que muchas personas las consideran ruido en comparación con las vulnerabilidades de producción. Si quieres que Snyk también las incluya, usa la opción --dev.
Otra opción útil para el comando test y otros comandos de Snyk es --org. Esta opción asocia una prueba o cualquier comando de Snyk con una organización específica. Las organizaciones son contenedores en los que puedes agrupar proyectos y asociar a varios usuarios. Esto es especialmente útil cuando trabajas en equipo y creas instantáneas con snyk monitor. Si no especificas una organización, los resultados se asocian con la organización predeterminada.
Si quieres probar repositorios públicos desde la línea de comandos, tenemos lo que necesitas. Puedes incluir directamente la URL del repositorio público en el comando. Esto solo funciona con repositorios de npm si está disponible el archivo package-lock.json. Pruébalo:
También puedes probar paquetes de npm de forma remota pasando solo el nombre del paquete para probar la versión más reciente, o indicando el nombre y la versión completos.

Después de ejecutar snyk test en un proyecto, los resultados se presentan en tres secciones.
Problemas que se corrigen con una actualización:Al actualizar la biblioteca según la recomendación, eliminarás una o más vulnerabilidades encontradas en tu proyecto.
Problema con parche disponible:No hay ninguna actualización disponible que corrija el problema. Sin embargo, Snyk creó un parche para corregir la vulnerabilidad.
Problemas sin actualización ni parche directo:No hay ninguna actualización disponible para la dependencia que importaste. Es posible que la vulnerabilidad esté en una de las dependencias transitivas. Si ya existe una versión más reciente de la dependencia transitiva que corrige la vulnerabilidad, también te la mostramos. En algunos ecosistemas, puedes reemplazar manualmente las dependencias transitivas, por lo que esta información resulta útil.
Para cada vulnerabilidad que la CLI muestra en cualquiera de las tres secciones, puedes ver una descripción, su gravedad y un enlace para obtener más información sobre esa vulnerabilidad.
Si prefieres que la CLI muestre los resultados en formato JSON, usa la opción --json. Puedes dar el formato que quieras a los resultados JSON.
Guardar los resultados del análisis en un archivo JSON es aún más sencillo. Con la opción --json-file-output flag, puedes guardar directamente el resultado en el nombre de archivo que quieras para revisarlo más tarde. Mientras tanto, verás los resultados legibles, como se mostró antes, en la consola. Es una solución ideal para los pipelines de CI cuando, por ejemplo, quieres mostrar en un panel los resultados de una compilación específica. Solo tienes que probarlo:
También tenemos un convertidor de JSON de Snyk a HTML que da formato a los resultados en un atractivo informe HTML para que puedas mostrárselo a tu gerente.
Puedes controlar los resultados de la CLI por gravedad con la opción --severity-threshold. Si no te interesan las vulnerabilidades de gravedad media o baja, puedes excluirlas así:
Snyk monitor
El comando snyk monitor toma una instantánea de tu proyecto y sube los resultados al sitio web de Snyk. Aunque snyk monitor usa snyk test internamente, es importante saber que no lo reemplaza: Snyk monitor toma una instantánea y la monitorea a lo largo del tiempo. Cuando se detectan nuevas vulnerabilidades o nuevas vías de corrección que benefician a tu proyecto, recibirás una alerta a través del canal de comunicación que elijas.
En un entorno de CI, normalmente primero ejecutas snyk test para ver si hay vulnerabilidades en ese momento. Si las hay, puedes detener la compilación, según el caso de uso. Luego, normalmente se usa snyk monitor para crear una instantánea de esa versión y monitorearla a lo largo del tiempo. Un buen momento para hacerlo es justo antes de pasar a producción. Cuando te sientas conforme con cierto nivel de vulnerabilidades, snyk monitor te ayudará a mantenerlo bajo control con el tiempo.
Al ejecutar snyk monitor, es importante especificar suficiente información para asegurarte de que la instantánea quede en la ubicación esperada. Si perteneces a varias organizaciones, indica a cuál enviar la instantánea con la opción --org. Si tienes proyectos con nombres similares, puedes cambiar el nombre predeterminado que Snyk asigna a las instantáneas e indicar el que quieras con la opción --project-name.
Snyk ignore
Supongamos que tu aplicación contiene una vulnerabilidad para la que no hay ningún parche ni actualización disponible, o una vulnerabilidad que no crees que pueda explotarse actualmente en tu aplicación. En ese caso, puedes indicarle a Snyk que ignore la vulnerabilidad durante un período determinado. Para usar el comando ignore, primero ejecuta snyk test y obtén el ID de la vulnerabilidad en los resultados de la CLI. Luego, puedes ignorarla con el siguiente comando:
Las opciones --expiry y --reason son opcionales. De forma predeterminada, la vulnerabilidad de seguridad se ignora durante 30 días.
Nota: el comando snyk ignore crea un archivo .snyk que contiene información sobre el problema de seguridad que estás ignorando.
Snyk Container
Snyk Container es la función de la CLI que permite analizar imágenes de contenedores, como las imágenes de Docker. Anteriormente, estaba disponible mediante la opción --docker de la CLI.
Al igual que puedes analizar y monitorear tu aplicación, también puedes analizar tus imágenes de Docker con Snyk.
Al descargar imágenes de Docker Hub, puedes analizarlas y monitorearlas así:
Si agregas un Dockerfile a cualquiera de estos comandos, Snyk te ofrecerá consejos de corrección sobre la imagen base que usas, entre otras cosas. Si hay otras imágenes base disponibles para la imagen que compilaste, podemos indicarte esas alternativas.
Snyk Container no solo es compatible con contenedores Docker, sino también con imágenes distroless. Puedes analizarlas así:
También puedes analizar y monitorear archivos de contenedores con las funciones de Snyk para contenedores. El análisis es compatible tanto con archivos de contenedores Docker como con imágenes de Open Container Initiative (OCI).
Al igual que para analizar tus aplicaciones, puedes usar las opciones --json y --json-file-output para integrarlas fácilmente con tus propios sistemas.
Más información sobre Snyk CLI para contenedores
Snyk Infrastructure as Code (Snyk IaC)
Con las funciones de análisis de Snyk Infrastructure as Code, los desarrolladores pueden encontrar y corregir errores de configuración que podrían provocar problemas de seguridad. Con el comando snyk iac, también puedes usar esta funcionalidad en Snyk CLI desde tu máquina local o en tu entorno de CI. Así recibirás comentarios lo antes posible durante el ciclo de desarrollo. Snyk IaC es compatible con Kubernetes, Helm Charts y recursos de Terraform para AWS.
Si quieres analizar un archivo de Kubernetes o Terraform, puedes probar algo como esto:
Al igual que con snyk test, los problemas detectados con snyk iac incluyen una descripción y un nivel de gravedad. Si necesitas estos resultados en formato JSON para integrarlos con tu sistema, también puedes usar las opciones --json y --json-file-output:
Snyk IaC también te permite detectar y monitorear las desviaciones de infraestructura y los recursos no administrados, y recibir alertas sobre ellos:
$ snyk iac describe <OPTIONS>
Más información sobre Snyk CLI para IaC
Solución de problemas
Si no sabes qué comando usar o cómo funciona una opción específica, siempre puedes usar la opción --help o ejecutar snyk help.
Depuración
Si algo no funciona, puedes pedirle a la CLI que muestre los registros de depuración con la opción -d. Si te comunicas con nuestro excelente equipo de soporte, es muy probable que también te pidan hacerlo:
¿Te estás quedando sin pruebas en un proyecto de código abierto?
El análisis de Snyk es gratuito e ilimitado para el desarrollo de código abierto. Sin embargo, no siempre reconocemos un proyecto de código abierto. Si la salida de la CLI te indica que estás por quedarte sin pruebas, puedes seguir estos pasos para demostrar que tu proyecto es, de hecho, de código abierto.
Ejecuta
snyk monitorAbre tu aplicación en el navegador. (La URL directa aparece en la salida de la CLI).
Haz clic en Settings en el menú
Ingresa la URL de tu repositorio de código abierto en el campo Git remote URI.

¿Los resultados de las pruebas no son los esperados?
Para obtener los mejores resultados, vuelve a compilar todo el proyecto antes de ejecutar cualquiera de los comandos de la CLI. Si el resultado de snyk test o snyk monitor no es el esperado, ejecuta tu herramienta de compilación para descargar e instalar todas las dependencias.
Por ejemplo:
Eliminar tu clave de API y la configuración
Si autenticastes tu CLI con snyk auth, puedes eliminar el token de la configuración con el siguiente comando:
Para obtener más información sobre otros ajustes de configuración, ejecuta:
Verifica tu versión
Usa siempre la versión más reciente de nuestra CLI. Publicamos una nueva versión varias veces por semana y, a veces, incluso con mayor frecuencia.
Asegúrate de (re)instalar la versión más reciente con tu administrador de paquetes, como se describe en la primera sección, o busca la compilación más reciente en nuestro repositorio de GitHub.
Para verificar tu versión actual, simplemente ejecuta:
Consulta la documentación
Cada proyecto y ecosistema tiene necesidades específicas. Consulta la documentación de la CLI y la documentación de compatibilidad con lenguajes para encontrar ayuda para un caso de uso más específico.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.



