Skip to main content

Seguridad de Go: anunciamos una protección mejorada para las aplicaciones Go

Escrito por
snykgo header

16 de diciembre de 2020

0 minutos de lectura

Nos complace anunciar una compatibilidad mejorada con la seguridad de Go en Snyk Open Source y Snyk Container, que permite a los equipos de desarrollo y seguridad encontrar y corregir vulnerabilidades en sus aplicaciones Go con mayor eficiencia.

Ahora, los desarrolladores de Go pueden probar y monitorear sus proyectos en las distintas etapas del SDLC: desde las primeras líneas de código en su IDE, con la CLI de Snyk en los pipelines de CI/CD y, ahora también, en sus flujos de trabajo basados en git, gracias a la disponibilidad beta de la compatibilidad con Go Modules en las integraciones de SCM de Snyk.

¡Todo es Go!

En la encuesta de Stack Overflow de este año, Go figuró entre los cinco lenguajes más apreciados y más solicitados, posición que ha mantenido durante los últimos años. También ha aumentado el número de usuarios de Go, como lo refleja el informe State of Octoverse de GitHub. Actualmente, es el cuarto lenguaje de GitHub por pull request.

¿A qué se debe esta popularidad? Go se diseñó específicamente para ser más práctico y fácil de usar. Ofrece un rendimiento optimizado, una arquitectura ligera en general y una sintaxis sencilla (¡Go no tiene clases!). La concurrencia que ofrecen las goroutines de Go es un ejemplo de por qué se considera un lenguaje «eficiente»: Uber aprovechó esta capacidad para crear un servicio que, en 2017, fue el de Uber con más consultas por segundo. Y Uber no es la única. Todo lo anterior ha convertido a Go en «el lenguaje de programación de la nube». Lo usan empresas como Google, Netflix y Salesforce, y permite impulsar proyectos como Docker y Kubernetes.

Por eso, no sorprende que estas tendencias también se reflejen en Snyk. Observamos un aumento constante en la cantidad de proyectos de Go que se prueban y monitorean para detectar vulnerabilidades de seguridad y problemas de licencias.

Seguridad de Go en Snyk

Aunque Go es un lenguaje relativamente nuevo (existe desde hace poco más de 10 años), la cantidad de vulnerabilidades de seguridad conocidas asociadas a los paquetes de Go aumenta constantemente, al igual que el riesgo de incorporar esos paquetes.

Según la encuesta de la comunidad de Go de 2019, el 75 % de los desarrolladores de Go afirma que la seguridad es sumamente importante y está satisfecho con la seguridad de Go. El equipo de Go también anunció que invertirá en el futuro en la clasificación y las pruebas de vulnerabilidades. Son señales muy positivas, pero, al igual que en los ecosistemas más consolidados, es necesario gestionar y mitigar el riesgo de incorporar dependencias de código abierto.

Snyk ofrece a los equipos de desarrollo y seguridad que buscan proteger sus aplicaciones Go una solución fácil de implementar, que facilita las correcciones rápidas y funciona con información de seguridad precisa:

  • Fácil de usar para desarrolladores: Snyk se integra sin problemas con los flujos de trabajo de desarrollo existentes, analiza proyectos en segundos (¡incluso proyectos del tamaño de Kubernetes!) y es sumamente fácil de usar, lo que fomenta su adopción y maximiza la productividad.

  • Cobertura integral: Snyk identifica tanto vulnerabilidades de seguridad comoproblemas de licencias en las distintas etapas del SDLC. Admite aplicaciones Go Modules, incluidas las que se ejecutan en contenedores.

  • Profundidad en seguridad: desde 2019, Snyk ha agregado cientos de vulnerabilidades de seguridad de Go a la base de datos de vulnerabilidades de Snyk Intel. La mayoría son vulnerabilidades propias que no aparecen en NVD y se descubrieron gracias al trabajo de investigación del equipo de seguridad de Snyk.

Página web de la base de datos de vulnerabilidades de Snyk que muestra vulnerabilidades de Go, paquetes de GitHub afectados, niveles de gravedad y fechas de publicación

Pruebas de seguridad de Go con la CLI de Snyk

La CLI de Snyk ofrece funciones de línea de comandos para probar, monitorear y corregir vulnerabilidades conocidas en los paquetes de código abierto de Go que incorporas a tu aplicación. Puedes usarla de forma puntual mientras desarrollas tu aplicación o como parte de tu sistema de CI (compilación). La forma en que Snyk analiza las dependencias, basándose en DepGraphs, garantiza que las pruebas incluso de proyectos grandes tomen solo unos segundos.

Para usar la CLI de Snyk, primero debes instalarla y luego autenticarte con una cuenta de Snyk para obtener un token de API. ¡Es gratis!

