Corriger les problèmes à l’aide du mode Agent de GitHub Copilot

Effectué

Après avoir analysé les problèmes de sécurité à l’aide de l’agent Ask, vous êtes prêt à implémenter des correctifs. l'agent de GitHub Copilot vous permet d'exécuter des tâches de correction complexes en toute sécurité tout en garantissant que la fonctionnalité est conservée et que la qualité du code est améliorée.

Note

Envisagez d’utiliser l’agent Ask pour analyser les problèmes de sécurité et formuler un plan de correction avant d’utiliser l’agent pour implémenter des modifications. Cette approche garantit que la refactorisation est effectuée de manière réfléchie et sécurisée.

Qu’est-ce que le mode Agent ?

le mode Agent de GitHub Copilot est l'un des trois agents intégrés dans GitHub Copilot Conversation. Contrairement à l’agent Ask, qui fournit des conseils et des suggestions dans le panneau de conversation, le mode Agent implémente les modifications en tant que modifications directement dans vos fichiers de code.

Les fonctionnalités en mode Agent sont les suivantes :

  • Modification de fichiers avec des modifications de code précises.
  • Application simultanée de modifications sur plusieurs fichiers.
  • Exécution de tests pour vérifier les modifications.
  • Exécution de commandes basées sur vos instructions.
  • Présentation du contexte et des dépendances du projet.
  • Maintien de la cohérence dans la base de code.

Le mode agent est idéal pour implémenter des correctifs de sécurité en plusieurs étapes qui nécessitent une gestion minutieuse des dépendances, des cas de périphérie et des tests. Il détermine automatiquement le contexte requis et exécute les étapes nécessaires pour atteindre vos objectifs de correction.

Types d’agents pour la correction de la sécurité

GitHub Copilot offre plusieurs types d’agents qui s’exécutent dans différents environnements. Pour les flux de travail de correction de sécurité, les deux types les plus pertinents sont les suivants :

  • Agent local (Agent dans VS Code) : s’exécute de manière interactive dans l’éditeur avec un accès total à votre espace de travail, outils et modèles. Il s’agit du type d’agent décrit tout au long de cette unité — idéal pour une remédiation de sécurité pratique, étape par étape, où vous examinez chaque modification.
  • Agent cloud Copilot : s’exécute à distance et s’intègre aux pull requests GitHub. Vous pouvez affecter un problème de GitHub directement à l’agent cloud, qui recherche ensuite la base de code, crée un plan d’implémentation et apporte des modifications de code sur une branche pour votre révision. Disponible avec des offres Copilot Pro+, Business et Entreprise.

Pour la plupart des corrections de sécurité, l’agent local est recommandé, car il vous offre une visibilité en temps réel de chaque modification. L’agent cloud est utile pour les problèmes bien définis et à risque inférieur où l’implémentation autonome est acceptable.

Niveaux d’autorisation

Avant de commencer une session de correction, choisissez un niveau d’autorisation qui correspond à la complexité et au risque du travail :

Niveau d’autorisation Description Recommandé pour
Approbations par défaut Seuls les outils en lecture seule et sécurisé s’exécutent sans confirmation. Toutes les modifications de fichier et les commandes de terminal nécessitent votre approbation. Correction sensible à la sécurité : surveillance maximale
Ignorer les approbations Approuve automatiquement tous les appels d’outils sans boîte de dialogue de confirmation. Correctifs de routine lorsque vous faites confiance au plan
Autopilot (préversion) Entièrement autonome : approuve automatiquement les outils et répond automatiquement jusqu’à ce que la tâche soit terminée. Non recommandé pour les modifications de sécurité

Sélectionnez le niveau d’autorisation dans le sélecteur d’autorisations dans la vue Conversation. Pour la correction de la sécurité, les approbations par défaut sont recommandées afin de pouvoir passer en revue chaque modification de fichier avant son application.

Corriger les problèmes de sécurité à l’aide de l’agent

Vous pouvez utiliser l’agent pour implémenter les correctifs de sécurité identifiés lors de l’analyse de l’agent Ask. L’agent peut exécuter automatiquement plusieurs étapes de correction tout en préservant les fonctionnalités d’origine et en améliorant la sécurité du code.

