
Автономное сравнение снимков CISA KEV для обзора изменений на уровне полей. Бесплатный прототип, не является оценкой безопасности. Разработка с использованием ИИ.
Оффлайн-прототип для проверки изменений, предназначенный для ИТ-команд, которые сравнивают два JSON-снимка CISA Known Exploited Vulnerabilities (KEV). Он сообщает о добавленных, удалённых и изменённых записях, включая точные значения до/после для каждого изменённого поля. Это утилита для проверки данных, а не оценка безопасности.
Бесплатный прототип. Нет заявленных клиентов, платных услуг или подтверждённого спроса. Разработано с помощью ИИ. Не связано с CISA и не одобрено ею.
Запустите синтетический пример ниже или сравните два сохранённых снимка публичного каталога. Поделитесь отзывом о рабочем процессе: какую задачу проверки вы пытались выполнить и позволило ли это убрать ручной шаг? Отзывы публичны и раскрывают ваш профиль GitHub. Не включайте частные инвентаризации активов, имена клиентов, учётные данные или сведения об инцидентах. Опубликовано для проекта Apex; прототип с поддержкой ИИ и сбор отзывов. Никаких платных пилотов или обещаний по времени ответа.
Ограничение ввода: десятичные и экспоненциальные формы чисел 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
Пример каталога является синтетическим, а не текущим потоком данных об уязвимостях. Он показывает одно добавление, одну изменённую запись и одно удаление. В изменённой записи меняются срок выполнения и неизвестное поле расширения. Ничего не выполняется в фоновом режиме.
Для реальных данных самостоятельно скачивайте и сохраняйте последовательные снимки JSON из каталога CISA или его официального зеркала. Проверяйте происхождение и даты загрузки. Передавайте более ранний снимок первым. Этот инструмент не извлекает источники, не устанавливает подлинность, не определяет, является ли каталог полным, и не заявляет о своей актуальности. Значения SHA-256 файлов поддерживают воспроизводимость, а не аутентификацию.
Запустите python3 -B scripts/verify_release.py из рабочей копии. Он запускает встроенные синтетические тесты, сравнивает примеры JSON и Markdown со встроенными ожидаемыми результатами и проверяет, что входные данные с недопустимыми дублирующимися ключами не создают отчёт. Он завершается с ошибкой, если не обнаружено ни одного теста. Код выхода 0 означает, что эти приёмочные проверки пройдены; код выхода 1 означает сбой. Он выводит сводку в формате JSON и хеши перечисленных основных/примерных и вспомогательных файлов, не извлекая данные. Временные файлы с недопустимыми входными данными создаются и удаляются во временном каталоге операционной системы; встроенный runner/тесты намеренно не редактируют рабочую копию; -B предотвращает обычную запись байт-кода.
Это выполняет код Python из рабочей копии, включая его тесты. Изучите и доверяйте этому коду перед его запуском. Пройденные проверки и хеши файлов не являются аудитом безопасности, подписью программного обеспечения, доказательством подлинности источника, оценкой подверженности риску или свидетельством наличия клиентов. Не перенаправляйте его вывод на исходные или примерные файлы.
По умолчанию используется JSON. --format markdown создаёт удобный для чтения человеком отчёт с количественными показателями, происхождением снимков, ограничениями, изменениями метаданных и каждой полной записью до/после для совпадающих изменений. Он не добавляет анализ и не изменяет сравнение. Исходные значения остаются в блоках кода JSON; динамически подбираемый размер ограждения предотвращает выход встроенных обратных кавычек за пределы этих блоков в обычных средствах отображения Markdown, но не во всех программах просмотра. Открывайте Markdown в программе просмотра, которой доверяете. Просматривайте отчёты перед публикацией: включаются полные записи до/после для совпадающих изменений, изменения метаданных и фильтры по поставщикам. Держите markdown_report.py рядом с kev_diff.py для этого необязательного формата.
added: идентификатор CVE присутствует только в предоставленном файле after.removed: идентификатор CVE присутствует только в файле before. Не является доказательством устранения или безопасности. Частичный файл after может вызвать множество кажущихся удалений.changed: отличается хотя бы одно поле записи. Значения до и после, флаги наличия полей и полные записи сохраняются.--vendor — это точное совпадение без учёта регистра по vendorProject, применяемое к любому из снимков. Это не нечёткое сопоставление и не обнаружение установленных продуктов. Если его опустить, сравнивается весь предоставленный каталог.Никогда не перенаправляйте вывод на любой из входных файлов. Например, > before.json усекает этот источник до того, как Python сможет его прочитать. Используйте новое имя выходного файла.
Код выхода 0 означает, что было создано допустимое сравнение, включая результат без изменений. Код выхода 2 означает недопустимые входные данные или ошибку файла; программа не создаёт отчёт. Если вы используете перенаправление оболочки, ваша оболочка может создать пустой выходной файл даже при ошибке, поэтому проверьте код выхода перед заменой предыдущего отчёта.
Вся обработка файлов выполняется локально. Никаких сетевых запросов, телеметрии, учётной записи хранения, автоматических оповещений, сканирования, эксплуатации, устранения или интеграции с магазином. Сохранённые вами файлы остаются на вашем устройстве. Отчёты содержат предоставленные записи и фильтры поставщика; просмотрите их перед публикацией. Максимальный размер входных данных — 20 МБ на файл. Неверный UTF-8, дублирующиеся ключи/ID JSON, неверные даты, несовпадающие количества и обратный порядок меток времени выпуска отклоняются. Неизвестные поля сохраняются, а не проверяются по схеме. Десятичные числа и числа в экспоненциальной форме в JSON в любом месте снимка явно отклоняются, включая поля расширений, чтобы избежать незаметного округления значений. Целые числа JSON сохраняются точно. Не изменяйте исходные значения, чтобы обойти это ограничение. Это обменивает обратную совместимость на точность: будущий официальный фид с десятичными/экспоненциальными значениями будет отклонён до тех пор, пока не будет добавлена поддержка. Обязательные поля соответствуют текущей официальной схеме, но это не полная реализация JSON Schema.