Skip to main content

Sécurisez le développement Elixir avec Snyk

Écrit par

27 avril 2021

0 minutes de lecture

Nous sommes ravis d’annoncer la prise en charge d’Elixir, qui permet aux équipes de développement et de sécurité de trouver, de hiérarchiser et de corriger facilement les vulnérabilités dans les packages Elixir et Erlang qu’elles utilisent pour créer leurs applications !

Avec la CLI Snyk, les développeurs Elixir peuvent désormais tester et surveiller leurs projets Mix/Hex manuellement ou à des étapes clés de leur processus CI, afin de s’assurer que les vulnérabilités connues sont détectées rapidement, avant le déploiement du code en production.

La prise en charge d’Elixir est disponible — gratuitement — avec tous les forfaits Snyk !

La sécurité d’Elixir, 10 ans d’histoire

Elixir, qui a récemment fêté ses 10 ans, est un langage de programmation fonctionnel, concurrent et généraliste qui s’exécute sur la machine virtuelle BEAM utilisée pour implémenter le langage de programmation Erlang. Des outils de développement productifs et une conception extensible ont fait d’Elixir le choix privilégié de nombreuses organisations, dont Bleacher Report, Mozilla, PagerDuty, PepsiCo et TheRealReal. Les projets open source de cet écosystème sont également en plein essor. Hex, le gestionnaire de packages de l’écosystème Erlang, dont fait partie Elixir, propose désormais plus de 12 000 packages téléchargés des millions de fois par jour.

Comme dans tout langage ou écosystème, ces packages open source présentent un risque pour la sécurité : certains packages Elixir contiennent des vulnérabilités de sécurité connues, susceptibles d’être exploitées par des acteurs malveillants. Environ 78 % des vulnérabilités open source se trouvent dans des dépendances transitives, ce qui signifie que la grande majorité des vulnérabilités de votre application proviennent de packages Elixir dont vous ignoriez même l’utilisation !

Page de la base de données des vulnérabilités Snyk avec un champ de recherche, des filtres par package et une liste de vulnérabilités logicielles accompagnées de leur niveau de gravité.

La bonne nouvelle, c’est que le nombre de vulnérabilités connues dans les packages Elixir reste relativement faible, surtout par rapport à d’autres écosystèmes comme Java, JavaScript, Python, .NET et même Go, un autre langage relativement récent. De plus, 90 % des vulnérabilités Elixir existantes peuvent être corrigées en passant à une version plus récente et plus sécurisée du package. La mauvaise nouvelle, c’est que certaines anciennes versions de packages Elixir très utilisés présentent des vulnérabilités particulièrement graves.

Mais devinez quoi ? Avec Snyk, vous pourrez détecter ces vulnérabilités rapidement et appliquer un correctif sans tarder.

Tester et surveiller votre application Elixir

La CLI Snyk vous permet de détecter et de corriger les vulnérabilités connues dans vos dépendances, manuellement ou dans le cadre de votre workflow CI, depuis la ligne de commande.

Si vous découvrez la CLI Snyk, vous devez d’abord l’installer d’

abord. Il existe plusieurs façons d’installer la CLI Snyk. Voici comment procéder avec npm :

npm install -g snyk 

Vous devez ensuite associer la CLI Snyk à votre compte Snyk en vous authentifiant :

snyk auth

Un onglet s’ouvre dans votre navigateur et vous invite à authentifier la CLI pour l’utiliser avec votre compte.

Cliquez simplement sur Authenticate.

Vous pouvez maintenant tester votre application Elixir.

Accédez au dossier local contenant votre application Elixir, puis exécutez :

snyk test

Il est courant dans Elixir d’utiliser des projets umbrella : des sous-projets (« apps » dans la terminologie Elixir), chacun avec son propre fichier mix.exs, mais partageant tous un seul fichier mix.lock. Snyk prend en charge cette structure de projet d’emblée : aucun paramètre CLI supplémentaire n’est nécessaire, tout fonctionne directement. Chaque « app » est représentée comme un projet distinct dans la CLI et l’interface Snyk, tout en étant regroupée avec les autres.

Une fois l’analyse exécutée, Snyk compare la liste des dépendances à la Snyk Vulnerability Database. Toutes les vulnérabilités détectées sont ensuite répertoriées, avec leur chemin et des conseils de correction.

Résultat d’analyse de sécurité des dépendances dans un terminal, révélant une vulnérabilité de gravité élevée de type déni de service dans sweet_xml et huit chemins vulnérables.

