
オフラインのCISA KEVスナップショット比較によるフィールド単位の変更レビュー。無料プロトタイプであり、セキュリティ評価ではありません。AI支援による開発。
ITチームが2つのCISA Known Exploited Vulnerabilities (KEV) JSONスナップショットを比較するためのオフライン変更レビュープロトタイプ。追加、削除、編集されたレコードを報告し、変更されたすべてのフィールドについて正確な変更前/変更後の値を含む。これはデータレビューユーティリティであり、セキュリティ評価ではない。
無料プロトタイプ。顧客、有償サービス、需要検証の主張は一切なし。AI支援により開発。CISAとは提携しておらず、CISAによる承認も受けていない。
以下の合成例を実行するか、保存された2つの公開カタログスナップショットを比較してください。ワークフローのフィードバックを共有: どのようなレビュータスクを完了しようとしていましたか、そしてこれにより手作業のステップが削減されましたか?フィードバックは公開され、あなたのGitHub IDが公開されます。私有の資産インベントリ、クライアント名、認証情報、インシデントの詳細を含めないでください。Apexプロジェクトのために投稿されたもの。AI支援によるプロトタイプとフィードバック収集。有償パイロットや応答時間の約束はありません。
入力制限: 10進数および指数形式のJSON数値は拒否されます。拡張フィールド内のものも含みます。整数値は正確に保持されます。将来のスキーマが動作する保証はありません。この制限を回避するためにソース値を変更しないでください。
Python 3.10以降。標準ライブラリのみ。アカウントやインストールは不要。
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
サンプルカタログは合成データであり、現在の脆弱性フィードではありません。1件の追加、1件の編集済みレコード、1件の削除を示しています。編集済みレコードは期限日と未知の拡張フィールドを変更しています。バックグラウンドで実行されるものはありません。
実際のデータについては、CISAカタログまたはその公式ミラーから、連続するJSONスナップショットを自身でダウンロードして保持してください。出所とダウンロード日を確認してください。先に古い方のスナップショットを渡してください。このツールはソースを取得したり、真正性を確立したり、カタログが完全かどうかを判断したり、最新であると主張したりするものではありません。ファイルのSHA-256値は再現性を支えるものであり、認証ではありません。
チェックアウトからpython3 -B scripts/verify_release.pyを実行します。同梱の合成テストを実行し、JSONおよびMarkdownのサンプルを同梱の期待出力と比較し、無効な重複キー入力がレポートを出力しないことを確認します。テストが1つも検出されない場合は失敗します。終了コード0はこれらの受け入れチェックに合格したことを意味し、終了コード1は失敗を意味します。データを取得することなく、JSONサマリーと、リストされたcore/exampleおよびサポートファイルのハッシュを出力します。一時的な無効入力ファイルはオペレーティングシステムの一時ディレクトリに作成および削除されます。同梱のランナー/テストはチェックアウトを意図的に編集しません。-Bは通常のバイトコード書き込みを防ぎます。
これはチェックアウト内のPythonコード(そのテストを含む)を実行します。実行する前にそのコードを検査し、信頼してください。チェックの合格とファイルハッシュは、セキュリティ監査、ソフトウェア署名、ソース真正性の証明、露出評価、顧客の証拠ではありません。その出力をソースファイルやサンプルファイルにリダイレクトしないでください。
JSONがデフォルトです。--format markdownは、件数、スナップショットの出所、制限、メタデータの変更、および一致する変更ごとの完全な変更前/変更後レコードを含む、人間が読めるレビューを生成します。分析を追加したり、比較を変更したりするものではありません。ソースの値はJSONコードブロック内に留まります。動的にサイズ調整されるフェンスは、埋め込まれたバッククォートが通常のMarkdownレンダラー(すべてのビューアではありません)でそれらのブロックから抜け出すのを防ぎます。信頼できるビューアでMarkdownを開いてください。共有する前にレポートを確認してください。一致する変更の完全な変更前/変更後レコード、メタデータの変更、ベンダーフィルターが含まれています。このオプション形式のためにmarkdown_report.pyをkev_diff.pyと一緒に保持してください。
added: 提供されたafterファイルにのみ存在するCVE ID。removed: beforeファイルにのみ存在するCVE ID。修復や安全の証明ではありません。 部分的なafterファイルは、多数の見かけ上の削除を引き起こす可能性があります。changed: 少なくとも1つのレコードフィールドが異なります。変更前と変更後の値、フィールド存在フラグ、完全なレコードが保持されます。--vendorは、どちらかのスナップショットに対するvendorProjectの完全一致(大文字小文字を区別しない)です。あいまい一致やインストール済み製品の検出ではありません。省略すると、提供されたカタログ全体を比較します。いずれの入力ファイルにも出力をリダイレクトしないでください。 例えば、> before.jsonはPythonが読み取る前にそのソースを切り詰めます。新しい出力ファイル名を使用してください。
終了コード0は、変更なしの結果を含め、有効な比較が生成されたことを意味します。終了コード2は、無効な入力またはファイルエラーを意味し、プログラムによってレポートは出力されません。シェルリダイレクションを使用する場合、エラー時でもシェルが空の出力ファイルを作成することがあるため、以前のレポートを置き換える前に終了コードを確認してください。
すべてのファイル処理はローカルで行われます。ネットワークリクエスト、テレメトリ、ストレージアカウント、自動アラート、スキャン、エクスプロイト、修復、ストア連携はありません。保存したファイルはデバイス上に残ります。レポートには提供されたレコードとベンダーフィルターが含まれるため、共有前に確認してください。最大入力サイズは1ファイルあたり20 MBです。無効なUTF-8、重複するJSONキー/ID、無効な日付、件数の不一致、逆転したリリースタイムスタンプは拒否されます。不明なフィールドは保持され、スキーマ検証は行われません。スナップショット内の任意の場所にある10進数および指数形式のJSON数値は、値を暗黙的に丸めることを避けるため、拡張フィールドを含めて明示的に拒否されます。整数のJSON数値は正確に保持されます。この制限を回避するためにソース値を変更しないでください。これは前方互換性と引き換えに正確性を優先します。10進数/指数値を持つ将来の公式フィードは、サポートが追加されるまで拒否されます。必須フィールドは現在の公式スキーマに従いますが、これは完全なJSON Schema実装ではありません。
v0.1.1は45件の合成テストに合格しています。v0.1.0には43件が含まれていました。2026年10月14日、プロトタイプはcatalogVersion 2026.10.13、1,741エントリ、dateReleased 2026-10-13T19:10:43.6568Zの公式ミラースナップショットを読み込みました。そのスナップショットをそれ自体と比較した結果、レコードの変更はゼロでした。これはその1つのスナップショットに対する入力互換性のみを証明するものであり、真正性、露出、または2つの連続する実フィードの正しい処理を証明するものではありません。そのSHA-256は136904f12e4c6762e526352e3a67ed7b28cd21b4d82bed9c91719ff2e94f2f28でした。
CISAはすでに無料のカタログを提供しています。その公式リポジトリのREADMEはインタラクティブなコミット変更ダッシュボードにリンクしています。他のオープンソースの差分および監視ツールも存在します。このプロトタイプは、狭い範囲のオフラインでのフィールドレベルのレビューワークフローを探求するものです。独自の市場、マーチャント検証、セキュリティ認証、有料アラートサービス、支払い意思についての主張は行いません。将来のマネージド配信や有料製品には、別途検証と運用管理が必要になります。
プロトタイプのソースコード: MIT、LICENSEを参照。CISAのロゴ、印章、承認は使用していません。
v0.1.0は+00:60のような不正なdateReleasedオフセット成分を受け入れていましたが、v0.1.1は比較前にそれらを拒否します。脆弱性/露出や、有効なオフセット結果が変更されたという主張はありません。オフセットの時間は00-23、分は00-59でなければなりません。-00:00は順序付けのためにゼロに正規化されますが、元のタイムスタンプ文字列はレポートに残ります。これはソースのタイムゾーン知識に関する主張ではありません。
v0.1.1のソースには45件の合成テストが含まれています(v0.1.0には43件が含まれていました)。チェックは監査や、ソースの真正性、完全性、露出、需要の証明ではありません。