Détecter et corriger les secrets codés en dur exposés dans votre projet GitHub avec Snyk
25 juin 2024
0 minutes de lectureSnyk est un excellent outil pour détecter les vulnérabilités dans vos projets, notamment les secrets codés en dur. Dans cet article, nous vous montrons comment utiliser Snyk pour repérer les secrets et identifiants codés en dur, puis remanier notre code afin d’utiliser Doppler pour les stocker. Nous prendrons comme référence le projet open source Snyk goof, une application Node.js servant de modèle de base. N’hésitez donc pas à suivre les étapes avec nous.
Premiers pas avec le projet Snyk goof
Pour commencer, créez un fork du projet Snyk goof dans votre compte GitHub. Cet exemple de projet regorge de vulnérabilités que nous pouvons détecter avec Snyk.
Ensuite, créez gratuitement un compte Snyk en accédant à la page de connexion Snyk, puis connectez-vous avec votre compte GitHub (ou un autre fournisseur de votre choix).

Vous devrez autoriser Snyk à accéder à l’adresse e-mail associée à votre compte. Snyk utilise cette adresse pour vous envoyer des informations importantes, notamment des notifications et des rapports de sécurité concernant les projets que vous avez importés.
Si vous n’avez jamais utilisé Snyk, vous devrez également configurer vos paramètres d’accès afin de permettre à Snyk d’analyser régulièrement vos projets et de générer automatiquement des demandes de tirage de correction pour vos dépôts. Pour cela, vous devrez accorder des autorisations supplémentaires depuis votre compte GitHub.
Sélectionnez GitHub comme source du code de votre projet (ou choisissez l’emplacement où se trouve votre code). Vous pouvez ensuite conserver les paramètres par défaut, comme illustré dans la capture d’écran ci-dessous, afin d’utiliser toutes les fonctionnalités Snyk recommandées. Vous pouvez désactiver ces autorisations si vous le souhaitez, mais vous ne pourrez alors pas utiliser les fonctionnalités avancées et avantageuses de demandes de tirage de correction de Snyk, qui automatisent les correctifs de sécurité et les mises à niveau des dépendances.

Ensuite, sélectionnez le projet Snyk goof dans la liste de vos dépôts GitHub pour l’ajouter à votre compte Snyk en tant que projet.

Pour créer un graphe des dépendances, Snyk analysera le fichier manifeste `package.json` du projet Node.js goof. Ce graphe inclura les dépendances directes utilisées par le projet goof, ainsi que les dépendances transitives dont dépendent ces dépendances directes. Snyk poursuit l’analyse afin de créer un graphe complet des dépendances. Il compare ensuite ces dépendances à sa base de données des vulnérabilités et génère un rapport détaillé.

Le projet goof présente de nombreux problèmes. Snyk peut vous aider à en corriger un grand nombre en mettant à niveau les dépendances directes vers des versions sans vulnérabilité ou en appliquant un correctif. Examinons de plus près l’analyse du code pour repérer les secrets codés en dur que nous devons corriger.
Supprimer les secrets publiés sur GitHub
Accédez à la vue Code Analysis et filtrez par Utilisation d’identifiants codés en dur et Secret codé en dur.

Nous devons corriger plusieurs secrets. Pour commencer, ajoutons-les à Doppler. Cela évitera qu’ils soient exposés par inadvertance, centralisera leur gestion et nous permettra de configurer des secrets différents pour nos environnements de développement et de production. Nous n’aurons ainsi plus à craindre de les publier sur GitHub.
Clonez le projet Goof avec Git pour apporter les modifications nécessaires au code. Suivez ensuite les étapes du fichier README du projet Goof pour exécuter le projet en local.
Commençons nos corrections par un jeton codé en dur dans le fichier `app.js` :

Ouvrez `app.js` dans l’éditeur de code de votre choix et repérez la variable contenant le jeton. Copiez le jeton, puis rendez-vous sur Doppler pour créer un compte gratuit.

Dans votre compte Doppler, créez un projet nommé `Goof`.

Des environnements sont créés par défaut. Ajoutez tous les secrets à la configuration Development > Dev. Vous pourrez ensuite mettre à jour les secrets dans toutes les configurations dérivées. Cliquez sur la configuration Development > Dev, puis sur Add First Secret.

Créez un secret nommé `SECRET_TOKEN` et attribuez-lui la valeur actuellement codée en dur. Cliquez ensuite sur Enregistrer.

Maintenant que nous avons ajouté le secret à Doppler, nous pouvons l’utiliser dans notre code. Remplacez la valeur du jeton codée en dur par une variable d’environnement. Nous utiliserons la Doppler CLI pour injecter les secrets dans notre application. Votre code devrait ressembler à ceci :
La Doppler CLI vous donne accès à vos secrets dans tous les environnements : développement local, CI/CD, préproduction et production. Il s’agit d’un binaire léger, disponible pour tous les principaux systèmes d’exploitation, gestionnaires de paquets et Docker.
Suivez les étapes de la page d’installation de la Doppler CLI pour la configurer sur votre système. Dans Doppler, l’accès aux secrets d’un projet est limité à un répertoire spécifique de votre système de fichiers. Vous pouvez ainsi récupérer les secrets de plusieurs projets sur une même machine.
Dans votre terminal, accédez au répertoire du projet Goof et configurez Doppler.
Sélectionnez le projet goof.

Sélectionnez la configuration dev :

Pour utiliser vos secrets, ajoutez la commande `‘doppler run’` au lancement de votre application. Cette commande injectera vos secrets dans l’environnement de votre application.
Pensez à ajouter tous vos secrets et à configurer vos environnements en fonction des besoins de votre application et de votre équipe. Vous pourriez également être intéressé par le redémarrage automatique des applications lorsque vous modifiez des secrets.
Protéger vos secrets avec Snyk et Doppler
Snyk et Doppler sont deux excellents exemples d’outils pour développeurs qui fonctionnent encore mieux ensemble. Commencez dès aujourd’hui à intégrer Snyk et Doppler et découvrez par vous-même comment ces outils puissants peuvent simplifier votre processus de développement. Découvrez Snyk et Doppler en action pour faire un premier pas vers un flux de travail plus sûr et plus efficace.

