Desarrollo seguro en Elixir con Snyk
27 de abril de 2021
0 minutos de lecturaNos complace anunciar la compatibilidad con Elixir, que permite a los equipos de desarrollo y seguridad encontrar, priorizar y corregir fácilmente las vulnerabilidades en los paquetes de Elixir y Erlang que usan para crear sus aplicaciones.
Con Snyk CLI, los desarrolladores de Elixir ahora pueden probar y monitorear sus proyectos de Mix/Hex manualmente o en etapas clave de su proceso de CI, para asegurarse de que las vulnerabilidades conocidas se detecten a tiempo y antes de implementar el código en producción.
La compatibilidad con Elixir está disponible —gratis— en todos los planes de Snyk.
Seguridad en Elixir: 10 años de trayectoria
Elixir, que recientemente cumplió 10 años, es un lenguaje de programación funcional, concurrente y de propósito general que se ejecuta en la máquina virtual BEAM, utilizada para implementar el lenguaje de programación Erlang. Sus herramientas de desarrollo productivas y su diseño extensible han convertido a Elixir en la opción preferida de muchas organizaciones, como Bleacher Report, Mozilla, PagerDuty, PepsiCo y TheRealReal. Los proyectos de código abierto de este ecosistema también están prosperando. Hex, el administrador de paquetes del ecosistema Erlang, que incluye Elixir, ahora cuenta con más de 12,000 paquetes que se descargan millones de veces al día.
Como ocurre con cualquier otro lenguaje o ecosistema, estos paquetes de código abierto representan un riesgo de seguridad: algunos paquetes de Elixir contienen vulnerabilidades de seguridad conocidas que pueden ser aprovechadas por actores maliciosos. Aproximadamente el 78 % de las vulnerabilidades de código abierto se encuentra en dependencias transitivas, lo que significa que la gran mayoría de las vulnerabilidades de tu aplicación proviene de paquetes de Elixir que ni siquiera sabías que estabas usando.

La buena noticia es que la cantidad de vulnerabilidades conocidas en los paquetes de Elixir sigue siendo relativamente baja, sobre todo en comparación con otros ecosistemas como Java, JavaScript, Python, .NET e incluso Go, otro lenguaje relativamente nuevo. Además, el 90 % de las vulnerabilidades existentes en Elixir tiene una solución: una versión más reciente y segura del paquete a la que puedes actualizar. La mala noticia es que hay algunas vulnerabilidades graves en versiones antiguas de ciertos paquetes de Elixir muy utilizados.
¿Y sabes qué? Con Snyk podrás detectar estas vulnerabilidades a tiempo y aplicar una solución rápidamente.
Prueba y monitoreo de tu aplicación Elixir
Snyk CLI te permite encontrar y corregir vulnerabilidades conocidas en tus dependencias, tanto manualmente como desde un entorno de línea de comandos, dentro de tu flujo de trabajo de CI.
Si recién empiezas a usar Snyk CLI, primero debes instalarlo.
ero. Hay varios métodos para instalar Snyk CLI. Así puedes usar npm:
Luego, debes vincular Snyk CLI con tu cuenta de Snyk mediante la autenticación:
Se abrirá una pestaña en tu navegador para que autentiques CLI y puedas usarlo con tu cuenta.
Solo haz clic en Authenticate.
Ya puedes probar tu aplicación Elixir.
Ve a la carpeta local que contiene tu aplicación Elixir y ejecuta:
En Elixir es común usar proyectos umbrella: subproyectos (llamados "apps" en la terminología de Elixir), cada uno con su propio archivo mix.exs, pero todos comparten un único archivo mix.lock. Snyk es compatible con esta estructura de proyecto desde el primer momento, así que no hace falta agregar parámetros adicionales a CLI: simplemente funciona. En Snyk CLI y la interfaz de usuario, cada “app” se representa como un proyecto independiente, pero todos aparecen agrupados.
Una vez que se realiza el análisis, Snyk compara la lista de dependencias con Snyk Vulnerability Database. Luego, se enumeran todas las vulnerabilidades identificadas, incluida su ruta y las instrucciones para corregirlas.

Como se ve en la imagen anterior, probé el proyecto Changelog: una aplicación Elixir creada con el framework Phoenix, PostgreSQL y muchos otros proyectos de código abierto. Actualmente, el proyecto tiene una vulnerabilidad de gravedad alta en un paquete llamado sweet_xml, que permite a los atacantes provocar una denegación de servicio mediante un ataque de expansión de entidades XML con un DTD en línea. sweet_xml es un paquete muy popular, que se descarga miles de veces al día y suele estar oculto varias capas de dependencias dentro de una aplicación. Lamentablemente, no hay una versión nueva de este paquete que incluya una solución.
Para monitorear tu proyecto con regularidad y recibir notificaciones cuando se introduzcan nuevas vulnerabilidades, usa el siguiente comando:
Se toma una instantánea de tus dependencias actuales para que Snyk pueda detectar nuevas vulnerabilidades divulgadas o identificar cuándo se publica un parche o una ruta de actualización que antes no estaba disponible. Ahora puedes iniciar sesión en la aplicación Snyk para ver los resultados del análisis en la página Projects:

En el proyecto que probé esta vez, Snyk identificó un par de vulnerabilidades relacionadas con plug, un paquete popular que se ha descargado millones de veces, incluidas algunas vulnerabilidades de gravedad alta.
Para ayudarte a entender la vulnerabilidad y cómo llegó a tu aplicación, las tarjetas de problemas explican qué significa, cómo se introdujo y a qué versión debes actualizar. Un puntaje de prioridad te ayuda a establecer prioridades.

En la pestaña Dependencies, verás un árbol de dependencias completo que explica exactamente cómo llegó una vulnerabilidad a tu aplicación.

Como mencionamos antes, también puedes usar Snyk CLI para ejecutar snyk test o snyk monitor como parte de tu canalización de CI. Por ejemplo, la integración de Snyk con Jenkins te permite probar y monitorear continuamente tu código en busca de vulnerabilidades y detener las compilaciones cuando se identifican.
Desarrolla rápido. ¡Mantén la seguridad!
La gran mayoría del código que se usa para crear las aplicaciones actuales es de código abierto. Los desarrolladores prefieren crear con código abierto por la velocidad, flexibilidad, extensibilidad y calidad que ofrece. Pero, como explicamos antes, esta preferencia y la creciente dependencia del código abierto generan riesgos que deben gestionarse y mitigarse.
Con la nueva compatibilidad de Snyk con Elixir, el ecosistema de Elixir ahora es más seguro.
Entonces, ¿cómo empiezo? ¡Qué bueno que preguntes! Consulta la documentación de Snyk para Elixir para ver instrucciones adicionales de uso. La compatibilidad con Elixir está disponible en todos los planes de Snyk. Si ya usas Snyk, solo tienes que instalar Snyk CLI y seguir las instrucciones anteriores. Si aún no usas Snyk, ¡regístrate gratis aquí!
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.