Query the GCVE BCP-07 KEV catalogs; deprecate the CISA KEV helpers - #101
Merged
Conversation
… helpers Vulnerability-Lookup retires `/api/cisa_kev/` (vulnerability-lookup#641): that endpoint served a separate, non-BCP-07 mirror of the CISA list that kept retracted entries. The CISA catalog, like ENISA's and the others, is a GCVE BCP-07 KEV catalog served by `/api/kev/`, identified by its origin UUID. - `get_kevs` / `get_kevs_iter` list the BCP-07 assertions with the endpoint's filters: `vuln_id`, `origin` (catalog UUID), `status_reason`, `exploited`, `date_from`, `date_to`, `author`. - `get_kev` fetches one assertion by UUID, `get_kev_by_origin` the assertion a catalog holds for a vulnerability. - `CISA_KEV_ORIGIN` is the catalog UUID of CISA KEV in the GCVE references. - `get_cisa_kevs` / `get_cisa_kevs_iter` now delegate to the above with that origin and emit a DeprecationWarning; their entries are BCP-07 assertions rather than the former CISA records. The KEV test walks the CISA catalog of the public instance through the new helpers and checks the deprecated ones still answer.
cedricbonhomme
force-pushed
the
feat/bcp07-kev-api
branch
from
September 11, 2026 05:14
1755950 to
dd73ce2
Compare
The public instance lists five products for the MISP organization, and the listing is not ordered by name, so asserting that the first one is 'MISP' has failed on every CI leg since 2026-08-14. Assert that 'MISP' is among them instead, for the organization_name and organization_uuid filters alike.
cedricbonhomme
force-pushed
the
feat/bcp07-kev-api
branch
from
September 11, 2026 06:03
5b348dd to
8e31d49
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Vulnerability-Lookup retires
/api/cisa_kev/in vulnerability-lookup/vulnerability-lookup#641 (see vulnerability-lookup/vulnerability-lookup#640): that endpoint served a separate, non-BCP-07 mirror of the CISA list that kept retracted entries. The CISA catalog, like ENISA's and the others, is a GCVE BCP-07 KEV catalog served by/api/kev/, identified by its origin UUID. Without this changeget_cisa_kevsandget_cisa_kevs_iterreturn a 404 body once that PR is deployed.Changes
get_kevs/get_kevs_iterlist the BCP-07 assertions with the endpoint's filters:vuln_id,origin(catalog UUID),status_reason,exploited(Trueby default,Falsefor withdrawn assertions only,'all'),date_from,date_to,author. The iterator pages by 1000, the endpoint's maximum.get_kev(kev_uuid)fetches one assertion,get_kev_by_origin(origin, vuln_id)the assertion a catalog holds for a vulnerability (404 body when the catalog does not list it).CISA_KEV_ORIGINis exported: the catalog UUID of CISA KEV in the GCVE references, the same on every instance.get_cisa_kevs/get_cisa_kevs_iterdelegate to the new helpers with that origin and emit aDeprecationWarning. Their entries are now BCP-07 assertions rather than the former CISA records (cveID,dateAdded, ...), which is unavoidable since the old data no longer exists server-side.Verified
mypyclean.tests/test_web.py::test_kev(replacestest_cisa_kev) run against vulnerability.circl.lu: walks the whole CISA catalog through the iterator, round-trips one entry throughget_kevandget_kev_by_origin, checks the cross-catalogvuln_idfilter, and asserts the deprecated helpers warn and still answer.No version bump; that is left to the release.