Luego, puedes usar el comando snyk test para probar tu proyecto local y detectar vulnerabilidades conocidas. El comando te dará detalles sobre los problemas identificados: su gravedad, tipos y descripciones, la cantidad de rutas vulnerables, las acciones de corrección y mucho más.

Terminal que muestra un análisis de vulnerabilidades de dependencias del proyecto HashiCorp Vault, con cinco problemas y 10 rutas vulnerables.

El comando snyk monitor también ejecuta snyk test, pero toma una instantánea de tu proyecto de Go y carga los resultados en la aplicación o interfaz de Snyk. No te preocupes: solo tomamos una instantánea de tus dependencias, no de tu código fuente. Luego, Snyk monitorea tu proyecto y te avisa cuando detecta vulnerabilidades nuevas o correcciones.

Del mismo modo, si quieres probar aplicaciones Go empaquetadas en un contenedor —por ejemplo, si tienes contenedores de terceros cuyo código fuente no puedes probar directamente—, pronto podrás analizarlas de una sola vez como parte de los análisis de contenedores. Para ello, puedes importar una imagen desde un registro de contenedores o usar la funcionalidad de contenedores de la CLI de Snyk. Así podrás detectar tanto las vulnerabilidades del contenedor como las de los módulos de Go. Aunque este tipo de análisis de contenedores detecta problemas del contenedor y del código de una sola vez, puedes consultar los resultados en proyectos separados. Esto es útil cuando los equipos responsables de corregir los problemas del contenedor y del código son distintos, y también permite generar informes separados.

Adelanta las pruebas de seguridad de tus proyectos Go al IDE

Cuanto antes integres las pruebas de seguridad, menos costosas serán las correcciones. Los desarrolladores de Go pueden encontrar y corregir vulnerabilidades desde sus primeras líneas de código, mientras usan su herramienta de desarrollo favorita, gracias a la amplia variedad de plugins para IDE que ofrece Snyk. Entre ellos se incluye un plugin para GoLand de JetBrains, el segundo IDE más popular entre los desarrolladores de Go después de VSCode, según la encuesta de desarrolladores mencionada anteriormente.

Para usar el plugin de Snyk, solo tienen que descargarlo desde GoLand, en Preferences y luego Plugins.

Ventana de preferencias de un IDE de JetBrains que muestra el complemento Snyk Vulnerability Scanner habilitado en la lista de complementos instalados.

Una vez instalado, el plugin descargará la versión más reciente de la CLI de Snyk. Cuando termine el proceso, podrás ejecutar un análisis y ver los resultados en pocos segundos. En el ejemplo de abajo, el análisis del proyecto Vault de HashiCorp detectó algunos problemas de seguridad que podemos examinar para entender cómo corregirlos:

IDE GoLand que muestra un archivo de módulo de Go y un panel de Snyk con cinco vulnerabilidades en dependencias, incluida una vulnerabilidad de alta gravedad relacionada con el uso de valores aleatorios inseguros.

¡Nuevo! Integra las pruebas de seguridad de Go en tus flujos de trabajo de git (BETA)

La última mejora que anunciamos aquí —la posibilidad de probar y monitorear proyectos Go Modules en tus repositorios— hace que las pruebas de seguridad y licencias con Snyk sean aún más eficientes.

Las integraciones de administración de código fuente (SCM) de Snyk te permiten realizar continuamente análisis de seguridad y licencias en todos tus repositorios de Go Modules integrados, y detectar vulnerabilidades de seguridad y problemas de licencias en las dependencias de código abierto.

Después de configurar tu integración de GitHub o Bitbucket e importar tu proyecto Go Modules, podrás hacer seguimiento de los problemas en la página Projects de la interfaz de Snyk:

Panel del proyecto de Snyk para una aplicación Go que muestra los detalles de una vulnerabilidad de alta gravedad por verificación incorrecta de firmas

Esta capacidad todavía está en fase beta y se implementará gradualmente. Si quieres habilitarla para tus proyectos de Go, no dudes en comunicarte con nuestro equipo de soporte.

Si se descubren vulnerabilidades nuevas en tus dependencias de Go, o se publica un parche o una ruta de actualización que antes no estaba disponible, Snyk te avisará por el canal de notificación que hayas configurado.

¡Listos, preparados... Go (seguro)!

Esta última mejora se suma a las mejoras recientes en el rendimiento de las pruebas de seguridad de proyectos Go con la CLI de Snyk y amplía la solución de Snyk para proteger aplicaciones Go, fácil de usar para desarrolladores, integral y con gran profundidad en seguridad.

Ante la creciente popularidad y rápida adopción de Go, y para responder a las necesidades cada vez mayores de nuestros usuarios, nos comprometemos a mejorar la compatibilidad con este ecosistema. De cara a 2021, también mejoraremos los flujos de trabajo de corrección para facilitar la solución automática de vulnerabilidades de Go.

¿Usas Go y quieres empezar? ¡Prueba Snyk gratis!

Comienza con Capture the Flag

Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.