Comme le montre l’image ci-dessus, j’ai testé le projet Changelog, une application Elixir basée sur le framework Phoenix, PostgreSQL et plusieurs autres projets open source. Le projet contient actuellement une vulnérabilité de gravité élevée dans un package appelé sweet_xml. Celle-ci permet à des attaquants de provoquer un déni de service au moyen d’une attaque par expansion d’entités XML avec un DTD intégré. sweet_xml est un package extrêmement populaire, téléchargé des milliers de fois par jour, et généralement enfoui plusieurs niveaux de dépendances au sein d’une application. Malheureusement, aucune nouvelle version corrigeant cette vulnérabilité n’est disponible.

Pour surveiller régulièrement votre projet et recevoir des notifications en cas d’apparition de nouvelles vulnérabilités, utilisez la commande suivante :

snyk monitor

Un instantané de vos dépendances actuelles est créé afin que Snyk puisse détecter les vulnérabilités nouvellement divulguées, ainsi que les nouveaux correctifs ou chemins de mise à niveau disponibles. Vous pouvez maintenant vous connecter à l’application Snyk pour consulter les résultats de l’analyse sur la page Projects :

Tableau de bord des projets Snyk affichant les vulnérabilités ouvertes de gravité élevée et les problèmes de dépendances pour bankplatform/apps/backoffice

Dans le projet testé cette fois-ci, Snyk a identifié quelques vulnérabilités associées à plug, un package populaire téléchargé des millions de fois, dont certaines sont de gravité élevée. 

Pour vous aider à comprendre la vulnérabilité et comment elle s’est introduite dans votre application, les fiches de problèmes expliquent ce qu’elle signifie concrètement, comment elle a été introduite et vers quelle version effectuer la mise à niveau. Un score de priorité vous aide à établir vos priorités.

Détails de la faille de sécurité de plug : validation incorrecte des entrées, score CVSS élevé de 8,8, score de 511 et versions du package concernées.

Dans l’onglet Dependencies, vous trouverez l’arborescence complète des dépendances, qui indique précisément comment une vulnérabilité s’est introduite dans votre application.

Tableau de bord des projets Snyk affichant les vulnérabilités divulguées et l’arborescence des dépendances de bankplatform/apps/backoffice.

Comme indiqué précédemment, vous pouvez également utiliser la CLI Snyk pour exécuter snyk test ou snyk monitor dans le cadre de votre pipeline CI. L’intégration Snyk Jenkins, par exemple, vous permet de tester et de surveiller en continu la présence de vulnérabilités dans votre code, et d’interrompre les builds lorsque des vulnérabilités sont détectées.

Développez rapidement. Restez en sécurité !

La grande majorité du code utilisé aujourd’hui pour créer des applications est open source. Les développeurs privilégient l’open source pour sa rapidité, sa flexibilité, son extensibilité et sa qualité. Toutefois, comme expliqué ci-dessus, ce choix et la dépendance croissante à l’open source introduisent des risques qu’il faut gérer et atténuer. 

Avec la nouvelle prise en charge d’Elixir par Snyk, l’écosystème Elixir est désormais plus sécurisé.

Alors, comment commencer ? Ravi que vous posiez la question ! Consultez notre documentation Snyk pour Elixir pour découvrir d’autres instructions d’utilisation. Elixir est pris en charge avec tous les forfaits Snyk. Si vous utilisez déjà Snyk, il vous suffit d’installer la CLI Snyk et de suivre les instructions ci-dessus. Si vous n’utilisez pas encore Snyk, inscrivez-vous gratuitement ici !

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.

Lire la suite

feature insights context
Blog

Les attaques autonomes sont déjà là. La défense doit suivre leur rythme.

Les attaquants autonomes réduisent la fenêtre de défense. Découvrez comment la découverte, la correction, la validation et la prévention continues peuvent aider les équipes de sécurité à suivre le rythme.

feature insights context
Blog

La prévention est-elle essentiellement un problème résolu ?

La prévention dans le code généré par les agents est résolue sur le plan architectural, mais le défi reste de choisir des contrôles qui protègent la sécurité sans ralentir le développement.

Live Stream

Les agents de remédiation démystifiés : pourquoi corriger vaut mieux que détecter

Découvrez comment l’agent de remédiation de Snyk utilise les renseignements de sécurité, l’analyse de la cassabilité et la validation pour transformer les vulnérabilités en pull requests prêtes à être fusionnées.