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 reportReport 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 perseverity(impostazione predefinita) otime.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
OPENvengono 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 concm report --status OPEN. Se esegui di nuovocm verifysu un risultato ignorato, gli elementi ignorati vengono riesaminati o ripristinati.
REOPENED- Significato:una vulnerabilità precedentemente contrassegnata come
FIXEDoDISMISSEDè 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.
- Significato:una vulnerabilità precedentemente contrassegnata come
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