
Confronto offline di snapshot CISA KEV per la revisione delle modifiche a livello di campo. Prototipo gratuito, non una valutazione di sicurezza. Sviluppo assistito da AI.
Un prototipo offline di revisione delle modifiche per team IT che confronta due snapshot JSON delle CISA Known Exploited Vulnerabilities (KEV). Riporta record aggiunti, rimossi e modificati, inclusi i valori esatti prima/dopo per ogni campo modificato. È un'utilità di revisione dei dati, non una valutazione di sicurezza.
Prototipo gratuito. Nessun cliente, servizio a pagamento o validazione della domanda dichiarati. Sviluppato con assistenza AI. Non affiliato a CISA né approvato da CISA.
Esegui l'esempio sintetico qui sotto, oppure confronta due snapshot salvati del catalogo pubblico. Condividi feedback sul flusso di lavoro: quale attività di revisione stavi cercando di completare e questo ha eliminato un passaggio manuale? Il feedback è pubblico ed espone la tua identità GitHub. Non includere inventari di asset privati, nomi di clienti, credenziali o dettagli di incidenti. Pubblicato per il progetto Apex; prototipo assistito da AI e raccolta di feedback. Nessun pilot a pagamento o promessa sui tempi di risposta.
Limite di input: i numeri JSON in forma decimale ed esponenziale vengono rifiutati, anche nei campi di estensione. I numeri interi vengono conservati esattamente. Non è garantito che gli schemi futuri funzionino. Non modificare i valori di origine per aggirare questo limite.
Python 3.10 o versione successiva. Solo libreria standard. Nessun account o installazione necessari.
python3 kev_diff.py examples/before.json examples/after.json > review.json
python3 kev_diff.py examples/before.json examples/after.json --vendor 'Example Vendor' > vendor-review.json
python3 kev_diff.py examples/before.json examples/after.json --format markdown > review.md
python3 -m unittest discover -s tests -v
Il catalogo di esempio è sintetico, non un feed di vulnerabilità corrente. Mostra un'aggiunta, un record modificato e una rimozione. Il record modificato cambia una data di scadenza e un campo di estensione sconosciuto. Nulla viene eseguito in background.
Per dati reali, scarica e conserva tu stesso snapshot JSON successivi dal catalogo CISA o dal suo mirror ufficiale. Verifica la provenienza e le date di download. Passa prima lo snapshot precedente. Questo strumento non recupera le fonti, non stabilisce l'autenticità, non indica se un catalogo è completo, né dichiara di essere aggiornato. I valori SHA-256 dei file supportano la riproducibilità, non l'autenticazione.
Esegui python3 -B scripts/verify_release.py da un checkout. Esegue i test sintetici inclusi, confronta gli esempi JSON e Markdown con gli output attesi inclusi e verifica che un input non valido con chiavi duplicate non produca alcun report. Fallisce se non viene scoperto alcun test. Exit 0 significa che questi controlli di accettazione sono stati superati; exit 1 significa fallimento. Stampa un riepilogo JSON e gli hash dei file core/example e di supporto elencati, senza recuperare dati. I file temporanei di input non valido vengono creati e rimossi nella directory temporanea del sistema operativo; il runner e i test inclusi non modificano intenzionalmente il checkout; -B impedisce le normali scritture di bytecode.
Questo esegue codice Python dal checkout, inclusi i suoi test. Ispeziona e fidati di quel codice prima di eseguirlo. Il superamento dei controlli e gli hash dei file non costituiscono un audit di sicurezza, una firma software, una prova di autenticità della fonte, una valutazione dell'esposizione o una prova di clienti. Non reindirizzare il suo output su file sorgente o di esempio.
JSON è il formato predefinito. --format markdown produce una revisione leggibile dall'uomo con conteggi, provenienza dello snapshot, limiti, modifiche ai metadati e ogni record completo before/after per le modifiche corrispondenti. Non aggiunge analisi né modifica il confronto. I valori di origine restano nei blocchi di codice JSON; un fence di dimensione dinamica impedisce ai backtick incorporati di fuoriuscire da quei blocchi nei normali renderer Markdown, non in tutti i visualizzatori. Apri il Markdown in un visualizzatore di cui ti fidi. Rivedi i report prima di condividerli: sono inclusi i record completi before/after per le modifiche corrispondenti, le modifiche ai metadati e i filtri vendor. Mantieni markdown_report.py insieme a kev_diff.py per questo formato opzionale.
added: CVE ID presente solo nel file after fornito.removed: CVE ID presente solo nel file before. Non è prova di remediation o sicurezza. Un file after parziale può causare molte rimozioni apparenti.changed: almeno un campo del record differisce. I valori before e after, i flag di presenza dei campi e i record completi vengono conservati.--vendor è una corrispondenza esatta, case-insensitive, su vendorProject, rispetto a uno dei due snapshot. Non è fuzzy matching né rilevamento di prodotti installati. Ometterlo confronta l'intero catalogo fornito.Non reindirizzare mai l'output su uno dei due file di input. Ad esempio, > before.json tronca quella fonte prima che Python possa leggerla. Usa un nuovo nome di file di output.
Exit 0 significa che è stato prodotto un confronto valido, incluso un risultato senza modifiche. Exit 2 significa input non valido o errore di file; nessun report viene emesso dal programma. Se usi la redirezione della shell, la tua shell potrebbe creare un file di output vuoto anche in caso di errore, quindi controlla il codice di uscita prima di sostituire un report precedente.
Tutta l'elaborazione dei file è locale. Nessuna richiesta di rete, telemetria, account di archiviazione, avvisi automatici, scansione, sfruttamento, correzione o integrazione con store. I file salvati rimangono sul dispositivo. I report contengono i record forniti e i filtri del fornitore; esaminarli prima di condividerli. La dimensione massima di input è 20 MB per file. UTF-8 non valido, chiavi/ID JSON duplicati, date non valide, conteggi non corrispondenti e timestamp di rilascio invertiti vengono rifiutati. I campi sconosciuti vengono preservati, non validati rispetto allo schema. I numeri JSON in forma decimale ed esponenziale in qualsiasi punto di uno snapshot vengono esplicitamente rifiutati, inclusi i campi di estensione, per evitare l'arrotondamento silenzioso dei valori. I numeri JSON interi vengono conservati esattamente. Non modificare i valori di origine per aggirare questo limite. Ciò scambia la compatibilità futura con l'esattezza: un futuro feed ufficiale con valori decimali/esponenziali verrà rifiutato finché non sarà aggiunto il supporto. I campi obbligatori seguono lo schema ufficiale corrente, ma questa non è un'implementazione completa di JSON Schema.