Correggere le vulnerabilità del codice e gestire le differenze

CodeMender può produrre, convalidare e applicare automaticamente patch del codice sorgente per le vulnerabilità verificate, testandole nella sandbox locale per evitare regressioni.

Genera correzioni delle vulnerabilità

Utilizza cm fix per generare una patch di sicurezza convalidata per un risultato verificato:

cm fix FINDING_ID

Quando esegui cm fix, CodeMender esegue i seguenti passaggi di convalida:

  1. Genera un candidato per la patch utilizzando il motore di ragionamento ospitato nel cloud.
  2. Applica la patch a una copia del codice sorgente all'interno della sandbox locale.
  3. Compila e testa il codebase eseguendo il build.command configurato per garantire che il progetto venga creato e che i test delle unità vengano superati.
  4. Esegue nuovamente l'exploit PoC verificato per confermare che la vulnerabilità non è più sfruttabile.

Per impostazione predefinita, CodeMender ti chiede di confermare ogni modifica ai file prima di scriverla sul disco nel tuo workspace. Una volta superati tutti i controlli, CodeMender applica la patch verificata al tuo workspace. Puoi quindi preparare le modifiche.

Correggi i flag

  • Fornisci il contesto della correzione (-c/--context): fornisci vincoli di architettura o linee guida di programmazione:
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • Prompt di approvazione automatica (-y/--yes): approva automaticamente tutte le scritture di file e i prompt di conferma dei comandi durante il processo di correzione:
    cm fix FINDING_ID -y
    Nota: puoi anche disattivare i prompt di conferma interattivi nel tuo config.yaml impostando tools.confirm_writes: false e tools.confirm_commands: false.
  • Controlla il sandboxing (--sandbox): attiva o disattiva esplicitamente la sandbox a livello di sistema operativo per questa esecuzione (ad esempio, --sandbox=false per disattivarla):
    cm fix FINDING_ID --sandbox=false
  • Ignora i limiti dei percorsi (--allow-all-paths): disattiva il controllo dei limiti dei percorsi dell'area di lavoro per questa esecuzione, in modo che gli strumenti dell'agente possano accedere ai percorsi esterni alla directory principale del progetto e alla project_paths configurata (combina con --sandbox=false per accedere ai percorsi dell'host non montati all'interno della sandbox):
    cm fix FINDING_ID --allow-all-paths
  • Bypass command policy (--allow-all-commands): disattiva l'applicazione della lista bloccata command_policy.yaml per questa esecuzione:
    cm fix FINDING_ID --allow-all-commands
  • Bypassa la cache (--no-cache): forza CodeMender a generare una nuova patch:
    cm fix FINDING_ID --no-cache

Ispeziona e gestisci i diff VCS locali

CodeMender include comandi VCS integrati per aiutarti a ispezionare, preparare e gestire le modifiche al codice introdotte dalle patch prima di eseguirne il commit:

  • Visualizza lo stato del repository: controlla quali file sono stati modificati o creati da CodeMender nel tuo workspace locale.

    cm vcs status

  • Ispeziona le differenze: esamina le differenze unificate riga per riga di tutte le modifiche al codice non sottoposte a commit generate dall'agente.

    cm vcs diff

  • Prepara le modifiche: aggiungi le modifiche verificate della patch all'ambiente di gestione temporanea locale per testarle ed eseguirne il commit.

    cm vcs stage

  • Ripristina le modifiche della sessione: ignora tutte le modifiche ai file locali generate da CodeMender durante la sessione corrente e ripristina lo stato di base del repository.

    cm vcs reset