Snyk fix: corrección automática de vulnerabilidades desde la CLI de Snyk
7 de octubre de 2021
0 minutos de lecturaNos complace anunciar la beta abierta de un nuevo comando de la CLI de Snyk que hace que encontrar y corregir vulnerabilidades sea aún más fácil: el comando snyk fix.
La CLI de Snyk ya es una herramienta muy versátil y potente que los desarrolladores usan para encontrar y corregir vulnerabilidades en sus proyectos, ya sea manualmente en su entorno de desarrollo local o automáticamente como parte de un pipeline de CI/CD.
Con snyk test, los usuarios de Snyk pueden analizar su proyecto y obtener una lista de todas las vulnerabilidades detectadas. Si existe una ruta de actualización para una dependencia que corrija la vulnerabilidad, la CLI de Snyk mostrará estas recomendaciones, junto con toda la información necesaria sobre la ruta de actualización y la corrección de la vulnerabilidad.
El nuevo comando snyk fix lleva esto un paso más allá al aplicar estas recomendaciones automáticamente. Esto puede ser especialmente útil para quienes buscan aplicar correcciones rápidamente como parte de su flujo de trabajo de desarrollo local, o para quienes desean automatizar las correcciones como parte de su CI/CD.
Antes de profundizar, aquí tienes algunos detalles sobre la disponibilidad y los ecosistemas compatibles:
El comando
snyk fixestá en beta abierta, por lo que es posible que encuentres problemas al usarlo.Actualmente, solo se admiten proyectos de Python que usan Pip, Pipenv y Poetry. Encontrarás más detalles en la documentación de
snyk fix.
¡Comencemos!
Configura la CLI de Snyk
Primero, asegúrate de tener instalada la CLI de Snyk. Si ya la conoces y la tienes instalada, asegúrate de usar la versión v1.715.0 o una posterior.
Configurar la CLI de Snyk es sencillo. Puedes usar npm o Homebrew para instalarla rápidamente. Después, solo tendrás que autenticarte con tu cuenta de Snyk (si aún no tienes una, regístrate gratis aquí):
Se abrirá tu navegador y te pedirá que autentiques la CLI. ¡Autentícala! Ya puedes empezar a usar la CLI de Snyk para analizar tus proyectos en busca de vulnerabilidades.
Probemos la CLI de Snyk por primera vez y ejecutemos una prueba. Para esta demostración, usaré esta bifurcación del proyecto PyGoat:

Como muestran los resultados de la prueba, la CLI de Snyk detectó 8 vulnerabilidades y ofrece recomendaciones de actualización para corregirlas.
¿Y ahora qué sigue? Al final de los resultados de la prueba, la CLI de Snyk recomienda habilitar el nuevo comando snyk fix, ¡y ese es nuestro próximo paso!
Habilita snyk fix
Como mencionamos al principio, el nuevo comando snyk fix está actualmente en beta abierta. Para usarlo, primero debes habilitar la función. Esto se hace desde Snyk Preview, un área específica de la interfaz de Snyk que brinda acceso a funciones nuevas que aún están en desarrollo.
En Snyk, ve a Settings y luego a Snyk Preview. En “Automatically apply recommended remediation in CLI”, habilita snyk fix (1) y luego haz clic en el botón Save changes (2) para aplicar el cambio.

Corrige vulnerabilidades en tu entorno local
Ahora que habilitamos el nuevo comando, es hora de probarlo. En la CLI, escribe:
La CLI de Snyk aplica automáticamente, cuando es posible, las actualizaciones de versión recomendadas para corregir las vulnerabilidades detectadas y muestra un resumen de los resultados:

En nuestra aplicación PyGoat, se corrigieron 6 de las 8 vulnerabilidades. Al ejecutar otro análisis, vemos que quedan dos problemas: una vulnerabilidad de severidad media en el paquete Jinja2 y una licencia LGPLv3.0 en el paquete psycopg2.
Como siguiente paso, puedes pedirle a la CLI de Snyk que supervise continuamente el proyecto y te avise cuando haya una corrección disponible para esta vulnerabilidad pendiente, o cuando se detecten nuevas vulnerabilidades en estas dependencias. Para hacerlo, usa:
Corrige vulnerabilidades como parte de tu CI/CD
También puedes usar el nuevo comando snyk fix para automatizar las correcciones como parte de tus pipelines de CI/CD. Veamos un ejemplo con GitHub Actions.
GitHub creó GitHub Actions para ayudar a los desarrolladores a automatizar sus flujos de trabajo de integración continua. Las acciones de GitHub de Snyk facilitan la integración de Snyk en estos flujos de trabajo y permiten analizar tus proyectos en busca de vulnerabilidades, todo como parte de tu flujo de trabajo de CI/CD automatizado y directamente desde GitHub. Ahora también puedes corregir vulnerabilidades como parte de este flujo.
En concreto, usaremos esta acción, que ejecuta el siguiente flujo de trabajo:
Init: para evitar actualizaciones incrementales de versiones, el flujo de trabajo comienza revisando el mensaje del último commit y así no vuelve a ejecutar
snyk fixsi el último commit ya fue una corrección automatizada.Security: el flujo de trabajo ejecuta
snyk fixpara buscar vulnerabilidades y abrir un PR si encuentra una ruta de actualización.
Usar la acción es sencillo.
Las acciones de GitHub de Snyk usan una variable de entorno llamada SNYK_TOKEN. Este es tu token de API de Snyk. Deberás obtenerlo antes de configurar la acción de GitHub. Lo encontrarás en la interfaz de Snyk, en la página Settings.

Cuando tengas el token, defínelo como secreto en la configuración de tu repositorio, en Settings | Secrets:

Ya puedes configurar la acción de Snyk. En tu repositorio de GitHub, abre la pestaña Actions y haz clic en el botón New workflow, en la esquina superior izquierda.
GitHub te ofrecerá algunas acciones de plantilla según el lenguaje de programación del repositorio. Para configurar la acción de GitHub de Snyk, haz clic en set up a workflow yourself, en la parte superior de la página:

Reemplaza el código de ejemplo con este código (asegúrate de ingresar los nombres de tus ramas en los espacios correspondientes de la configuración):
Eso es todo. Al confirmar el nuevo archivo, se abre un PR que activa el flujo de trabajo y simula la automatización de las correcciones con el comando snyk fix. Echa un vistazo a este flujo de trabajo, que muestra todos los pasos:

Como se define en el flujo de trabajo, se abre un nuevo PR con las correcciones recomendadas:

¡Prueba snyk fix!
Una de las razones por las que presentamos Snyk Preview fue para darles a los usuarios acceso anticipado a funciones que aún están en desarrollo y en beta. snyk fix es un gran ejemplo de una nueva función sobre la que nos gustaría recibir comentarios de la comunidad antes de lanzarla oficialmente. Pruébala y cuéntanos qué te parece en: snyk-fix-feedback@snyk.io
Encontrarás más detalles sobre cómo usar el nuevo comando y qué es compatible y qué no en nuestra documentación de snyk fix.
¡Felices correcciones!
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.