Passa al contenuto principale
Versione: v0.20

API report e rilevamenti

Scanner::run() restituisce un report stdClass dopo una scansione completata. Scanner::getReport() restituisce la stessa struttura del report corrente. In caso di errore di scansione intercettato, run() restituisce false; esamina getLastError() sull'istanza dello scanner.

Contratto del report di primo livello

ProprietàTipoSignificato
scannedintNumero di file scansionati.
detectedintNumero di corrispondenze malware rilevate.
verifiedByChecksumintNumero di file accettati dalla verifica del checksum.
removed, ignored, edited, quarantine, whitelistarrayPercorsi o record interessati dall'azione corrispondente.
infectedFoundarrayPercorsi dei file infetti trovati durante la scansione.
fileHashesarrayMetadati degli hash dei file raccolti durante la scansione.
findingsarrayRecord canonici dei rilevamenti provenienti da analisi di file, integrità, archivi e supplementari.
coveragearrayCompletezza, conteggi e motivi di salto.
diagnosticsarray, se presenteErrori non fatali nell'analisi o nell'aggiornamento delle definizioni.
signature_indexesarrayMetadati degli indici di reputazione integrati e opzionali.
inventoryarray, se presenteInventario dei componenti della piattaforma rilevati.

Nuovi campi del report possono essere aggiunti in una release minore. I consumer devono leggere i campi necessari, tollerare quelli sconosciuti e usare isset() per le proprietà opzionali.

Gestire successo e fallimento

$report = $scanner->run();

if ($report === false) {
throw new RuntimeException($scanner->getLastError() ?: 'Scan failed.');
}

foreach ($report->findings as $finding) {
if ($finding['severity'] === 'danger') {
// Send the finding to your incident workflow.
}
}

Non trattare un conteggio detected diverso da zero come errore di esecuzione. I rilevamenti identificano condizioni del codice o di integrità che richiedono revisione. Non stabiliscono l'intento né autorizzano l'eliminazione.

Contratto del record di rilevamento

Ogni rilevamento canonico contiene questi campi:

CampoTipoSignificato
idstringIdentificatore SHA-256 stabile derivato da tipo, provider, ID della regola e soggetto normalizzato.
kindstringCategoria del rilevamento, ad esempio malware, integrity o un tipo di analisi supplementare.
subjectstringPercorso del file o soggetto scansionato.
rule_idstringIdentificatore stabile della regola o dell'indicatore di rilevamento.
severitystringGravità fornita dal rilevatore, comunemente warn o danger.
messagestringDettaglio del rilevamento leggibile dall'utente.
statusstringStato corrente del rilevamento. I nuovi rilevamenti iniziano come open.
evidencearrayContesto come line, match o content_hash, se disponibile.
providerstringOrigine del rilevatore, ad esempio builtin.
first_seen_at, last_seen_atstringTimestamp ISO 8601 dell'osservazione del rilevamento.

Mantieni rule_id, subject e l'hash del contenuto osservato quando deduplichi gli avvisi. Un numero di riga o uno snippet possono cambiare quando un file cambia.

La copertura fa parte del risultato

Il report include i conteggi di copertura per discovered, eligible, scanned, skipped, verified, cached ed errors. coverage.reasons separa i file saltati in base a path, extension, oversized, excluded, unreadable e archive_limit.

Usa questo controllo prima di accettare una scansione come completa:

$coverage = $report->coverage;

if (empty($coverage['complete']) || !empty($coverage['errors'])) {
throw new RuntimeException('Scan coverage is incomplete.');
}

Batch con offset e limite, file illeggibili, limiti di dimensione dei file e limiti degli archivi possono rendere incompleto il risultato. Un risultato completo senza rilevamenti ha maggior peso di un risultato parziale senza rilevamenti.

Diagnostica e dati esterni

diagnostics segnala errori non fatali. Per esempio, lo scanner può continuare con definizioni Maltrail in cache quando un aggiornamento non riesce. Rendi persistente la diagnostica insieme ai rilevamenti affinché un operatore possa distinguere un risultato pulito da un'analisi ridotta.

signature_indexes espone i conteggi dei record e gli hash di origine degli indici malware e legacy-core integrati. Quando è presente un archivio Maltrail attivo, espone anche i metadati dell'indice di domini e l'ora di aggiornamento. Usa questi valori per le tracce di audit, non in sostituzione delle prove del rilevamento.

Serializzare i report

Usa json_encode() con gestione degli errori quando memorizzi il report in memoria:

$json = json_encode($report, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);

if ($json === false) {
throw new RuntimeException('Could not serialize scan report: ' . json_last_error_msg());
}

Usa setReportFormat('json') o setReportFormat('sarif') quando lo scanner deve anche scrivere un file per strumenti esterni. Scegli una directory al di fuori del progetto scansionato per report, checkpoint, backup e file in quarantena.