Abriendo camino en la seguridad de aplicaciones nativas de la nube
21 de diciembre de 2020
0 minutos de lectura2020 fue un año sumamente desafiante para todos, pero con el inicio de un nuevo año a la vuelta de la esquina, es una gran oportunidad para tomarnos unos momentos y reconocer el trabajo de nuestros equipos de ingeniería y producto. Un trabajo arduo, realizado en circunstancias difíciles y exigentes, que ayudó a posicionar a Snyk como la solución de seguridad de aplicaciones nativas de la nube líder del mercado y diseñada primero para desarrolladores.
¿Qué es la seguridad de aplicaciones nativas de la nube?
El desarrollo de software, tal como lo conocíamos hace apenas unos años, ha cambiado.
Los procesos de desarrollo e implementación de aplicaciones han cambiado para admitir implementaciones más rápidas y frecuentes. También cambió el código que compone las aplicaciones: cada vez depende más de una combinación de código abierto, código propietario, contenedores e infraestructura como código.
Desde la perspectiva de la seguridad de aplicaciones, estos cambios plantean un desafío único que requiere una solución única. Por eso, en SnykCon anunciamos este año nuestra plataforma de seguridad de aplicaciones nativas de la nube, única en la industria por ser la única solución diseñada primero para desarrolladores que permite crear rápidamente y de forma segura toda la aplicación nativa de la nube en un entorno de DevOps.
¿Empezamos con el repaso?
1. Integrar la seguridad desde el principio y en todo el SDLC
El primer paso en la gestión de vulnerabilidades es identificar que existe un problema. En 2020, nos esforzamos mucho para que Snyk se pudiera implementar fácilmente en las distintas etapas del ciclo de vida de una aplicación. Este trabajo incluyó nuevos complementos para IDE, mejoras en nuestras integraciones con GitHub y Bitbucket, así como nuevas integraciones con registros privados y de contenedores.
IDE
Integrar las pruebas de seguridad en el entorno de desarrollo local es clave para desplazar la seguridad a la izquierda. Esto permite a los desarrolladores encontrar y corregir problemas lo antes posible, antes de que su solución sea demasiado costosa. En 2020, Snyk amplió la compatibilidad existente con Eclipse e IntelliJ y agregó compatibilidad con TODOS los principales IDE de JetBrains: WebStorm, PyCharm, PhpStorm, GoLand y más.

Snyk CLI
Con la incorporación de Snyk Container y Snyk IaC, Snyk CLI puede hacer más que nunca. Esto requirió actualizar su funcionamiento para admitir las funciones actuales y futuras, pero el resultado es un flujo de trabajo mejorado y nuevas capacidades.
Prueba de Snyk Container
El nuevo comando snyk container test reemplaza el comando anterior snyk test --docker, junto con el subcomando monitor. Además de la sintaxis de CLI, el nuevo comando container incluye varias mejoras internas:
Como quizá imaginas por el cambio en el nombre, ahora podemos analizar más que solo contenedores de Docker. Snyk funciona muy bien con cualquier contenedor OCI, incluso si no tienes un motor de Docker en ejecución. Si usas podman o compilas con herramientas como jib para tus aplicaciones Java, Snyk puede analizarlo.
Si extrajiste un archivo con los archivos de una imagen de contenedor y quieres analizarlo en lugar de analizar la imagen en sí, ahora Snyk Container también puede hacerlo.
Y si usas imágenes distroless para reducir las vulnerabilidades de tu imagen base, la nueva Snyk CLI también las analiza correctamente.
Además, ahora que hay subcomandos para
containereiac, el sistema de ayuda integrado se simplificó y mejoró para que puedas obtener ayuda contextual cuando la necesites.
Prueba de Snyk IaC
Snyk Infrastructure as Code (IaC) fue nuestro tercer gran lanzamiento de producto el año pasado. Más información a continuación. Al principio, Snyk IaC solo permitía analizar repositorios de Git, pero cada vez más clientes querían automatizar las pruebas como parte de sus pipelines de CI, así que agregamos compatibilidad con estas pruebas en Snyk CLI. Puedes analizar archivos de Kubernetes y Terraform con el comando snyk iac test.
Flujos de trabajo basados en Git
Este año también nos enfocamos en mejorar nuestras integraciones existentes con los distintos sistemas de gestión de código fuente basados en Git, para que sean más amigables para los desarrolladores y ofrezcan una experiencia más integrada a sus usuarios.
GitHub
Como seguramente esperas, nuestra integración con GitHub es el punto de integración más popular con Snyk. Por eso, lanzamos constantemente nuevas funciones para que la experiencia sea lo más fluida posible.
Primero, agregamos la opción de configurar la cuenta de GitHub en nombre de la cual se abren las solicitudes de corrección y actualización de Snyk, así como la posibilidad de asignarlas a un colaborador específico del repositorio. También incorporamos la opción para que un colaborador solicite omitir una prueba fallida de Snyk.