Stratégies de correction des problèmes de sécurité

Voici les stratégies clés d’utilisation du mode Agent pour résoudre les problèmes de sécurité :

  • Corriger les vulnérabilités d’injection : indiquez au mode Agent de remplacer la concaténation de chaîne par des requêtes paramétrables ou des instructions préparées.

  • Mettez en œuvre un chiffrement sécurisé : demandez à l’Agent de remplacer les algorithmes de hachage faibles par des alternatives sécurisées comme bcrypt ou Argon2.

  • Assainir les journaux : utilisez l’Agent pour supprimer les données sensibles des entrées de journal tout en conservant des informations de diagnostic utiles.

  • Valider les chemins d’accès aux fichiers : Laissez l’Agent ajouter une validation de chemin d’accès appropriée qui empêche les attaques de traversée de répertoire.

  • Ajouter une validation des entrées : demandez à l’agent de mettre en œuvre une validation et un assainissement complets des entrées.

  • Garantir la sécurité : demandez à l’Agent de vérifier que les correctifs conservent toutes les vérifications de sécurité existantes et n’introduisent pas de nouvelles vulnérabilités.

  • Gérer les fonctionnalités : Utilisez l’Agent pour préserver toute la logique métier et la gestion des erreurs existantes tout en améliorant la sécurité.

Instructions pour les agents afin de remédier aux problèmes de sécurité

Lorsque vous utilisez l’Agent pour corriger les problèmes de sécurité, vos invites doivent être spécifiques, exploitables et inclure des considérations de sécurité. Voici des exemples de texte en langage naturel que vous pouvez inclure dans votre invite lors de la correction des problèmes de sécurité :

Préparation et sécurité

Ces indications vous aident à mettre en place des mesures de sécurité avant d’apporter des modifications liées à la sécurité à votre base de code.

  • « Avant d’effectuer des correctifs de sécurité, créez des tests unitaires qui vérifient le comportement actuel des fonctions sélectionnées. »
  • « Analysez le code sélectionné pour les dépendances et assurez-vous que les correctifs conservent toutes les fonctionnalités existantes. »
  • « Créez une branche de sauvegarde et exécutez des tests existants avant d’implémenter des correctifs de sécurité dans le code sélectionné . »

Opérations de correction de base

Utilisez ces consignes pour aborder les vulnérabilités de sécurité courantes avec des correctifs simples.

  • « Refactoriser la requête SQL sélectionnée pour utiliser des requêtes paramétrables au lieu de concaténation de chaînes . »
  • « Remplace le hachage de mot de passe MD5 sélectionné par bcrypt, en veillant à générer un saler approprié. »
  • « Supprimez les informations sensibles des entrées de journalisation sélectionnées en maintenant la valeur de diagnostic. »
  • « Ajoutez la validation du chemin d’accès aux opérations de fichier sélectionnées pour empêcher les attaques de traversée du répertoire. »

Modèles de correction avancés

Ces invites guident le mode Agent via des améliorations de sécurité plus complexes qui impliquent plusieurs composants ou modifications architecturales.

  • « Refactoriser la fonction d’authentification sélectionnée pour utiliser l’authentification sécurisée basée sur des jetons avec expiration appropriée. »
  • « Implémentez une validation complète des entrées pour les fonctions de traitement des données utilisateur sélectionnées. »
  • « Remplacez l’implémentation de chiffrement faible sélectionnée par le chiffrement AES-256 en suivant les meilleures pratiques. »
  • « Refactoriser la gestion des erreurs sélectionnée pour fournir des messages conviviaux lors de la journalisation des erreurs détaillées en toute sécurité. »

Qualité et validation

Utilisez ces messages pour vous assurer que les correctifs de sécurité répondent aux normes de qualité et n’introduisent pas de régressions.

  • « Après avoir implémenté des correctifs de sécurité, exécutez tous les tests et vérifiez que les fonctionnalités restent identiques. »
  • « Assurez-vous que le code fixe suit les directives de sécurité C# de Microsoft et les conventions de codage. »
  • « Vérifiez que les correctifs de sécurité n’introduisent pas de régressions de performances. »
  • « Créez des tests unitaires axés sur la sécurité pour vérifier que les vulnérabilités sont entièrement traitées. »

