Corriger les failles de code et gérer les diffs

CodeMender peut produire, 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 corrections 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 correctif candidat à 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 codebase en exécutant le build.command configuré pour s'assurer que le projet se compile et que les tests unitaires réussissent.
  4. Réexécute l'exploit de 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 validé à votre espace de travail. Vous pouvez ensuite préparer les modifications.

Corriger les flags

  • Fournir un contexte de correction (-c / --context) : fournissez 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 requêtes (-y / --yes) : approuvez automatiquement toutes les écritures de fichiers et les requêtes de confirmation de commande pendant le processus de correction :
    cm fix FINDING_ID -y
    Remarque : Vous pouvez également désactiver les invites de confirmation interactives dans votre config.yaml en définissant tools.confirm_writes: false et tools.confirm_commands: false.
  • Contrôler l'exécution en bac à sable (--sandbox) : activez ou désactivez explicitement le bac à sable au niveau de l'OS pour cette exécution (par exemple, --sandbox=false pour le désactiver) :
    cm fix FINDING_ID --sandbox=false
  • Ignorer les limites de chemin d'accès (--allow-all-paths) : désactivez la vérification des limites de chemin d'accès de l'espace de travail pour cette exécution afin que les outils de l'agent puissent accéder aux chemins d'accès en dehors de la racine du projet et de l'élément project_paths configuré (à combiner avec --sandbox=false pour accéder aux chemins d'accès de l'hôte qui ne sont pas installés dans le bac à sable) :
    cm fix FINDING_ID --allow-all-paths
  • Règle de contournement de commande (--allow-all-commands) : désactivez l'application de la liste de blocage command_policy.yaml pour cette exécution :
    cm fix FINDING_ID --allow-all-commands
  • Ignorer le cache (--no-cache) : force 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, préparer et gérer les modifications de code introduites par les correctifs avant de les valider :

  • Afficher l'état du dépôt : vérifiez quels fichiers 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

  • Préparer les modifications : ajoutez les modifications de correctif validées à votre environnement de préproduction local afin de pouvoir les tester et les valider.

    cm vcs stage

  • Annuler les modifications de la session : annulez toutes les modifications de fichiers locaux générées par CodeMender au cours de la session actuelle et restaurez l'état de référence de votre dépôt.

    cm vcs reset