Gestire le sessioni ed esportare i report

CodeMender monitora ogni tentativo di scansione, verifica e correzione come sessione con stato supportata da un database SQLite locale (state.db). Puoi esaminare le sessioni attive, riprendere le attività in pausa ed esportare report dettagliati sui risultati.

Gestione sessione

La CLI CodeMender gestisce le sessioni di esecuzione stateful in locale, consentendoti di monitorare le attività attive, riprendere i workflow interrotti ed esportare i report sulla sicurezza.

Elenca le sessioni attive e passate

Esegui il comando seguente per elencare tutte le sessioni, i relativi stati (RUNNING, WAITING_FOR_TOOL, COMPLETED, FAILED, CANCELLED) e i percorsi di destinazione:

cm session list

Riprendere una sessione interrotta

Se una sessione viene sospesa a causa di un'interruzione di rete o di un errore del passaggio, riprendila dall'ultima fase del checkpoint:

cm session resume SESSION_ID

Annullare una sessione di corsa

Per terminare una sessione attiva e interrompere l'esecuzione del calcolo dell'agente di backend:

cm session cancel SESSION_ID

Visualizzare i report ed esportare le patch

Visualizza i risultati della sessione, gli stati di verifica e i dettagli delle patch utilizzando cm report.

Formati di output

Tabella Terminale (predefinita)

Elenco riepilogativo dei risultati.

cm report

Report HTML

Genera un report HTML formattato. Utilizza --open (o -o) per avviarlo automaticamente nel browser predefinito.

cm report --format html --open

Markdown

Genera un report in Markdown con sintassi GitHub.

cm report --format md

JSON

Esporta tutti i dettagli dei risultati della sessione come JSON non elaborato.

cm report --format json

SARIF

Esporta i risultati nel formato SARIF standard (v2.1.0) per l'integrazione con altri strumenti di sicurezza.

cm report --format sarif

Flag di filtro e ordinamento

  • Mostra patch di codice proposte (--patches): includi le differenze unificate complete delle correzioni generate nel report. bash cm report --patches
  • Filtra per gravità (--severity): visualizza i risultati corrispondenti a un livello (CRITICAL, HIGH, MEDIUM, LOW). bash cm report --severity HIGH
  • Filtra per stato (--status): visualizza i risultati corrispondenti a uno stato (OPEN, FIXED, DISMISSED, REOPENED). bash cm report --status OPEN
  • Filtra per sessione (--session): visualizza i risultati di un prefisso ID sessione specifico.
    cm report --session SESSION_ID_PREFIX
  • Mostra artefatti dell'agente (--artifacts): includi i percorsi agli artefatti di esecuzione generati dall'agente (come log e script di exploit). bash cm report --artifacts
  • Ordina risultati (--sort): ordina i risultati per severity (impostazione predefinita) o time. bash cm report --sort time
  • Filtra per ID risultato: passa un ID risultato (o prefisso) specifico come argomento posizionale per visualizzare i dettagli di un singolo risultato.
    cm report FINDING_ID_PREFIX

Stati dei risultati di vulnerabilità

