Skip to main content

Détecter et corriger les secrets codés en dur exposés dans votre projet GitHub avec Snyk

Écrit par
feature insights context

25 juin 2024

0 minutes de lecture

Snyk 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).

Écran d’inscription avec « Commencez gratuitement », « Aucune carte bancaire requise », un bouton GitHub et des options pour Bitbucket, Google, Azure AD ou Docker ID

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.

Liste des fonctionnalités activées : vérifications des pull requests, nouvelles pull requests de correction, pull requests de mise à niveau des dépendances et Snyk Code.

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.

Interface de sélection de dépôts affichant le dépôt coché « chandler767/nodejs-goof » et un lien pour voir tous les dépôts.

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é.

Tableau de bord d’analyse de sécurité du projet chandler767/nodejs-goof, affichant le nombre de problèmes détectés dans le Dockerfile, package.json et l’analyse du code.

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.

Liste des types de vulnérabilités, avec les catégories « Utilisation d’identifiants codés en dur » et « Secret codé en dur » cochées et le nombre de vulnérabilités correspondant.

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` :

L’analyse de sécurité du code signale un jeton secret codé en dur dans app.js, conformément à la règle CWE-547 sur les secrets codés en dur.

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.

Interface de connexion sombre avec des boutons de connexion Google et GitHub, un champ d’adresse e-mail professionnelle, un lien de réinitialisation du mot de passe et un bouton violet « Se connecter »

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

Page Projets affichant un bouton Ajouter un projet et un exemple de projet contenant des secrets fictifs

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.

Bouton déroulant violet intitulé « Ajouter le premier secret »

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

Tableau de bord des secrets affichant une modification non enregistrée, la valeur SECRET_TOKEN visible et une flèche rouge pointant vers le bouton 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 :

var token = process.env.SECRET_TOKEN;

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.

# Login to your Doppler account (if you haven't already)
doppler login

# Change to your project's directory
cd ./your/project/directory/nodejs-goof

# Select project and config
doppler setup

Sélectionnez le projet goof.

Invite de commandes affichant la configuration de Doppler avec le projet « a-goof-project » sélectionné.

Sélectionnez la configuration dev :

Invite de commande du terminal pour sélectionner une configuration, affichant dev_personal avec les options dev, stg et prd.

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.

doppler run npm start

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.

Publié dans:

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.

illustration hero ai
Blog

L’ouragan de l’IA est là

L’IA accélère à la fois la création de logiciels et les cyberattaques. Les dirigeants doivent sécuriser les agents et le code dès leur conception, appliquer des contrôles à l’exécution et valider les défenses de manière indépendante.

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.