Automatiza la corrección de vulnerabilidades en dependencias de Python con Snyk
26 de febrero de 2020
0 minutos de lecturaNos complace anunciar que mejoramos la compatibilidad con Python en Snyk Open Source. Así, los desarrolladores pueden corregir vulnerabilidades en dependencias con la ayuda de pull requests de corrección automatizados.
El índice de paquetes de Python (PyPI) registró más de 14 mil millones de descargas durante 2018, una cifra impresionante desde cualquier perspectiva (debido a un error en el servicio de estadísticas de PyPI a mediados de año, es probable que la cifra real sea mucho mayor). Este número refleja no solo la amplia adopción de Python como lenguaje de programación (el lenguaje n.º 2 en la actualidad, según GitHub), sino también el desafío de usar software de código abierto: muchos de estos paquetes incorporan dependencias vulnerables, tanto directas como indirectas, en los proyectos. Snyk ha informado sobre algunos ejemplos durante el último año, incluido un artículo sobre paquetes maliciosos.
Con esta última mejora, Snyk Open Source ayuda a los desarrolladores de Python a crear aplicaciones más seguras. Además de encontrar estas dependencias vulnerables, les ofrece pasos automatizados para corregirlas, todo dentro de sus flujos de trabajo de desarrollo existentes. Para ello, Snyk crea un árbol de dependencias a partir del archivo requirements.txt incluido en un proyecto de pip. Luego, estas dependencias se analizan con la base de datos de vulnerabilidades de Snyk y cualquier problema corregible que se encuentre activa automáticamente un pull request de corrección.
Importa tus proyectos de Python
Snyk ofrece varias integraciones con repositorios de código basados en Git, como GitHub, GitHub Enterprise, GitLab, Bitbucket Server y Bitbucket Cloud. Estas te permiten analizar, monitorear y corregir fácilmente vulnerabilidades de seguridad y problemas de licencias en tus proyectos de Python, como parte de tus flujos de trabajo de administración de código y desarrollo.
Veamos un ejemplo de cómo funciona con una aplicación de Python de muestra alojada en GitHub.
En este ejemplo, ya iniciamos sesión en Snyk con nuestras credenciales de GitHub. Por eso, Snyk configuró automáticamente la integración y ahora muestra una lista de todos los repositorios disponibles.

En la pantalla Importar, selecciona el proyecto de Python que quieres que Snyk analice y haz clic en Agregar repositorios seleccionados. Snyk analiza todos los repositorios que seleccionaste en busca de archivos de manifiesto e importa una instantánea de cada archivo por separado.
Se muestra la página Proyectos. Cuando Snyk termine de importar el proyecto de Python, verás un mensaje de confirmación en la parte superior de la página que te pedirá actualizarla. Después de actualizarla, verás tu proyecto de Python, identificado con el logotipo de Python y junto con los demás proyectos que hayas integrado.

Como muestran las cifras de este ejemplo, Snyk encontró varias vulnerabilidades en el proyecto importado. Para examinarlas más de cerca, selecciona la aplicación de Python en la lista de proyectos para expandirla y luego haz clic en el enlace requirements.txt.
Ahora verás un informe completo del análisis de tu proyecto.

En la parte superior de la página se muestran varios metadatos del proyecto, como la cantidad de vulnerabilidades encontradas y la cantidad de rutas por las que se incorporan.
También verás recomendaciones para corregir algunos de los problemas encontrados (¡otra función nueva de la que pronto te contaremos más!). En este caso, actualizar la dependencia flask de la versión 0.12.3 a la versión 0.12.3 corrige dos problemas de gravedad alta.

Pull requests de corrección
Más abajo se muestran todas las vulnerabilidades encontradas en tus dependencias, junto con información contextual que puede ayudarte a priorizar los problemas y comenzar a corregirlos, si es necesario.

Los distintos filtros del lado izquierdo de la página te ayudan a navegar por los problemas encontrados. Por ejemplo, puedes filtrar por gravedad para corregir primero las vulnerabilidades de gravedad alta o por nivel de madurez del exploit, un indicador de qué tan peligrosa es una vulnerabilidad (más información sobre la madurez de los exploits aquí).
Para las vulnerabilidades para las que Snyk encontró una corrección, puedes crear un pull request desde Snyk con solo hacer clic en Corregir esta vulnerabilidad.

La compatibilidad mejorada con Python también permite activar automáticamente pull requests para nuevas vulnerabilidades, según tu configuración (más detalles a continuación). Los pull requests que abre Snyk muestran información contextual que te ayuda a entender por qué se activó el pull request, qué cambios aplicará la corrección a tus dependencias y más detalles sobre la vulnerabilidad que busca corregir.

Pull requests de prueba
Cada pull request nuevo con cambios en el archivo requirements.txt se analiza automáticamente para asegurarse de que no incorpores nuevas vulnerabilidades de seguridad en tu proyecto. Si se encuentran vulnerabilidades, el pull request no supera la prueba de seguridad y puedes decidir si quieres continuar con su fusión.

Puedes configurar toda esta automatización. Es posible desactivar tanto los pull requests de prueba como los de corrección. En el caso de los pull requests de prueba, también puedes controlar las condiciones para que no se aprueben.

Seguridad que prioriza a los desarrolladores con Snyk
Mantenerte al tanto de las dependencias vulnerables puede considerarse una de las mejores prácticas de seguridad para Python. Es más fácil decirlo que hacerlo, ¿verdad? La facilidad para incorporar código de terceros en los proyectos y el crecimiento general de la adopción del código abierto hacen que sea cada vez más complicado obtener visibilidad y control sobre este código.
Snyk se diseñó para ayudar a los desarrolladores a superar este desafío con una herramienta fácil de usar que se integra de forma nativa en los flujos de trabajo existentes y ayuda a automatizar el proceso de detección y corrección de vulnerabilidades en dependencias de código abierto.
La corrección automatizada para Python está disponible en todos los planes de Snyk Open Source, incluido nuestro plan gratuito, que permite realizar análisis ilimitados de proyectos de código abierto. Para probarla, crea una cuenta (con el enlace a continuación) y empieza a analizar. Mientras tanto, estos recursos te ayudarán a comenzar a proteger tus proyectos de Python:
¡Escribe código de forma segura!
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.