Skip to main content

Guía rápida de Snyk CLI

Escrito por
Blog Headers cli cheat sheet

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:

Guía rápida de Snyk CLI con secciones numeradas sobre instalación, autenticación, análisis de proyectos, monitoreo, análisis de código y contenedores, y documentación.
Descarga la guía práctica

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

npm install snyk -g

Homebrew

brew tap snyk/tap && brew install snyk

Scoop

scoop bucket add snyk https://github.com/snyk/scoop-snyk
scoop install snyk

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.

$ snyk [cmd] --file=package.json

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.

$ snyk test --file=req.txt --package-manager=pip

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.

$ snyk test --all-projects --detection-depth=4

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.

$ snyk test --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.

$ snyk [cmd] --org=<org_id>

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:

$ snyk test https://github.com/snyk/goof

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.

$ snyk test lodash
$ snyk test ionic@1.6.5
Informe de vulnerabilidades de la terminal que enumera problemas que se pueden actualizar, corregir y que no se han resuelto, con niveles de gravedad y versiones de paquetes.

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.

$ snyk test --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:

$ snyk test --json-file-output=vuln.json

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 [cmd] --severity-threshold=high

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 monitor --file=package.json --project-name=myapp --org=myorg

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:

$ snyk ignore --id=npm:tough-cookie:20160722 --expiry=2019-04-30 --reason='Not currently exploitable'

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í:

$ snyk container test <image>:<tag>
$ snyk container monitor <image>:<tag>

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í:

$ snyk container test gcr.io/distroless/base | head

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).

$ snyk container test docker-archive:container.tar
$ snyk container test oci-archive:container.tar

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:

$ snyk iac test /path/to/Kubernetes.yaml
$ snyk iac test /path/to/terraform_file.tf

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 test /path/to/Kubernetes.yaml --json

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.

$ snyk auth --help
$ snyk container --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:

$ snyk [cmd] -d

¿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.

  1. Ejecuta snyk monitor

  2. Abre tu aplicación en el navegador. (La URL directa aparece en la salida de la CLI).

  3. Haz clic en Settings en el menú

  4. Ingresa la URL de tu repositorio de código abierto en el campo Git remote URI.

Formulario de Open Source con instrucciones, un campo para ingresar el URI remoto de Git y un botón Guardar

¿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:

$ npm install
$ mvn install
$ dotnet restore
$ dep ensure

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:

$ snyk config unset api

Para obtener más información sobre otros ajustes de configuración, ejecuta:

$ snyk help config

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:

$ snyk --version

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.

Leer más

Blog

Los modelos de frontera encontraron las vulnerabilidades. Solo el atacante encontró las cadenas.

El análisis estático encontró las fallas, pero solo las pruebas de ataque en vivo demostraron cómo podían encadenarse para provocar brechas. Una comparación de Evo COS, Claude Security y Claude Code Security.

feature insights context
Blog

Los ataques autónomos ya están aquí. La defensa debe estar a su altura.

Los atacantes autónomos están reduciendo el tiempo disponible para defenderse. Descubre cómo el descubrimiento, la corrección, la validación y la prevención continuos pueden ayudar a los equipos de seguridad a seguirles el ritmo.

Blog

Por qué los agentes de programación con IA siguen generando fallas de control de acceso

Los agentes de programación con IA pueden generar lógica de autorización que compila y supera la revisión, pero expone los datos de un inquilino a otro. Descubre por qué es difícil detectar el control de acceso roto y cómo prevenirlo.