CodeMender tiene traccia di 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 di CodeMender mantiene le sessioni di esecuzione con stato in locale, consentendoti di monitorare le attività attive, riprendere i flussi di lavoro interrotti ed esportare i report sulla sicurezza.
Elencare 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 messa in pausa a causa di un'interruzione della rete o di un errore di passaggio, riprendila dall'ultima fase del checkpoint:
cm session resume SESSION_ID
Annullare una sessione in esecuzione
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 del 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 Markdown in stile 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 in formato SARIF standard (v2.1.0) per l'integrazione con altri strumenti di sicurezza.
cm report --format sarif
Flag di filtro e ordinamento
- Visualizzare le patch di codice proposte (
--patches): includi i diff unificati completi delle correzioni generate nel report.bash cm report --patches - Filtrare per gravità (
--severity): visualizza i risultati che corrispondono a un livello (CRITICAL,HIGH,MEDIUM,LOW).bash cm report --severity HIGH - Filtrare per stato (
--status): visualizza i risultati che corrispondono a uno stato (OPEN,FIXED,DISMISSED,REOPENED).bash cm report --status OPEN - Filtrare per sessione (
--session): visualizza i risultati di un prefisso ID sessione specifico.cm report --session SESSION_ID_PREFIX
- Mostrare gli artefatti dell'agente (
--artifacts): includi i percorsi degli artefatti di esecuzione generati dall'agente (ad es. log, script di exploit).bash cm report --artifacts - Ordinare i risultati (
--sort): ordina i risultati perseverity(impostazione predefinita) otime.bash cm report --sort time - Filtrare per ID risultato: passa un ID risultato specifico (o un prefisso) come argomento posizionale per visualizzare i dettagli di un singolo risultato.
cm report FINDING_ID_PREFIX
Stati dei risultati relativi alle vulnerabilità
CodeMender tiene traccia dei risultati nei seguenti stati di vulnerabilità:
OPEN- Che cosa significa: la vulnerabilità è stata rilevata correttamente durante una scansione (o importata da uno strumento di terze parti), ma non è ancora stata verificata, applicata o contrassegnata come inattiva.
- Come viene gestita: 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 il diff alla codebase locale e ha compilato ed eseguito correttamente i test di verifica per dimostrare che l'exploit non ha più successo.
- Come viene gestita: una volta confermato che una patch risolve il problema senza interrompere la logica del codice esistente, CodeMender passa il risultato a
FIXED. Rimarrà in questo stato a meno che una scansione futura non rilevi una regressione.
DISMISSED- Che cosa significa: la vulnerabilità è designata come inattiva perché è stata identificata come un falso positivo o è già stata corretta oppure il risultato non ha una certezza sufficiente per essere confermato come sfruttabile (anche rispetto al modello di minaccia del progetto, se ne è stato fornito uno durante l'onboarding).
- Come viene gestita: se contrassegni un elemento come
DISMISSED, le future notifiche vengono disattivate e il risultato viene escluso dall'output della CLI attiva concm report --status OPEN. Se esegui di nuovocm verifysu un risultato ignorato, gli elementi ignorati vengono riesaminati o ripristinati.
REOPENED- Che cosa significa: una vulnerabilità precedentemente contrassegnata come
FIXEDoDISMISSEDè stata rilevata di nuovo in una scansione successiva della codebase. - Come viene gestita: questo stato indica una regressione (ad esempio un merge git errato che ripristina la patch) o una strategia di mitigazione non riuscita. Contrassegna il problema per una rivalutazione immediata e richiede agli sviluppatori di esaminare il processo di applicazione delle patch.
- Che cosa significa: 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à rappresenta un rischio immediato e grave per l'applicazione o l'infrastruttura sottostante, che potrebbe portare a una compromissione completa del sistema.
- Perché è classificata come critica: soddisfa le soglie di impatto ad alta conseguenza (ad esempio l'esecuzione di codice remoto o le scritture a livello di root), è raggiungibile direttamente da limiti non attendibili senza prerequisiti ed è supportata da un'analisi del flusso di contaminazione ad alta certezza o da una prova di concetto (PoC) convalidata eseguita nella 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 di database arbitrarie o hijacking amministrativo), la sfruttabilità è leggermente limitata. Potrebbe richiedere che un utente malintenzionato disponga dell'autenticazione utente standard, dipenda da una configurazione di sistema specifica o richieda una sequenza di azioni molto precisa.
MEDIUM- Che cosa significa: la vulnerabilità presenta un rischio moderato, in genere esponendo dati con restrizioni o consentendo interruzioni localizzate, ma il rischio per il sistema host è basso.
- Perché è classificata come media: 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 aggirare i livelli di difesa e l'area interessata finale è limitata.
LOW- Che cosa significa: il risultato rappresenta un rischio di sicurezza minore o una mancanza generale di igiene di difesa in profondità che non rappresenta di per sé una minaccia immediata.
- Perché è classificata come bassa: presenta una sfruttabilità estremamente bassa o un impatto minimo. Il risultato viene in genere utilizzato dagli utenti malintenzionati per la ricognizione o l'impronta digitale della configurazione anziché per la compromissione diretta e non può essere utilizzato per eseguire codice arbitrario o esfiltrare dati sensibili dell'applicazione.
Manutenzione dello spazio di lavoro
Per reimpostare i file di monitoraggio dello stato locale e liberare spazio nelle cache di esecuzione temporanee, esegui:
cm clean