Corriger les failles de code et gérer les diffs

CodeMender peut générer, valider et appliquer automatiquement des correctifs de code source pour les failles vérifiées, en les testant dans votre bac à sable local pour éviter les régressions.

Générer des correctifs de failles

Utilisez cm fix pour générer un correctif de sécurité validé pour un résultat vérifié :

cm fix FINDING_ID

Lorsque vous exécutez cm fix, CodeMender effectue les étapes de validation suivantes :

  1. Génère un candidat de correctif à l'aide du moteur de raisonnement hébergé dans le cloud.
  2. Applique le correctif à une copie du code source dans votre bac à sable local.
  3. Compile et teste la base de code en exécutant la commande build.command configurée pour s'assurer que le projet est créé et que les tests unitaires sont réussis.
  4. Réexécute l'exploit PoC vérifié pour confirmer que la faille n'est plus exploitable.

Par défaut, CodeMender vous invite à confirmer chaque modification de fichier avant de l'écrire sur le disque de votre espace de travail. Une fois toutes les vérifications réussies, CodeMender applique le correctif vérifié à votre espace de travail. Vous pouvez ensuite mettre en scène les modifications.

Indicateurs de correction

  • Fournir un contexte de correction (-c / --context) : fournir des contraintes architecturales ou des consignes de codage :
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • Approuver automatiquement les écritures (-y / --yes) : approuver automatiquement toutes les écritures de fichiers et les invites pendant le processus de correction :
    cm fix FINDING_ID -y
    Remarque : Vous pouvez également désactiver les invites d'écriture interactives de manière globale en définissant confirm_writes: false dans votre config.yaml.
  • Contrôler le bac à sable (--sandbox) : activer ou désactiver explicitement le bac à sable pour cette exécution (par exemple, --sandbox=false pour le désactiver) :
    cm fix FINDING_ID --sandbox=false
  • Ignorer le bac à sable (--unrestricted) : ignorer temporairement toutes les protections du bac à sable pour cette exécution, en désactivant les limites du système de fichiers et l'isolation des conteneurs au niveau du système d'exploitation :
    cm fix FINDING_ID --unrestricted
  • Ignorer le cache (--no-cache) : forcer CodeMender à générer un nouveau correctif :
    cm fix FINDING_ID --no-cache

Inspecter et gérer les différences VCS locales

CodeMender inclut des commandes VCS intégrées pour vous aider à inspecter, à mettre en scène et à gérer les modifications de code introduites par les correctifs avant de les valider :

  • Afficher l'état du dépôt : vérifiez les fichiers que CodeMender a modifiés ou créés dans votre espace de travail local.

    cm vcs status

  • Inspecter les différences : examinez les différences unifiées ligne par ligne de toutes les modifications de code non validées générées par l'agent.

    cm vcs diff

  • Mettre en scène les modifications : ajoutez les modifications de correctif vérifiées à votre environnement de préproduction local afin de pouvoir les tester et les valider.

    cm vcs stage

  • Rétablir les modifications de la session : supprimez toutes les modifications de fichiers locaux générées par CodeMender au cours de la session actuelle et restaurez l'état de base de votre dépôt.

    cm vcs reset