Sécuriser les applications JavaScript dès la ligne de commande
Gideon Idoko
24 octobre 2023
0 minutes de lectureSelon le rapport 2022 de Snyk sur l’état de la sécurité open source, un projet JavaScript moyen présente 49 vulnérabilités, notamment des problèmes courants tels que les dépendances non sécurisées, le cross-site scripting (XSS), la validation insuffisante des entrées et la falsification de requêtes intersites (CSRF). Compte tenu de l’utilisation généralisée de JavaScript, des mesures de sécurité robustes sont de plus en plus importantes pour protéger vos applications contre les cyberattaques. S’il est essentiel de mettre en œuvre ces mesures pendant le développement, il est tout aussi important de s’y prendre tôt. Le faire depuis la ligne de commande simplifie le processus.
C’est pourquoi cet article vous guide tout au long du processus de sécurisation de vos applications JavaScript à l’aide de Snyk CLI.
Qu’est-ce que Snyk CLI ?
Snyk CLI est un outil puissant qui analyse et surveille vos applications, conteneurs et configurations d’infrastructure as code (IaC) pour détecter les vulnérabilités de sécurité. Grâce à son intégration fluide à votre workflow de développement, vous pouvez l’exécuter localement ou dans votre pipeline d’intégration et de livraison continues (CI/CD). Vous pouvez ainsi traiter les problèmes de sécurité de manière proactive dès les premières étapes du développement.
Lorsque vous analysez votre projet JavaScript avec Snyk CLI, l’outil compare ses dépendances à une vaste base de données de vulnérabilités de sécurité et signale les problèmes détectés. Il vous indique également comment les corriger, par exemple en passant à une version sécurisée d’un package vulnérable ou en utilisant des packages de remplacement non vulnérables.
Les avantages de Snyk CLI pendant le développement
Avec Snyk CLI, vous pouvez renforcer la sécurité et la fiabilité de vos projets, et accélérer leur mise en production. Voici quelques-uns de ses principaux avantages :
Analyse de sécurité du code et des dépendances : Snyk CLI analyse votre base de code et vos dépendances à la recherche de vulnérabilités de sécurité connues, puis fournit des informations sur les problèmes détectés, notamment leur niveau de gravité et les correctifs recommandés.
Détection précoce des vulnérabilités : Snyk CLI vous permet de détecter les vulnérabilités tôt dans le cycle de développement afin de les corriger plus rapidement, à moindre coût et avec moins d’efforts.
Conseils de correction des vulnérabilités : En plus de détecter les vulnérabilités, Snyk CLI suggère des mises à jour des dépendances vulnérables ou des bibliothèques de remplacement, pour vous aider à corriger plus facilement les problèmes identifiés.
Prise en charge des exigences de conformité et des bonnes pratiques : Tout en veillant au respect des bonnes pratiques, vous pouvez réaliser des audits de sécurité et évaluer votre conformité à l’aide des rapports générés par Snyk CLI.
Prise en charge de nombreux langages et écosystèmes : Grâce à sa prise en charge de différents langages, Snyk CLI peut tester un large éventail de projets, notamment en Java, Python, .NET, Ruby ou PHP. C’est donc un excellent choix pour les équipes qui utilisent plusieurs langages.
Une expérience adaptée aux développeurs : Les commandes intuitives de Snyk CLI facilitent l’intégration des contrôles de sécurité au workflow de développement. En plus de la ligne de commande, vous pouvez aussi utiliser Snyk dans votre IDE grâce aux plugins et extensions.
Comment installer Snyk CLI
Vous pouvez installer Snyk CLI sur votre machine de plusieurs façons : à l’aide des exécutables autonomes disponibles ou de gestionnaires de packages comme Homebrew sur macOS et Scoop sur Windows.
Toutefois, pour votre application JavaScript, le plus simple est d’installer Snyk CLI globalement avec npm ou Yarn, puisque Node.js est probablement déjà installé. Assurez-vous d’utiliser Node.js version 12 ou ultérieure, puis exécutez la commande suivante pour installer Snyk CLI comme package npm global :
Vous pouvez également l’installer globalement avec Yarn en exécutant yarn global add snyk. Pour en savoir plus, consultez le guide d’installation de Snyk CLI.
Comment sécuriser les applications JavaScript avec Snyk CLI
Maintenant que Snyk CLI est installé, découvrez ses fonctionnalités en testant un exemple de projet JavaScript.
Configurer un exemple de projet JavaScript en local
Pour vous permettre de configurer rapidement un projet à tester avec Snyk CLI, un exemple de projet JavaScript comprenant tous les fichiers manifestes nécessaires est disponible dans ce dépôt GitHub. Ce projet est une API de citations simple qui utilise Lodash et Express comme dépendances. L’API de citations dispose d’un endpoint GET / qui renvoie une liste de citations et d’un endpoint GET /random qui renvoie une citation aléatoire.
Le projet utilise Docker pour la conteneurisation et Kubernetes pour son infrastructure. Le plus simple pour configurer Docker et Kubernetes sur votre machine locale consiste à installer Docker Desktop et à activer Kubernetes dans ses paramètres :

