Skip to main content

Recherche et résolution de votre première vulnérabilité de code

Découvrez les principes de base de la sécurisation de votre code en résolvant une code scanning alerte dans un référentiel de démonstration.

À mesure que vous apprenez à coder, il est normal d’introduire accidentellement des vulnérabilités dans vos projets. Si ces problèmes de sécurité ne sont pas résolus avant de partager votre travail, les attaquants peuvent les utiliser pour manipuler votre code et accéder aux données sensibles. Il est donc important de les identifier et de les corriger dès que possible.

Heureusement, il existe des outils comme code scanning qui recherchent, expliquent et corrigent même automatiquement les vulnérabilités dans vos dépôts publics. Dans ce tutoriel, vous allez apprendre à sécuriser votre travail avec code scanning.

Configuration du référentiel de démonstration

Commençons par la duplication d’un projet de démonstration avec une vulnérabilité de sécurité. Ce projet génère une page web simple, mais étant donné que nous ne déploierons pas le projet, il n’existe aucun risque de sécurité dans cet exercice.

  1. Naviguez jusqu’au référentiel new2code/code-scanning-demo.
  2. En haut à droite de la page, cliquez sur Fork.
  3. Dans la page qui s’affiche, cliquez sur créer un fork.

Recherche de vulnérabilités dans votre code

Maintenant que nous avons configuré le projet, nous allons activer code scanning pour votre fork afin de vérifier les vulnérabilités dans le code.

  1. De retour sur GitHub, sur la page d’accueil de votre dépôt, cliquez sur Security and quality.
  2. Dans la ligne «Code scanning alertes », cliquez sur Configurer code scanning.
  3. Dans la section « Outils », en regard de «CodeQL analyse », sélectionnez Configurer, puis cliquez sur Par défaut.
  4. Dans la fenêtre contextuelle qui s’affiche, cliquez sur Activer CodeQL. Cela déclenche un GitHub Actions flux de travail qui analyse votre code pour détecter les vulnérabilités.
  5. Pour vérifier l’état de votre flux de travail, dans la barre de navigation, cliquez sur Actions.
  6. Une fois le workflow terminé, dans la barre de navigation, cliquez sur Security and quality.
  7. Pour afficher l’alerte code scanning découverte par le flux de travail, dans le volet de navigation latéral, cliquez Code scanning, puis cliquez sur Script intersites réfléchis.

Comprendre une code scanning alerte

Maintenant que code scanning a identifié une vulnérabilité dans le code, décomposons les informations fournies dans l’alerte.

Emplacement

L’alerte affiche un petit aperçu d’un fichier, centré sur les lignes de code créant la vulnérabilité. Dans notre cas, la vulnérabilité est détectée sur la ligne 8 de notre fichier index.js , où nous implémentons l’entrée fournie par l’utilisateur dans notre site.

Si nous examinons de plus près, nous pouvons voir que le problème sous-jacent se produit à la ligne 7, lorsque nous affectons greet à l’entrée utilisateur sans vérifier le code malveillant. Pour afficher une vue pas à pas de la vulnérabilité dans notre code, dans la légende sous les lignes vulnérables, cliquez sur afficher les chemins d’accès.

Capture d’écran de l’emplacement d’une alerte code scanning. Un bouton « Afficher les chemins » est décrit en orange.

Description et recommandation

Sous la préversion du fichier, code scanning fournit une description plus détaillée de la vulnérabilité. Pour afficher le correctif recommandé, ainsi que des exemples de code vulnérable et fixe, cliquez sur Afficher plus.

Capture d’écran des détails d’une alerte code scanning. Une liste déroulante intitulée « Afficher plus » est décrite en orange.

Dans notre cas, la recommandation consiste à nettoyer l’entrée utilisateur avant de l’utiliser. Cela signifie que nous devons vérifier l’entrée pour du code malveillant, puis la nettoyer si nécessaire.

Conseil

Si vous ne comprenez pas entièrement le correctif recommandé, essayez de demander Tchat Copilot qu’on vous l’explique.

Durée

Enfin, vous pouvez voir la chronologie de l’alerte en bas de la page. Notre chronologie contient la validation où la vulnérabilité a été détectée pour la première fois et sera mise à jour automatiquement lorsque nous corrigeons la vulnérabilité.

Capture d’écran de la chronologie d’une alerte code scanning.

Résolution automatique d’une vulnérabilité

Pour sécuriser notre projet rapidement et facilement, nous allons utiliser GitHub Copilot correction automatique pour code scanning.

  1. Sous le titre de l’alerte, dans la zone vous suggérant « Accélérez la correction de cette alerte à l’aide de Copilot correction automatique pour CodeQL », cliquez sur Générer la solution.

  2. Après Copilot avoir généré la suggestion de correctif, il décrit les modifications qu’il suggère, affiche un aperçu des modifications et appelle toutes les dépendances ajoutées. Prenez un moment pour lire le travail de Copilot.

  3. Pour créer un pull request avec le correctif, cliquez sur Effectuer le commit dans une nouvelle branche, puis cliquez sur Effectuer le commit de la modification.

  4. Une fois que le brouillon de pull request est créé, en bas de page, cliquez sur Prêt pour l'examen pour permettre sa fusion.

  5. Pour appliquer le correctif, cliquez sur Fusionner la demande de tirage, puis cliquez sur Confirmer la fusion.

    Une fois que le pull request est fusionné et que le code scanning flux de travail s'exécute à nouveau, l'alerte sera fermée automatiquement et le commit qui corrige la vulnérabilité sera ajouté à la chronologie.

Remarque

Dans les projets réels, vous devez toujours passer en revue les modifications suggérées avant Copilot de les valider dans votre code.

Étapes suivantes

Maintenant que vous avez essayé code scanning sur un référentiel de démonstration, activez-le sur vos propres projets pour rechercher et corriger rapidement les vulnérabilités actuelles et futures.

Maintenant que vous avez sécurisé le code que vous avez écrit vous-même, passez à l’étape suivante pour sécuriser votre code en vérifiant la sécurité de vos dépendances. Consultez « Recherchez et corrigez votre première vulnérabilité de dépendance ».