Integración de seguridad de GitHub
En octubre, GitHub lanzó sus capacidades de integración de seguridad de terceros, lo que nos permitió ofrecer resultados de Snyk Container y Snyk IaC directamente en la pestaña Security de GitHub para tus repositorios. Desde hace tiempo ofrecemos compatibilidad con GitHub Actions, y esta nueva capacidad permite a los desarrolladores que ya usan GitHub de forma extensiva consultar informes detallados de seguridad en la interfaz de GitHub.

Análisis de Dockerfiles desde SCM
Una de las consecuencias de todas las ventajas de los contenedores es que las imágenes se almacenan por separado de los Dockerfiles que se usan para crearlas. Desde el punto de vista de la seguridad, esto significa que no sabes si tu contenedor es «seguro» hasta después de compilarlo y analizarlo.
Hasta ahora. Snyk ya se integra con tus herramientas de SCM favoritas y, como probablemente almacenes tu Dockerfile junto con el código, agregamos la posibilidad de detectar y analizar el Dockerfile directamente desde un repositorio. Luego, comprobamos qué imagen base seleccionaste e informamos sobre las vulnerabilidades presentes en ella. Esto facilita comenzar a analizar contenedores y obtener resultados de inmediato, ya que, al empezar, la imagen base suele ser la fuente de la mayoría de las vulnerabilidades.
Además, ahora puedes asociar las pruebas de imágenes de contenedor con los Dockerfiles detectados. En Snyk Container siempre fue posible asociar estos dos objetos, pero ahora el proceso es más sencillo: ya no necesitas buscar en los repositorios de Git para encontrar tu Dockerfile y puedes identificar fácilmente qué imágenes están vinculadas a cada Dockerfile.
Bitbucket
Los usuarios de Bitbucket Cloud recibieron con agrado la noticia de que Snyk agregó compatibilidad con Code Insights, lo que les permite consultar sus problemas desde la interfaz de usuario de Bitbucket. También mejoramos Snyk Pipe, que se usa para analizar vulnerabilidades como parte de los pipelines de CI/CD de Bitbucket, para que también sea compatible con Code Insights.
Azure Repos
También agregamos compatibilidad con Azure Repos Server, que complementa nuestra compatibilidad con todo el ecosistema de Microsoft Azure: Azure Repos (en la nube y ahora también en las instalaciones), Azure Pipelines, Azure Container Registry y Azure Functions.
2. Ampliar la compatibilidad con los ecosistemas
En 2020 también mejoramos la cobertura de los lenguajes de programación existentes y ampliamos las pruebas de seguridad de Snyk para admitir más administradores de paquetes y ecosistemas.
Java
Mejoramos el análisis de seguridad de los proyectos Java Gradle importados desde repositorios de Git (GitHub/GitLab/Bitbucket/Azure Repos) al agregar compatibilidad adicional con archivos gradle.lockfile. Los archivos de bloqueo ofrecen varias ventajas, pero en el contexto de las pruebas de seguridad de Snyk garantizan resultados más precisos y completos. Encontrarás más información aquí.
Python
El uso de este ecosistema refleja su popularidad: hemos visto un aumento constante en la cantidad de proyectos de Python que analizan los usuarios de Snyk. Por eso, este año introdujimos varias mejoras para ayudar a las organizaciones que usan Python a proteger mejor sus bases de código. Agregamos compatibilidad con Poetry, para que los usuarios de este administrador de paquetes y proyectos de Python, cada vez más popular, puedan analizar y monitorear sus proyectos con Snyk CLI. También agregamos compatibilidad con Pipenv en nuestras integraciones de SCM. Para facilitar la corrección de vulnerabilidades de Python, agregamos flujos de trabajo de corrección automatizada para Python.