Pour configurer l’exemple de projet JavaScript, clonez le dépôt sur votre machine locale :
Accédez ensuite au répertoire du projet et installez ses dépendances :
Notez que le code JavaScript du projet se trouve dans le fichier server.js. Exécutez npm start pour lancer l’application sur le port 3000 :

Créez et démarrez maintenant un conteneur pour l’application en exécutant la commande Docker suivante :
Cette commande crée une image Docker vulnnode à partir du fichier Dockerfile, la lance et expose le conteneur sur le port 4000.
Enfin, créez une ressource Kubernetes pour l’application :
Ce code utilise le fichier manifeste kube.yml et rend l’application accessible sur le port 5000. À présent, tout est prêt : vous pouvez passer à l’analyse du projet.
Authentifier votre machine
Snyk CLI doit être associé à un compte Snyk. Vous devez donc authentifier votre machine avant de pouvoir l’utiliser. Si vous n’avez pas encore de compte, créez gratuitement un compte Snyk pour suivre les étapes. Après vous être connecté, ouvrez votre terminal et authentifiez Snyk CLI à l’aide de cette commande :
Une page Web s’ouvre dans votre navigateur. Cliquez sur le bouton Authenticate pour authentifier Snyk CLI.
Si cette méthode d’authentification ne fonctionne pas, vous pouvez utiliser directement votre jeton d’API. Accédez à Account Settings > General > API Token et copiez votre jeton d’API. Authentifiez-vous ensuite dans votre terminal à l’aide de ce jeton :
Vous devriez maintenant voir un message confirmant l’authentification de votre compte et indiquant que Snyk CLI est prêt à l’emploi. Découvrez les commandes Snyk CLI qui vous aideront à tester votre projet JavaScript.
snyk test
La commande snyk test vérifie la sécurité et les licences des logiciels open source. Elle analyse les dépendances du projet pour détecter les vulnérabilités de sécurité connues qu’elles contiennent. Elle fournit également des informations sur ces vulnérabilités, comme leur type, leur description, les chemins des fichiers vulnérables et les étapes à suivre pour les corriger.
Lorsque vous exécutez snyk test , Snyk CLI tente de détecter automatiquement les fichiers manifestes contenant des dépendances (comme le fichier package.json du projet que vous avez configuré) et de les tester. Remarque : Snyk recherche les dépendances locales pour détecter les vulnérabilités. C’est pourquoi nous avons téléchargé les dépendances du projet lors de la configuration.
Pour analyser le projet, exécutez la commande de test dans le même répertoire :
Le résultat devrait ressembler à ceci :