Flux de travail en mode Agent pour corriger les problèmes de sécurité

Suivez ce flux de travail systématique pour corriger les problèmes de sécurité à l’aide du mode Agent :

Étape 1 : Préparer votre espace de travail

Commencer par un espace de travail propre vous permet de suivre les modifications avec précision et de revenir en arrière si nécessaire.

Vérifiez que vous travaillez dans une branche Git nettoyée avec tous les travaux existants validés. Accédez au fichier contenant la vulnérabilité de sécurité identifiée pendant l’analyse de l’agent Ask et préparez votre plan de correction à référencer.

Étape 2 : Configurer des mesures de sécurité

Créez des tests de référence avant d’apporter des modifications à votre code. Une fois les mises à jour du code terminées, utilisez des tests de base pour vérifier que les fonctionnalités restent intactes.

Avant d’apporter des modifications, créez des tests pour vérifier le comportement actuel.

Exemple d’invite : « Créer des tests unitaires complets pour la SearchProducts fonction afin de vérifier le comportement actuel avant d’implémenter des correctifs de sécurité ».

L’agent crée des tests qui capturent le comportement actuel, fournissant une base de référence pour la validation.

Tip

VS Code crée automatiquement des points de contrôle aux points clés pendant les sessions de l’agent. Si un correctif de sécurité introduit des problèmes inattendus, utilisez des points de contrôle pour revenir à un état correct connu sans perdre d’autres tâches. Cela complète votre stratégie de branche de fonctionnalité avec une option d’annulation fine.

Étape 3 : Commencer par les correctifs de sécurité critiques

La résolution des vulnérabilités les plus risquées garantit d’abord que les problèmes les plus dangereux sont résolus rapidement.

Commencez par les vulnérabilités les plus prioritaires.

Exemple d’invite : « Refactoriser la SearchProducts méthode pour utiliser des requêtes paramétrables au lieu de concaténation de chaîne. Vérifiez que tous les vecteurs d’injection SQL sont éliminés. »

L’agent analyse le code, remplace la concaténation de chaîne vulnérable par des requêtes paramétrables et ajoute la validation d’entrée pour éliminer la vulnérabilité d’injection SQL.

Étape 4 : Implémenter un chiffrement sécurisé

La mise à niveau du chiffrement faible protège les données sensibles, telles que les mots de passe, d’être compromis même si le stockage est enfreint.

Poursuivez avec les améliorations de chiffrement.

Exemple d’invite : « Remplace le hachage de mot de passe MD5 dans la méthode HashPassword par une implémentation bcrypt, y compris la génération de saler appropriée. »

L’agent met à niveau des algorithmes de hachage faibles pour sécuriser des alternatives telles que bcrypt, ajoute la validation de mot de passe et crée une méthode de vérification.

Étape 5 : Nettoyer la journalisation et la gestion des erreurs

La suppression des informations sensibles des journaux empêche l’exposition des données tout en conservant les fonctionnalités de diagnostic nécessaires au débogage.

Résolvez les problèmes de divulgation d’informations.

Exemple d’invite : « Supprime les informations sensibles des instructions de journalisation dans le module d’authentification tout en conservant la valeur de diagnostic ».

L’agent supprime les données sensibles des journaux et remplace les messages d’erreur détaillés par des alternatives conviviales tout en préservant les informations de diagnostic dans les journaux sécurisés.

Étape 6 : Ajouter la validation du chemin d’accès

La validation des chemins d’accès aux fichiers empêche les attaquants d’accéder aux fichiers en dehors de l’étendue du répertoire prévu.

Implémentez la sécurité du chemin d’accès aux fichiers.

Exemple d’invite : « Ajoutez une validation exhaustive du chemin d’accès à la méthode SaveFile pour empêcher les attaques de traversée de répertoire ».

L’agent implémente la validation de chemin à l’aide Path.GetFileName()de , vérifie que les chemins restent dans les répertoires prévus et ajoute des vérifications pour les caractères non valides.

Étape 7 : Valider les modifications

Le test après chaque correctif majeur garantit que la vulnérabilité est résolue et qu’aucun nouveau problème n’a été introduit.

Après chaque correctif de sécurité majeur, validez les modifications.