Análisis de un proyecto de Poetry con Snyk CLI
Golang
Golang ha crecido exponencialmente en los últimos años y también es uno de los favoritos de los usuarios de Snyk. En 2020, invertimos en mejorar tanto el rendimiento como la cobertura para este lenguaje. La transición a depGraphs mejoró notablemente la experiencia de análisis de proyectos de Go y permitió analizar a gran velocidad proyectos grandes como Kubernetes. Ampliamos la compatibilidad con proyectos de Go Modules, que ya estaba disponible para los análisis con CLI, para incluir nuestras integraciones de SCM basadas en Git. También trabajamos para habilitar la detección de vulnerabilidades en contenedores de Go.

Kubernetes y Terraform
En 2020, Snyk lanzó su tercer producto oficial: Snyk Infrastructure as Code (Snyk IaC). Con él, puedes analizar tus configuraciones de implementación mientras aún están en el código y asegurarte de que los recursos que crees estén bien configurados cuando llegue el momento de implementar. Cada vez más aplicaciones e infraestructuras en la nube se definen mediante manifiestos declarativos, y vemos que se asigna a más desarrolladores la tarea de garantizar que sus aplicaciones y servicios sean seguros. Como se pueden realizar cambios con cada confirmación de código, la única forma de escalar es integrar la seguridad en el pipeline para encontrar y corregir problemas antes de la implementación.

3. Priorizar tu lista de vulnerabilidades pendientes
Las listas de vulnerabilidades pendientes pueden acumular miles de problemas rápidamente. Es imposible, y por lo general innecesario, abordar cada uno de ellos. Pero ¿por dónde empezar?
Por eso, este año nos enfocamos especialmente en ayudar a los equipos de desarrollo y seguridad a decidir dónde concentrar sus esfuerzos para lograr el mayor impacto en seguridad. Para ello, presentamos una larga lista de capacidades de priorización diseñadas primero para desarrolladores, que ofrecen a estos equipos las herramientas de seguridad y el contexto necesarios para revisar sus problemas y priorizar las correcciones de manera eficaz.
Puntuación de prioridad
La nueva Priority Score de Snyk es un sistema de puntuación avanzado e integrado, basado en un algoritmo propietario que procesa una amplia variedad de factores, como la puntuación CVSS, la disponibilidad de una corrección, los exploits conocidos, la antigüedad de la vulnerabilidad y si es explotable o no. La puntuación resultante aparece en las tarjetas de cada problema en la interfaz de Snyk y se puede usar para filtrar y ordenar rápidamente la lista de tareas pendientes.

Vulnerabilidades alcanzables
Vulnerabilidades alcanzables es una herramienta de análisis avanzado que aporta contexto sobre las vulnerabilidades a nivel de aplicación y te ayuda a determinar si se puede acceder a una función vulnerable como parte de la ruta de ejecución de la aplicación. Los usuarios de Snyk ya aprovechan Vulnerabilidades alcanzables para decidir qué corregir en sus proyectos Java Maven y Gradle. El próximo año ampliaremos la compatibilidad con otros ecosistemas.