Snyk a testé les dépendances du projet, détecté des problèmes et les a signalés en précisant leur description, leur ID, leur niveau de gravité et un lien pour en savoir plus.
Tous les problèmes sont regroupés dans une section intitulée Issues to fix by upgrading. Cela signifie que la mise à jour des bibliothèques concernées permet de supprimer une ou plusieurs vulnérabilités. Vous découvrirez plus loin comment corriger ces problèmes.
Les problèmes détectés lors du test peuvent également être regroupés dans les sections suivantes :
Patchable issues désigne les problèmes pour lesquels aucune mise à jour corrective n’est disponible, mais qui peuvent être contournés à l’aide d’un correctif.
Issues with no direct upgrade or patch désigne les problèmes pour lesquels aucune mise à jour ni aucun correctif n’est disponible. Vous pouvez décider de conserver la dépendance ou de la remplacer par une autre.
Remarque : Pour obtenir le résultat dans un fichier JSON, ajoutez simplement l’option --json-file-output=./path/to/file.json à la commande Snyk CLI.
Dans un pipeline CI/CD, vous pouvez exécuter snyk test de façon à interrompre le pipeline si le projet contient des vulnérabilités, c’est-à-dire si le code de sortie de la commande de test n’est pas égal à 0.
snyk monitor
Lorsque vous exécutez la commande snyk monitor, elle crée un instantané de votre projet et envoie les données à Snyk. Il est important de noter que snyk monitor ne remplace pas snyk test : son objectif principal est de créer un instantané et d’en suivre l’évolution. C’est un outil précieux à utiliser avant un déploiement en production. De plus, Snyk vous tient informé en vous avertissant par le moyen de contact de votre choix lorsqu’une nouvelle vulnérabilité ou une mesure de correction concernant votre projet est identifiée.
Pour vous assurer que l’instantané est enregistré au bon endroit, il est recommandé de préciser des informations supplémentaires, comme l’organisation (--org) et le nom du projet (--project-name).
Pour voir snyk monitor en action, exécutez la commande suivante :
Remplacez <YOUR_ORG> par le nom de l’organisation dans laquelle vous souhaitez enregistrer l’instantané du projet. Après l’exécution de la commande, un lien vers l’instantané s’affiche dans la réponse, comme ici :

Suivez le lien pour afficher l’instantané dans votre tableau de bord Snyk :

snyk ignore
Dans certains cas, aucun correctif ni aucune mise à jour ne permet de corriger une vulnérabilité, ou vous estimez qu’elle ne peut pas être exploitée dans votre application. Vous pouvez alors demander à Snyk d’ignorer la vulnérabilité pendant une période donnée. La commande snyk ignore vous permet de gérer les problèmes connus ou les faux positifs qui ne peuvent pas être corrigés immédiatement ou qui ne sont pas pertinents dans le contexte de votre projet.
Pour utiliser snyk ignore, vous devez identifier le problème à l’aide de son ID de vulnérabilité. Vous pouvez récupérer cet ID dans le résultat de la commande snyk test. Par exemple, la vulnérabilité de déni de service par expression régulière (ReDoS) associée à la version actuelle du package Lodash du projet porte l’ID SNYK-JS-LODASH-1018905. Vous pouvez donc l’ignorer en exécutant cette commande :
Ici, l’option --expiry précise la durée pendant laquelle le problème doit être ignoré, et l’option --reason indique la raison de cette exclusion. Cette commande crée un fichier de règles .snyk à la racine du répertoire, qui contient des informations sur la vulnérabilité. Ainsi, celle-ci ne sera plus signalée lors des prochaines exécutions de snyk test.
snyk container
Snyk CLI propose deux commandes pour les conteneurs (test et monitor) qui testent et surveillent les images de conteneurs locales ou distantes, comme les images Docker, afin d’y détecter les vulnérabilités connues. La syntaxe de ces deux commandes est la suivante :
Puisque vous avez créé l’image sous le nom vulnnode lors de la configuration, testez-la à l’aide de la commande suivante :
Le résultat devrait ressembler à ceci :

