
Comparaison hors ligne d'instantanés CISA KEV pour l'examen des modifications au niveau des champs. Prototype gratuit, pas une évaluation de sécurité. Développement assisté par IA.
Un prototype hors ligne de revue des changements pour les équipes IT comparant deux instantanés JSON des vulnérabilités exploitées connues (KEV) de la CISA. Il signale les enregistrements ajoutés, supprimés et modifiés, y compris les valeurs exactes avant/après pour chaque champ modifié. C'est un utilitaire de revue de données, pas une évaluation de sécurité.
Prototype gratuit. Aucun client, service payant ou validation de la demande revendiqué. Développé avec l'assistance de l'IA. Non affilié à la CISA ni approuvé par celle-ci.
Exécutez l'exemple synthétique ci-dessous, ou comparez deux instantanés enregistrés du catalogue public. Partagez vos retours sur le flux de travail : quelle tâche de revue tentiez-vous de terminer, et cela a-t-il supprimé une étape manuelle ? Les retours sont publics et exposent votre identité GitHub. N'incluez pas d'inventaires d'actifs privés, de noms de clients, d'identifiants ou de détails d'incident. Publié pour le projet Apex ; prototype assisté par IA et collecte de retours. Aucun pilote payant ni promesse de délai de réponse.
Limite d'entrée : les nombres JSON au format décimal et exponentiel sont rejetés, y compris dans les champs d'extension. Les nombres entiers sont conservés exactement. Les schémas futurs ne sont pas garantis de fonctionner. Ne modifiez pas les valeurs sources pour contourner cette limite.
Python 3.10 ou plus récent. Bibliothèque standard uniquement. Aucun compte ni installation nécessaire.
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
Le catalogue d'exemple est synthétique, et non un flux de vulnérabilités actuel. Il montre un ajout, un enregistrement modifié et une suppression. L'enregistrement modifié change une date d'échéance et un champ d'extension inconnu. Rien ne s'exécute en arrière-plan.
Pour des données réelles, téléchargez et conservez vous-même les instantanés JSON successifs depuis le catalogue CISA ou son miroir officiel. Vérifiez la provenance et les dates de téléchargement. Passez l'instantané le plus ancien en premier. Cet outil ne récupère pas les sources, n'établit pas l'authenticité, ne détermine pas si un catalogue est complet et ne prétend pas être à jour. Les valeurs SHA-256 des fichiers favorisent la reproductibilité, pas l'authentification.
Exécutez python3 -B scripts/verify_release.py depuis un checkout. Il exécute les tests synthétiques fournis, compare les exemples JSON et Markdown avec les sorties attendues fournies, et vérifie qu'une entrée invalide avec clés dupliquées n'émet aucun rapport. Il échoue si aucun test n'est découvert. Un code de sortie 0 signifie que ces vérifications d'acceptation ont réussi ; un code de sortie 1 signifie un échec. Il affiche un résumé JSON et les hachages des fichiers principaux/exemples et de support listés, sans récupérer de données. Les fichiers temporaires d'entrée invalide sont créés et supprimés dans le répertoire temporaire du système d'exploitation ; le lanceur et les tests fournis ne modifient pas intentionnellement le checkout ; -B empêche les écritures normales de bytecode.
Cela exécute du code Python depuis le checkout, y compris ses tests. Inspectez et faites confiance à ce code avant de l'exécuter. La réussite des vérifications et les hachages de fichiers ne constituent pas un audit de sécurité, une signature logicielle, une preuve d'authenticité de la source, une évaluation de l'exposition ou une preuve de clients. Ne redirigez pas sa sortie vers des fichiers source ou d'exemple.
Le JSON est le format par défaut. --format markdown produit une revue lisible par un humain avec les comptages, la provenance des instantanés, les limites, les changements de métadonnées et chaque enregistrement complet avant/après pour les changements correspondants. Il n'ajoute pas d'analyse et ne modifie pas la comparaison. Les valeurs sources restent dans des blocs de code JSON ; une clôture de taille dynamique empêche les backticks intégrés de s'échapper de ces blocs dans les moteurs de rendu Markdown ordinaires, mais pas dans tous les visualiseurs. Ouvrez le Markdown dans un visualiseur auquel vous faites confiance. Examinez les rapports avant de les partager : les enregistrements complets avant/après pour les changements correspondants, les changements de métadonnées et les filtres de fournisseur sont inclus. Conservez markdown_report.py aux côtés de kev_diff.py pour ce format optionnel.
added : identifiant CVE présent uniquement dans le fichier après fourni.removed : identifiant CVE présent uniquement dans le fichier avant. Ce n'est pas une preuve de remédiation ou de sécurité. Un fichier après partiel peut provoquer de nombreuses suppressions apparentes.changed : au moins un champ d'enregistrement diffère. Les valeurs avant et après, les indicateurs de présence des champs et les enregistrements complets sont conservés.--vendor est une correspondance exacte, insensible à la casse, sur vendorProject, contre l'un ou l'autre instantané. Ce n'est pas une correspondance approximative ni une détection de produit installé. L'omettre compare l'intégralité du catalogue fourni.Ne redirigez jamais la sortie vers l'un ou l'autre des fichiers d'entrée. Par exemple, > before.json tronque cette source avant que Python ne puisse la lire. Utilisez un nouveau nom de fichier de sortie.
Un code de sortie 0 signifie qu'une comparaison valide a été produite, y compris un résultat sans changement. Un code de sortie 2 signifie une entrée invalide ou une erreur de fichier ; aucun rapport n'est émis par le programme. Si vous utilisez la redirection du shell, votre shell peut créer un fichier de sortie vide même en cas d'erreur, donc vérifiez le code de sortie avant de remplacer un rapport précédent.