Exemple d’invite : « Exécutez tous les tests unitaires et créez des tests spécifiques à la sécurité pour vérifier que la vulnérabilité d’injection SQL est entièrement corrigée ».

L’agent exécute des tests existants et crée d’autres tests de sécurité qui tentent d’attaquer l’injection SQL pour vérifier que la vulnérabilité est résolue.

Étape 8 : Passer en revue et itérer

Résoudre les échecs de test et affiner les implémentations garantit que toutes les exigences sont remplies avant de prendre en compte la correction terminée.

Si des problèmes sont détectés, fournissez des instructions spécifiques pour les affinements.

Exemple d’invite : « Le test de validation de la longueur du mot de passe échoue. Mettez à jour la validation pour autoriser les mots de passe compris entre 8 et 128 caractères. »

L’agent analyse les tests défaillants et apporte des corrections nécessaires pour garantir que toutes les exigences sont remplies.

Cette approche structurée garantit que la correction est effectuée en toute sécurité et systématiquement, avec la validation à chaque étape.

Considérations relatives à la sécurité et à la qualité

Lorsque vous utilisez l’Agent pour la correction de la sécurité, tenez toujours compte des implications de sécurité et de qualité :

Bonnes pratiques de sécurité

Le suivi de ces pratiques de sécurité garantit que vos correctifs sont complets et n’introduisent pas de nouvelles vulnérabilités.

Tenez compte des pratiques de sécurité suivantes lors de la correction des vulnérabilités :

  • Valider soigneusement : vérifiez que toutes les validations d’entrée sont complètes et gèrent les cas de périphérie.
  • Conserver l’autorisation : vérifiez que les correctifs de sécurité ne contournent pas les vérifications d’authentification ou d’autorisation.
  • Maintenir la défense en profondeur : assurez-vous que plusieurs couches de sécurité restent intactes.
  • Passer en revue les dépendances : vérifiez que les correctifs de sécurité n’introduisent pas de dépendances vulnérables.
  • Test étendu : incluez à la fois des cas de test de sécurité positifs et négatifs.

Normes de qualité du code

Le maintien de la qualité du code en même temps que les améliorations de sécurité garantit que votre codebase reste maintenable et professionnel.

Conservez une qualité de code élevée en suivant les instructions suivantes :

  • Conventions suivantes : assurez-vous que le code fixe suit les conventions de codage C# de Microsoft.
  • Gérez la lisibilité : vérifiez que les correctifs de sécurité ne compromissent pas la clarté du code.
  • Modifications du document : ajoutez des commentaires expliquant le code critique de sécurité.
  • Documentation de mise à jour : vérifiez que README, les stratégies de sécurité et les documents d’API reflètent les modifications.
  • Tenez compte des performances : vérifiez que les améliorations de sécurité ne dégradent pas considérablement les performances.

Recommandations en matière de sécurité en mode agent

L’agent est puissant, mais nécessite une surveillance minutieuse.

Avant la remédiation

Prendre ces précautions avant de commencer la correction réduit le risque de perdre du travail ou d’introduire des changements cassants.

  • Travaillez toujours dans une branche de fonctionnalité.
  • Vérifiez que la couverture complète des tests existe.
  • Consultez le plan de remédiation issu de l’analyse de l’agent Ask.
  • Définissez le niveau d’autorisation sur Approbations par défaut afin de passer en revue chaque appel d’outil.
  • Comprendre la vulnérabilité de sécurité et ses effets potentiels.
  • Sauvegardez toutes les données ou configurations critiques.

Pendant la remédiation

Le suivi de ces pratiques lors de la correction vous permet de détecter et de résoudre les problèmes au fur et à mesure qu’ils surviennent plutôt que de les découvrir ultérieurement.

  • Apportez des modifications incrémentielles plutôt que des transformations volumineuses.
  • Validez chaque étape avant de passer à la suivante.
  • Passez en revue le code généré pour la correction et la sécurité.
  • Testez fréquemment pour détecter les problèmes tôt.
  • Surveillez les effets secondaires inattendus.
  • Utilisez les points de contrôle de Visual Studio Code pour revenir à un état connu comme fonctionnel si nécessaire.

Après la correction

