
Comparação offline de snapshots do CISA KEV para revisão de alterações em nível de campo. Protótipo gratuito, não é uma avaliação de segurança. Desenvolvimento assistido por IA.
Um protótipo offline de revisão de alterações para equipes de TI que comparam dois snapshots JSON das Vulnerabilidades Exploradas Conhecidas (KEV) da CISA. Ele reporta registros adicionados, removidos e editados, incluindo os valores exatos de antes/depois para cada campo alterado. É um utilitário de revisão de dados, não uma avaliação de segurança.
Protótipo gratuito. Nenhum cliente, serviço pago ou validação de demanda é alegado. Desenvolvido com assistência de IA. Não afiliado à CISA nem endossado por ela.
Execute o exemplo sintético abaixo, ou compare dois snapshots salvos do catálogo público. Compartilhe feedback sobre o fluxo de trabalho: qual tarefa de revisão você estava tentando concluir, e isto removeu uma etapa manual? O feedback é público e expõe sua identidade no GitHub. Não inclua inventários de ativos privados, nomes de clientes, credenciais ou detalhes de incidentes. Publicado para o projeto Apex; protótipo assistido por IA e coleta de feedback. Nenhum piloto pago ou promessa de tempo de resposta.
Limite de entrada: números JSON em forma decimal e exponencial são rejeitados, inclusive em campos de extensão. Números inteiros são retidos exatamente. Esquemas futuros não têm garantia de funcionamento. Não modifique os valores de origem para contornar este limite.
Python 3.10 ou mais recente. Apenas biblioteca padrão. Nenhuma conta ou instalação necessária.
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
O catálogo de exemplo é sintético, não é um feed de vulnerabilidades atual. Ele mostra uma adição, um registro editado e uma remoção. O registro editado altera uma data de vencimento e um campo de extensão desconhecido. Nada é executado em segundo plano.
Para dados reais, baixe e retenha snapshots JSON sucessivos você mesmo do catálogo da CISA ou de seu espelho oficial. Verifique a proveniência e as datas de download. Passe primeiro o snapshot mais antigo. Esta ferramenta não busca fontes, não estabelece autenticidade, não informa se um catálogo está completo nem afirma estar atualizada. Os valores SHA-256 dos arquivos apoiam a reprodutibilidade, não a autenticação.
Execute python3 -B scripts/verify_release.py a partir de um checkout. Ele executa os testes sintéticos incluídos, compara exemplos JSON e Markdown com as saídas esperadas incluídas e verifica que uma entrada inválida com chaves duplicadas não emite relatório. Ele falha se nenhum teste for descoberto. Saída 0 significa que essas verificações de aceitação passaram; saída 1 significa falha. Ele imprime um resumo JSON e hashes dos arquivos principais/exemplo e de suporte listados, sem buscar dados. Arquivos temporários de entrada inválida são criados e removidos no diretório temporário do sistema operacional; o runner/testes incluídos não editam intencionalmente o checkout; -B impede gravações normais de bytecode.
Isso executa código Python do checkout, incluindo seus testes. Inspecione e confie nesse código antes de executá-lo. Verificações aprovadas e hashes de arquivos não são uma auditoria de segurança, assinatura de software, prova de autenticidade da fonte, avaliação de exposição ou evidência de clientes. Não redirecione sua saída para arquivos de código-fonte ou de exemplo.
JSON é o padrão. --format markdown produz uma revisão legível por humanos com contagens, proveniência do snapshot, limites, alterações de metadados e cada registro completo antes/depois para alterações correspondentes. Ele não adiciona análise nem altera a comparação. Os valores de origem permanecem em blocos de código JSON; uma cerca de tamanho dinâmico impede que crases incorporadas escapem desses blocos em renderizadores Markdown comuns, mas não em todos os visualizadores. Abra o Markdown em um visualizador em que você confie. Revise os relatórios antes de compartilhá-los: registros completos antes/depois para alterações correspondentes, alterações de metadados e filtros de fornecedor são incluídos. Mantenha markdown_report.py junto de kev_diff.py para este formato opcional.
added: ID CVE presente apenas no arquivo after fornecido.removed: ID CVE presente apenas no arquivo before. Não é prova de remediação ou segurança. Um arquivo after parcial pode causar muitas remoções aparentes.changed: pelo menos um campo do registro difere. Valores antes e depois, sinalizadores de presença de campo e registros completos são retidos.--vendor é uma correspondência exata, sem distinção entre maiúsculas e minúsculas, em vendorProject, contra qualquer um dos snapshots. Não é correspondência aproximada nem detecção de produto instalado. Omiti-lo compara o catálogo completo fornecido.Nunca redirecione a saída para qualquer um dos arquivos de entrada. Por exemplo, > before.json trunca essa fonte antes que o Python possa lê-la. Use um novo nome de arquivo de saída.
Saída 0 significa que uma comparação válida foi produzida, incluindo um resultado sem alterações. Saída 2 significa entrada inválida ou erro de arquivo; nenhum relatório é emitido pelo programa. Se você usar redirecionamento de shell, seu shell pode criar um arquivo de saída vazio mesmo em caso de erro, então verifique o código de saída antes de substituir um relatório anterior.
Todo o processamento de arquivos é local. Sem requisições de rede, telemetria, conta de armazenamento, alertas automatizados, varredura, exploração, remediação ou integração com loja. Os arquivos que você salva permanecem no seu dispositivo. Os relatórios contêm os registros fornecidos e os filtros do fornecedor; revise-os antes de compartilhar. O tamanho máximo de entrada é 20 MB por arquivo. UTF-8 inválido, chaves/IDs JSON duplicados, datas inválidas, contagens divergentes e timestamps de release invertidos são rejeitados. Campos desconhecidos são preservados, não validados por schema. Números JSON em forma decimal e exponencial em qualquer lugar de um snapshot são explicitamente rejeitados, incluindo campos de extensão, para evitar arredondamento silencioso de valores. Números JSON inteiros são mantidos exatamente. Não modifique os valores de origem para contornar esse limite. Isso troca compatibilidade futura por exatidão: um feed oficial futuro com valores decimais/exponenciais será rejeitado até que o suporte seja adicionado. Os campos obrigatórios seguem o schema oficial atual, mas isso não é uma implementação completa de JSON Schema.