Correggere le vulnerabilità del codice e gestire le differenze

CodeMender può generare, 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 una patch candidata 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 la codebase eseguendo build.command configurato per assicurarti che il progetto venga creato e che i test delle unità vengano superati.
  4. Esegue di nuovo l'exploit PoC verificato per confermare che la vulnerabilità non è più sfruttabile.

Per impostazione predefinita, CodeMender ti chiede di confermare ogni modifica del file prima di scriverla su disco nel tuo workspace. Una volta superati tutti i controlli, CodeMender applica la patch verificata al tuo workspace. A questo punto, puoi eseguire lo staging delle modifiche.

Flag di correzione

  • Fornisci il contesto della correzione (-c / --context): fornisci vincoli architetturali o linee guida di codifica:
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • Approvazione automatica delle scritture (-y / --yes): approva automaticamente tutte le scritture di file e i prompt durante il processo di correzione:
    cm fix FINDING_ID -y
    Nota: puoi anche disattivare i prompt di scrittura interattivi a livello globale impostando confirm_writes: false in config.yaml.
  • Controlla la sandbox (--sandbox): attiva o disattiva esplicitamente la sandbox per questa esecuzione (ad esempio, --sandbox=false per disattivarla):
    cm fix FINDING_ID --sandbox=false
  • Ignora la sandbox (--unrestricted): ignora temporaneamente tutte le protezioni della sandbox per questa esecuzione, disattivando i limiti del file system e l'isolamento dei container a livello di sistema operativo:
    cm fix FINDING_ID --unrestricted
  • Ignora la cache (--no-cache): forza CodeMender a generare una nuova patch:
    cm fix FINDING_ID --no-cache

Esamina e gestisci le differenze VCS locali

CodeMender include comandi VCS integrati per aiutarti a esaminare, eseguire lo staging e gestire le modifiche del 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

  • Esamina le differenze: esamina le differenze unificate riga per riga di tutte le modifiche del codice di cui non è stato eseguito il commit generate dall'agente.

    cm vcs diff

  • Esegui lo staging delle modifiche: aggiungi le modifiche della patch verificata all'ambiente di staging locale in modo da poterle testare ed eseguirne il commit.

    cm vcs stage

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

    cm vcs reset