Madurez de los exploits e importancia relativa de las vulnerabilidades de Linux
La función de puntuación de prioridad también funciona con Snyk Container y tiene en cuenta otros detalles específicos de los contenedores. Por ejemplo, si una vulnerabilidad tiene un exploit maduro y está en ejecución en un clúster de Kubernetes, aumenta la puntuación de prioridad. La puntuación también considera si la configuración del pod de Kubernetes aumenta el riesgo, por ejemplo, si el contenedor se ejecuta como usuario root.
Además, las vulnerabilidades en los paquetes de Linux a veces varían según la distribución de Linux que elijas para usar en tus imágenes de contenedor. Lo que comienza como una vulnerabilidad de alto riesgo en un paquete de Linux puede considerarse de baja gravedad en una distribución específica, como Debian o Ubuntu. Snyk tiene en cuenta ambas calificaciones, pero considera que quienes mantienen una distribución son la fuente autorizada; por eso, asignamos a la vulnerabilidad la calificación de la distribución (baja, en este ejemplo).

Snyk Container con detalles de seguridad específicos de cada distribución
4. Corrige más problemas con mayor facilidad y confianza
Hay muchas herramientas que analizan tu código en busca de problemas. Ayudarte a tomar medidas y corregirlos es otra historia. La corrección automatizada y práctica es un componente fundamental de la plataforma Snyk y, naturalmente, fue una prioridad para los equipos de producto y desarrollo de Snyk este año.
Mantén tus dependencias al día
En marzo, anunciamos una alianza entre Snyk y Neighbourhoodie Software, creadores de Greenkeeper. Esta alianza permitió lanzar las actualizaciones automáticas de dependencias de Snyk, que generan automáticamente pull requests prácticas y con información contextual cuando se detectan nuevas versiones de las dependencias, y ayudan a los desarrolladores a mantener sus proyectos más saludables y seguros.
Fusiona correcciones con confianza
Para ayudar a los desarrolladores a fusionar con más confianza las PR de corrección de Snyk, presentamos Merge Advice, una nueva insignia que se agrega a los pull requests e indica si es probable que la corrección genere cambios incompatibles. Esto brinda a los desarrolladores la información que necesitan para decidir si deben fusionar.

Omitir la prueba de PR de Snyk
Snyk ejecuta automáticamente pruebas de seguridad y licencias para cada nuevo pull request que tú u otro colaborador abra en un repositorio de GitHub. Para reducir las interrupciones en el flujo de desarrollo, agregamos la posibilidad de que los desarrolladores consulten todos los detalles sobre el motivo por el que falló su pull request y luego soliciten al administrador que omita la prueba y marque el pull request como aprobado de todos modos.
Orientación sobre infraestructura como código
Snyk IaC ofrece una interfaz única que muestra cómo corregir los problemas de IaC y guía a los usuarios en el proceso. En nuestras conversaciones con clientes, descubrimos que muchas organizaciones aún están en las primeras etapas de formalización de sus prácticas de IaC. Hay distintos niveles de experiencia y, especialmente en lo que respecta a los problemas de seguridad, muchos usuarios necesitan orientación adicional. Al mismo tiempo, los problemas de IaC no son todos vulnerabilidades en el sentido tradicional. Por eso, aunque tuvieras tiempo para investigar, no siempre podrías consultar una fuente como la NVD para buscar información y referencias sobre un problema. Así que incorporamos orientación adicional en Snyk IaC para aportar contexto y evaluaciones del impacto de los problemas detectados.

