Skip to main content

Snyk Code agrega análisis de seguridad para Go

Escrito por

Frank Fischer

blog feature snyk code green

14 de octubre de 2021

0 minutos de lectura

Nota del editor (10 de enero de 2022): La compatibilidad con Go en Snyk Code ya está disponible de forma general.


Snyk Code se lanzó a principios de 2021 y, desde entonces, ha avanzado mucho en poco tiempo. Como herramienta de seguridad diseñada para desarrolladores, ofrece una interfaz de usuario y una CLI intuitivas, se integra en los IDE más populares, brinda recomendaciones de corrección prácticas y analiza código a velocidades en tiempo real líderes en la industria y con gran precisión. Además, todo está respaldado por algoritmos basados en aprendizaje automático que aprenden de la comunidad global de desarrolladores y hacen crecer exponencialmente su sólida base de conocimientos.

Desde su lanzamiento, hemos ido agregando más lenguajes. Snyk Code ya es compatible con JavaScript, TypeScript, Java, Python, C#, PHP (beta) y ahora... redoble de tambores... ¡compatibilidad con Go en versión beta!

Veamos cómo logramos que el análisis de seguridad para Go de Snyk Code llegara a la versión beta y cómo puedes empezar a aprovechar sus capacidades.

El recorrido de Go en Snyk Code

Por lo general, el proceso para agregar un nuevo lenguaje comienza con la incorporación de un analizador al motor de Snyk Code, que genera una representación intermedia del código original. Esta representación es independiente del lenguaje y admite todas las características de los lenguajes modernos de propósito general. El siguiente paso es ejecutar un proceso basado en aprendizaje automático para generar una base de conocimientos de reglas. Cada lenguaje tiene un entorno de ejecución o un conjunto de bibliotecas únicos, y el motor aprende cuáles son las funciones de origen y destino específicas.

Como puedes imaginar, se trata de un proceso iterativo y, por eso, la base de conocimientos crece exponencialmente día tras día. En cierto momento, cuando los comentarios de nuestros primeros evaluadores indican que les resulta útil encontrar problemas de seguridad que otras herramientas no detectaban, agregamos la nueva base de conocimientos a producción. Marcamos las reglas como “beta” porque aún no hemos terminado, pero queremos ofrecer valor cuanto antes para poder seguir mejorándolas. Después seguimos agregando reglas cada día. Es posible que los resultados todavía no incluyan todo, pero los hallazgos seguirán ampliándose. Cuando nuestras mediciones y pruebas internas demuestren que alcanzamos la cobertura y precisión que buscamos, la compatibilidad con el lenguaje dejará la versión beta y estará disponible de forma completa.

Ahora estamos usando este proceso para agregar otro lenguaje: Go. Es un lenguaje relativamente joven, pero hemos visto que su adopción ha crecido considerablemente en los últimos años. Go se diseñó para cubrir una necesidad. Los lenguajes que ofrecen un control sólido del rendimiento, como C++, suelen considerarse complejos y difíciles de manejar. En cambio, los lenguajes fáciles de entender y de leer, como Python, parecen tener un rendimiento general inferior. Go se diseñó para cubrir esa brecha, pensando en los entornos modernos: máquinas multinúcleo con gran conectividad de red.

Aunque Go, como lenguaje de programación, incluye características que previenen algunas fuentes comunes de errores —como el tipado estático y la seguridad de memoria—, y desde el principio el entorno de programación contó con herramientas como un linter, aún existen problemas a nivel semántico. Ahí es donde entra en juego Snyk Code.

Nota: Por lo general, tu aplicación se compone de dependencias de código abierto y de tu propio código. Snyk Open Source analiza las configuraciones de los administradores de paquetes para Go Modules, dep o govendor y comprueba si hay paquetes vulnerables.

Cómo analizar tu proyecto de Go con Snyk Code

Una de las principales ventajas de Snyk Code es que no requiere ninguna instalación cuando usas un sistema de administración de código fuente como GitHub o GitLab. Ni siquiera tiene que ser tu propio código: puedes analizar repositorios de código abierto. Todo comienza con una cuenta gratuita. Regístrate para obtener una cuenta gratuita de Snyk: no necesitas tarjeta de crédito, solo una cuenta de GitHub o GitLab.

Luego, agrega un proyecto, ya sea uno de tu cuenta personal de Git o indicando la ruta a un repositorio público. Los análisis comienzan automáticamente y hasta los repositorios más grandes, con decenas de miles de archivos, se analizan en cuestión de minutos.

Al abrir los resultados del análisis de código, verás los detalles del análisis:

Panel del proyecto Snyk que muestra repositorios con búsqueda, filtros de problemas, integraciones con GitHub y recuentos de vulnerabilidades por nivel de gravedad.

Nota: Como Go está en versión beta, los resultados no serán tan precisos como los de los lenguajes con compatibilidad completa. Además, los resultados variarán a diario debido a nuestras actualizaciones continuas.

Al igual que con nuestros otros lenguajes, los complementos de IDE para Visual Studio Code y JetBrains GoLand también permitirán analizar la seguridad del código Go con Snyk Code. Y, por supuesto, Snyk CLI también es compatible con Go.

Ayúdanos a sacar más rápido de la versión beta nuestro análisis de seguridad para Go: pruébalo y envíanos tus comentarios.

Comienza con Capture the Flag

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