Ces étapes postérieures à la correction vérifient que vos correctifs sont terminés, corrects et prêts pour le déploiement.

  • Exécutez des tests complets, notamment des tests de sécurité.
  • Effectuez une révision du code avec les membres de l’équipe.
  • Valider les caractéristiques de sécurité à l’aide d’outils de sécurité.
  • Mettez à jour le problème GitHub avec les détails du correctif.
  • Documentez les leçons apprises pour une référence future.

Traitez le mode Agent comme un puissant assistant

Bien que l’agent puisse effectuer des tâches de correction complexes, il nécessite une surveillance humaine :

  • Passez en revue toutes les modifications avant de les accepter.
  • Vérifiez que les vulnérabilités de sécurité sont entièrement traitées.
  • Vérifiez qu’aucune nouvelle vulnérabilité n’est introduite.
  • Testez soigneusement pour détecter les problèmes subtils.
  • Vérifiez la conformité avec les stratégies de sécurité.

L’agent accélère la correction de la sécurité, mais ne remplace pas la nécessité d’un examen et d’un test minutieux.

Intégration au flux de travail Git

Incorporez les modifications de l'agent dans votre flux de travail Git en toute transparence à l'aide des outils intégrés de Visual Studio Code.

Valider les modifications à l’aide de la vue de contrôle de code source

La vue de contrôle de code source intégrée de Visual Studio Code simplifie le processus de validation et d’envoi de correctifs de sécurité à votre référentiel.

La vue contrôle de code source de Visual Studio Code offre un moyen intégré d’examiner et de valider vos correctifs de sécurité :

  1. Ouvrez la vue Contrôle de code source en sélectionnant l’icône Contrôle de code source dans la barre d’activité ou en appuyant sur Ctrl+Maj+G.

  2. Passez en revue les modifications répertoriées sous « Modifications » pour vérifier que tous les correctifs de sécurité sont inclus.

  3. Mettez en scène des fichiers en pointant dessus et en sélectionnant l’icône + ou en mettant en scène toutes les modifications à l’aide de l’icône + en regard de « Modifications ».

  4. Entrez un message de validation descriptif dans la zone de message qui fait référence au problème GitHub :

    Fix SQL injection vulnerability in SearchProducts
    
    - Replace string concatenation with parameterized queries
    - Add input validation for search terms
    - Implement security tests for injection attempts
    
    Fixes #42
    

    Note

    Pour lier vos validations aux problèmes GitHub, incluez le numéro de problème dans votre message de validation en utilisant la syntaxe Fixes #issue-number. Cette syntaxe ferme automatiquement le problème lorsque le commit est fusionné.

  5. Sélectionnez le bouton Valider pour valider vos modifications.

  6. Sélectionnez le bouton Synchroniser les modifications pour pousser votre branche vers le référentiel distant.

Vous pouvez également utiliser des commandes Git dans le terminal intégré :

# Stage all changes
git add .

# Commit with a descriptive message referencing the GitHub issue
git commit -m "Fix SQL injection vulnerability in SearchProducts

- Replace string concatenation with parameterized queries
- Add input validation for search terms
- Implement security tests for injection attempts

Fixes #42"

# Push changes to the remote repository
git push origin your-branch-name

Résumé

L’utilisation du mode Agent de GitHub Copilot permet aux développeurs de corriger efficacement les problèmes de sécurité tout en conservant la qualité et les fonctionnalités du code. En combinant les insights analytiques de l’agent Ask avec les fonctionnalités d’exécution de l’agent, vous pouvez résoudre systématiquement les vulnérabilités dans votre codebase. Choisissez le type d’agent approprié pour votre situation : utilisez l’agent local pour la correction interactive, pas à pas ou l’agent cloud pour affecter des problèmes bien définis pour la résolution autonome. La clé du succès consiste à fournir des instructions claires, à définir les niveaux d’autorisation appropriés, à maintenir les pratiques de sécurité, à valider soigneusement toutes les modifications et à garantir une documentation appropriée. L’agent est un assistant puissant qui accélère la correction, mais la surveillance humaine reste essentielle pour garantir que les correctifs de sécurité sont complets, corrects et n’introduisent pas de nouvelles vulnérabilités.