5. Gestiona la seguridad y el cumplimiento a gran escala
Al gestionar programas de seguridad de aplicaciones para miles de aplicaciones y proyectos, las organizaciones necesitan formas de maximizar la eficiencia y la productividad. Por eso, en 2020 Snyk invirtió en ayudar a las organizaciones a gestionar la gobernanza a gran escala e incorporó varias funciones clave en Snyk Open Source, Snyk Container y Snyk IaC.
Políticas de seguridad y licencias
Para ayudar a las organizaciones a controlar más fácilmente la seguridad y el cumplimiento en sus distintos proyectos y equipos, Snyk presentó un nuevo motor de políticas que permite definir y personalizar políticas de licencias y seguridad, así como aplicarlas.
Con las políticas de licencias, las organizaciones pueden definir los límites legales aceptables y aplicarlos en toda la organización. Además, las políticas de licencias de Snyk permiten que los responsables agreguen instrucciones legales prácticas para que los desarrolladores sepan qué hacer ante un problema específico de licencia.
Las políticas de seguridad te permiten establecer reglas para priorizar y despriorizar vulnerabilidades automáticamente. Cada política contiene una regla o un conjunto de reglas que define exactamente cómo se deben gestionar las vulnerabilidades. Las reglas activan acciones en función de ciertas condiciones. Actualmente, las reglas pueden cambiar la gravedad de las vulnerabilidades según su tipo (para esto usamos CWE, un estándar común para clasificar vulnerabilidades según características compartidas) y la madurez del exploit. Por ejemplo, una política podría incluir una regla para aumentar la gravedad de todas las vulnerabilidades de XSS (cross-site scripting) con exploits maduros y otra para reducir la gravedad de las vulnerabilidades de RCE (ejecución remota de código).

Gestión de proyectos
Cuando intentas gestionar miles de proyectos distintos, cada uno con miles de problemas de seguridad, es fácil sentirse abrumado. Incluso encontrar un proyecto puede volverse difícil, por no hablar de saber si está entre los que requieren tu atención urgente.
Los atributos y las etiquetas de proyectos de Snyk te ayudan a organizar tus proyectos de Snyk (Snyk Open Source, Snyk Container y Snyk IaC) de manera estandarizada, asociándoles metadatos sobre el impacto en el negocio y la pila tecnológica. Así es más fácil buscar y encontrar proyectos, y centrar tus esfuerzos en proyectos específicos según su entorno de implementación, etapa del ciclo de vida, puntuación de prioridad y otras características importantes para tu organización.
Gestión del backlog
La gestión del backlog, anunciada durante SnykCon hace apenas unos meses, abre pull requests de corrección específicos para abordar las vulnerabilidades de tu backlog según su puntuación de prioridad. Esto te permite reducir el backlog de vulnerabilidades a un ritmo más manejable.
Gestión del cumplimiento de licencias
Las dependencias de código abierto que incorporas a tu proyecto representan un riesgo tanto de seguridad COMO legal. Este año, anunciamos las capacidades de gestión del cumplimiento de licencias de Snyk, diseñadas primero para desarrolladores, que te permiten gestionar y cumplir con mayor facilidad las licencias de código abierto que utilizas.
Snyk ofrece una gestión del cumplimiento de licencias amplia y profunda: se integra en todo el SDLC (CLI, IDE, SCM, CI/CD) y detecta licencias tanto en dependencias directas como transitivas. Es compatible con los lenguajes de programación más populares, incluidos, sin ningún orden de importancia en particular, Java, JavaScript, Scala, Go, Python, Ruby, PHP, Swift, Objective-C y .NET.
Los problemas de licencias detectados se muestran con todo el contexto que los desarrolladores necesitan para evaluar su alcance y actuar. Esto incluye instrucciones legales detalladas que especifican los siguientes pasos para cumplir con las políticas de la empresa. Diversas funciones de paneles e informes permiten a los responsables consultar y compartir listas detalladas de las licencias en uso, incluido un informe de BoM que enumera todos los componentes y licencias de código abierto junto con la información de derechos de autor.
Una mirada a 2021 (¡alerta de spoiler!)
Aunque 2020 estuvo lleno de novedades increíbles de productos Snyk, ¡espera a ver lo que tenemos preparado para 2021!
Los temas centrales de Snyk —facilidad de uso para desarrolladores, corrección automatizada y práctica, y profundidad de seguridad— seguirán teniendo un papel clave en los próximos anuncios. Agregaremos compatibilidad con un ecosistema muy importante y reforzaremos algunas de las capacidades únicas que hacen de Snyk la solución líder de seguridad de aplicaciones nativas de la nube en el mercado.
¡Les deseamos a todos un año nuevo feliz y saludable!