Snyk fix : correction automatique des vulnérabilités depuis la CLI Snyk
7 octobre 2021
0 minutes de lectureNous sommes ravis d’annoncer la bêta ouverte d’une toute nouvelle commande de la CLI Snyk qui facilite encore davantage la détection et la correction des vulnérabilités : la commande snyk fix !
La CLI Snyk est déjà un outil extrêmement polyvalent et puissant, utilisé par les développeurs pour détecter et corriger les vulnérabilités de leurs projets, manuellement dans leur environnement de développement local ou automatiquement dans le cadre d’un pipeline CI/CD.
Avec snyk test, les utilisateurs de Snyk peuvent analyser leur projet et obtenir la liste de toutes les vulnérabilités détectées. Si une mise à niveau d’une dépendance permet de corriger une vulnérabilité, la CLI Snyk présente ses recommandations ainsi que toutes les informations nécessaires sur cette mise à niveau et la correction de la vulnérabilité.
La nouvelle commande snyk fix va plus loin en appliquant automatiquement ces recommandations. Elle est particulièrement utile aux développeurs qui souhaitent appliquer rapidement les correctifs dans le cadre de leur workflow de développement local, ou à ceux qui veulent automatiser les corrections dans leur pipeline CI/CD.
Avant d’examiner cette commande de plus près, voici quelques informations sur sa disponibilité et les écosystèmes pris en charge :
La commande
snyk fixest en bêta ouverte. Il est donc possible que vous rencontriez des problèmes lors de son utilisation.Pour le moment, seuls les projets Python utilisant Pip, Pipenv et Poetry sont pris en charge. Pour en savoir plus, consultez la
snyk fix.
C’est parti !
Configurer la CLI Snyk
Tout d’abord, vérifiez que la CLI Snyk est installée. Si vous connaissez déjà la CLI Snyk et l’avez installée, assurez-vous d’utiliser la version v1.715.0 ou une version ultérieure.
La configuration de la CLI Snyk est simple. Vous pouvez l’installer rapidement avec npm ou Homebrew. Il vous suffit ensuite de vous authentifier avec votre compte Snyk (si ce n’est pas déjà fait, inscrivez-vous gratuitement ici) :
Votre navigateur s’ouvrira et vous invitera à authentifier la CLI. Il ne vous reste plus qu’à le faire ! Vous pouvez maintenant utiliser la CLI Snyk pour analyser vos projets et détecter les vulnérabilités.
Commençons par exécuter la CLI Snyk et lancer un test. Pour cet exemple, j’utiliserai ce fork du projet PyGoat :

Comme le montrent les résultats du test ci-dessus, la CLI Snyk a détecté 8 vulnérabilités et propose des mises à niveau pour les corriger.
Et maintenant ? Au bas des résultats du test, la CLI Snyk nous recommande d’activer la toute nouvelle commande snyk fix. Passons à l’étape suivante !
Activer snyk fix
Comme indiqué au début, la nouvelle commande snyk fix est actuellement en bêta ouverte. Pour l’utiliser, vous devez d’abord activer cette fonctionnalité. Pour cela, rendez-vous dans Snyk Preview, un espace dédié dans l’interface Snyk qui donne accès aux nouvelles fonctionnalités en cours de développement.
Dans Snyk, accédez à Settings, puis à Snyk Preview. Sous « Automatically apply recommended remediation in CLI », activez snyk fix (1), puis cliquez sur le bouton Save changes (2) pour appliquer la modification.

Corriger les vulnérabilités dans votre environnement local
La nouvelle commande est maintenant activée. Il est temps de l’essayer. Dans la CLI, saisissez :
La CLI Snyk applique automatiquement, dans la mesure du possible, les mises à niveau recommandées nécessaires pour corriger les vulnérabilités détectées, puis affiche un récapitulatif des résultats :

Dans notre application PyGoat, 6 des 8 vulnérabilités ont été corrigées. Une nouvelle analyse révèle qu’il reste deux problèmes : une vulnérabilité de gravité moyenne dans le package Jinja2 et une licence LGPLv3.0 dans le package psycopg2.
Ensuite, vous pouvez demander à la CLI Snyk de surveiller le projet en continu et de vous avertir lorsqu’un correctif sera disponible pour la vulnérabilité restante, ou lorsque de nouvelles vulnérabilités seront détectées dans ces dépendances. Pour cela, utilisez :
Corriger les vulnérabilités dans votre pipeline CI/CD
La nouvelle commande snyk fix peut également automatiser les corrections dans vos pipelines CI/CD. Voyons un exemple avec GitHub Actions.
GitHub a lancé GitHub Actions pour aider les développeurs à automatiser leurs workflows d’intégration continue. Les actions GitHub de Snyk vous permettent d’intégrer facilement Snyk à ces workflows et d’analyser vos projets à la recherche de vulnérabilités, le tout dans le cadre de votre workflow CI/CD automatisé et directement depuis GitHub. Vous pouvez maintenant également corriger les vulnérabilités dans le cadre de ce workflow.
Plus précisément, nous allons utiliser cette action, qui exécute le workflow suivant :
Init - Pour éviter les mises à niveau incrémentielles, le workflow commence par vérifier le message du dernier commit et ne relance pas
snyk fixsi celui-ci correspond déjà à une correction automatisée.Security - Le workflow exécute
snyk fixpour rechercher les vulnérabilités et ouvrir une PR si une mise à niveau permettant de les corriger est identifiée.
L’utilisation de cette action est simple.
Les actions GitHub de Snyk utilisent une variable d’environnement appelée SNYK_TOKEN. Il s’agit de votre jeton API Snyk. Vous devez le récupérer avant de configurer l’action GitHub. Vous le trouverez dans l’interface Snyk, sur la page Settings.

Une fois le jeton récupéré, définissez-le comme secret dans les paramètres de votre dépôt, sous Settings | Secrets :

Vous pouvez maintenant configurer l’action Snyk. Dans votre dépôt GitHub, ouvrez l’onglet Actions, puis cliquez sur le bouton New workflow en haut à gauche.
GitHub vous propose plusieurs actions modèles en fonction du langage de programmation utilisé dans le dépôt. Pour configurer l’action GitHub de Snyk, cliquez sur set up a workflow yourself en haut de la page :

Remplacez l’exemple de code par celui-ci (veillez à indiquer le nom de vos branches dans les espaces de noms correspondants de la configuration) :
Et voilà. Lorsque vous validez le nouveau fichier, une nouvelle PR est ouverte et déclenche le workflow, qui simule l’automatisation des corrections avec la commande snyk fix. Découvrez ce workflow qui illustre toutes les étapes :

Comme défini dans le workflow, une nouvelle PR est ouverte avec les correctifs recommandés :

Essayez snyk fix !
Nous avons notamment créé Snyk Preview pour donner aux utilisateurs un accès anticipé aux fonctionnalités en cours de développement et en version bêta. snyk fix est un excellent exemple de fonctionnalité pour laquelle nous aimerions beaucoup recueillir les commentaires de la communauté avant sa mise à disposition générale. Essayez-la et dites-nous ce que vous en pensez à l’adresse suivante : snyk-fix-feedback@snyk.io
Pour en savoir plus sur l’utilisation de la nouvelle commande, ainsi que sur les éléments pris en charge ou non, consultez notre snyk fix.
Bonne correction !
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.