Vous découvrirez un peu plus loin dans cet article comment corriger ces problèmes. Comme avec la commande snyk monitor, vous pouvez surveiller l’image du conteneur vulnnode et en créer des instantanés à l’aide de la commande suivante :
snyk iac
Avec l’IaC, les ressources cloud, les réseaux et les configurations ne sont pas configurés manuellement : ils sont gérés et déployés à l’aide de code. La commande snyk iac détecte les vulnérabilités de sécurité dans vos fichiers de configuration. Vous pouvez ainsi corriger les erreurs de configuration avant qu’elles ne présentent un risque pour la sécurité.
Analysez le fichier IaC Kubernetes à l’aide de la commande suivante :
Le résultat devrait ressembler à ceci :

Maintenant que vous avez analysé le projet JavaScript, découvrez comment corriger certains des problèmes détectés.
Corriger les problèmes de sécurité dans votre projet JavaScript
En commençant par la commande snyk test, la CLI Snyk indique dans le résultat que vous pouvez corriger les problèmes détectés en mettant à niveau express de la v4.17.1 à la v4.18.2 et lodash de la v4.17.4 à la v4.17.21. Modifiez les versions dans votre fichier package.json, puis réinstallez les dépendances avec npm install.
Relancez snyk test après la réinstallation. Vous obtiendrez un résultat semblable à celui-ci :

Et voilà, c’est tout ce que vous avez à faire pour corriger les vulnérabilités du projet. Remarque : si vous connectez votre dépôt Git à Snyk via app.snyk.io, Snyk créera automatiquement des pull requests proposant des mises à jour des dépendances qui corrigent les problèmes de sécurité dans le fichier manifeste package.json.
Avec la commande `snyk container test`, les problèmes détectés proviennent de l’application contenue dans l’image et de l’image de base utilisée :

L’image de base actuelle présente une vulnérabilité critique, quatre élevées et trois moyennes. Il est recommandé de corriger rapidement les vulnérabilités critiques et élevées, car elles pourraient gravement affecter votre application en cas d’exploitation.
Pour corriger les problèmes du conteneur, vous pouvez mettre à niveau l’image de base dans le Dockerfile vers l’une des images suggérées, par exemple node:20.5-bookworm-slim :
Remarque : si vous connectez votre dépôt Git à Snyk via app.snyk.io, Snyk créera automatiquement des pull requests avec les mises à jour du Dockerfile qui corrigent les problèmes de sécurité. Il ne vous restera qu’à les fusionner.
Reconstruisez l’image du conteneur à l’aide de la commande suivante :
Relancez le test du conteneur. Cette fois, vous obtiendrez un résultat semblable à celui-ci :

Cette correction élimine les problèmes critiques et élevés. Les vingt-huit problèmes restants sont tous de faible priorité et peuvent être traités sans difficulté.
Enfin, avec la commande snyk iac test, les problèmes détectés résultent de certaines configurations qui n’ont pas été incluses dans le fichier manifeste kube.yml :

Les problèmes rencontrés ici sont de priorité moyenne. Essayez d’en corriger deux en appliquant les mesures correctives suggérées par la CLI Snyk. Ouvrez le fichier kube.yml et mettez à jour le conteneur :
Relancez snyk iac test kube.yml et vous devriez obtenir le résultat suivant :

Il ne reste alors que deux problèmes de priorité moyenne, que vous pouvez ignorer.
Pour conclure
Dans cet article, vous avez découvert comment sécuriser vos applications JavaScript en les analysant avec la CLI Snyk pour détecter les vulnérabilités.
Vous aimez travailler dans le terminal ? Vous pouvez désormais utiliser facilement la CLI Snyk pour sécuriser votre code, vos applications, vos conteneurs et vos fichiers IaC. La CLI Snyk est un allié de taille : elle permet aux développeurs de protéger leurs projets contre les menaces potentielles tout en s’intégrant parfaitement à leur workflow de développement existant. Inscrivez-vous gratuitement dès aujourd’hui.
Sécurisez vos applications JavaScript dès maintenant
Détectez et corrigez gratuitement les vulnérabilités JavaScript avec Snyk.
Aucune carte de crédit requise.
Ou inscrivez-vous avec Azure AD Docker ID Bitbucket
En utilisant Snyk, vous acceptez de respecter nos politiques, notamment nos Conditions d’utilisation et notre Politique de confidentialité.