CodeMender monitora i risultati nei seguenti stati di vulnerabilità:

  • OPEN
    • Significato:la vulnerabilità è stata rilevata correttamente durante una scansione (o importata da uno strumento di terze parti), ma non è ancora stata verificata, corretta o contrassegnata come inattiva.
    • Come viene gestito: questo è lo stato iniziale di qualsiasi difetto di sicurezza appena scoperto. Le vulnerabilità nello stato OPEN vengono messe in coda attivamente per la verifica (cm verify) o l'applicazione di patch (cm fix).
  • FIXED
    • Che cosa significa: CodeMender ha generato una patch per la vulnerabilità, ha applicato la differenza alla tua base di codice locale e ha compilato ed eseguito correttamente i test di verifica per dimostrare che l'exploit non ha più esito positivo.
    • Come viene gestito: una volta confermato che una patch risolve il problema senza interrompere la logica del codice esistente, CodeMender sposta il risultato su FIXED. Rimarrà in questo stato a meno che una scansione futura non rilevi una regressione.
  • DISMISSED
    • Significato:la vulnerabilità è designata come inattiva perché è stata identificata come falso positivo o è già stata corretta oppure perché il risultato non ha una confidenza sufficiente per essere confermato come sfruttabile (anche in base al modello di minaccia del tuo progetto, se ne è stato fornito uno durante l'onboarding).
    • Come viene gestito:se contrassegni un elemento come DISMISSED, gli avvisi futuri vengono disattivati e il risultato viene escluso dall'output attivo della CLI con cm report --status OPEN. Se esegui di nuovo cm verify su un risultato ignorato, gli elementi ignorati vengono riesaminati o ripristinati.
  • REOPENED
    • Significato:una vulnerabilità precedentemente contrassegnata come FIXED o DISMISSED è stata rilevata nuovamente in una scansione successiva del codebase.
    • Come viene gestito: questo stato indica una regressione (ad esempio un merge git errato che ripristina la patch) o una strategia di mitigazione non riuscita. Segnala il problema per una nuova valutazione immediata e richiede agli sviluppatori di rivedere la procedura di applicazione delle patch.

Livelli di gravità delle vulnerabilità

CodeMender classifica i risultati nei seguenti livelli di gravità:

  • CRITICAL
    • Che cosa significa:la vulnerabilità comporta un rischio immediato e grave per la tua applicazione o l'infrastruttura sottostante, con la possibilità di compromettere completamente il sistema.
    • Perché è classificato come Critico:soddisfa le soglie di impatto ad alta conseguenza (come l'esecuzione di codice remoto o le scritture a livello di root), è raggiungibile direttamente da confini non attendibili senza prerequisiti ed è supportato da un'analisi del flusso di contaminazione ad alta confidenza o da una Proof of Concept (PoC) convalidata eseguita all'interno della sandbox di CodeMender.
  • HIGH
    • Che cosa significa:la vulnerabilità rappresenta un grave difetto di sicurezza che potrebbe portare al controllo non autorizzato del sistema, all'escalation dei privilegi o a una significativa esposizione dei dati, ma richiede condizioni specifiche per l'esecuzione.
    • Perché è classificata come elevata:sebbene l'impatto dello sfruttamento sia elevato (ad esempio, letture arbitrarie del database o compromissione amministrativa), la possibilità di sfruttamento è leggermente limitata. Potrebbe richiedere a un malintenzionato di avere l'autenticazione utente standard, dipendere da una configurazione di sistema specifica o richiedere una catena di azioni molto precisa.
  • MEDIUM
    • Che cosa significa: la vulnerabilità presenta un rischio moderato, in genere espone dati con accesso limitato o consente interruzioni localizzate, ma è a basso rischio per il sistema host.
    • Perché è classificato come Medio:l'exploit è fortemente limitato dalla raggiungibilità o dalla complessità. In genere richiede l'interazione attiva dell'utente (ad esempio, fare clic su un link dannoso), privilegi elevati o condizioni complesse per bypassare i livelli difensivi e la sua area interessata finale è limitata.
  • LOW
    • Significato:il risultato rappresenta un rischio per la sicurezza minore o una mancanza generale di igiene della difesa in profondità che non presenta una minaccia immediata di per sé.
    • Perché è classificato come Basso:presenta un'estrema bassa sfruttabilità o un impatto minimo. Il risultato viene in genere utilizzato dagli autori di attacchi per la ricognizione o l'impronta della configurazione anziché per la compromissione diretta e non può essere utilizzato per eseguire codice arbitrario o esfiltrare dati sensibili dell'applicazione.

Manutenzione di Workspace

Per reimpostare i file di monitoraggio dello stato locale e liberare spazio nelle cache di esecuzione temporanee, esegui:

cm clean