Repository navigation
feat(scan): a CVE from KEV or MSRC alone is judged through NVD's record - #60
Closed
maksimtech wants to merge 1 commit into
Closed
maksimtech wants to merge 1 commit into
maksimtech wants to merge 1 commit into
Conversation
KEV and MSRC carry no cpeMatch, so for an entry with an installed version a CVE that reached the scan only through them was "not evaluable" - and KEV's are the ones being exploited. - nvd.records_for asks NVD by id (cveId=), paced like every request to NVD through the pacer fetch_cves now shares. - with_records_for_the_rest merges NVD's record into each such row, configurations and score with it; the CLI and the API call it for an entry they can judge, and only then. - When NVD cannot be asked, the CVE stays not evaluable and the scan says so; the API lists it in `errors`. - The NIS2 document's NVD row says the CVE ids that are sent. Tests first, against the recorded cveId answer for CVE-2026-48092 and a KEV entry derived in KEV's shape; seen failing; 9 of 9 mutants killed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
This was referenced Oct 17, 2026
Owner
Author
|
Folded into #64, which now targets main with every commit of the stack: one review, one merge, no conflicts from squash merges. |
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.



Audit finding PR-01, step 01b-2 (docs/DESIGN.md §5.3). Stacked on #59: review that first. After it is squash-merged I'll retarget this one to
main.What was wrong
CISA KEV and MSRC carry no
cpeMatch. For an entry with an installed version, a CVE that reached the scan only through them came out as "not evaluable: NVD's record of it was not part of this scan". Those are the CVEs that matter most, because KEV lists what is being exploited, and the scan had the means to ask.What changes
nvd.records_for(ids, keyword)asks NVD by id (cveId=). It is paced like every other NVD request: the pacing closure moved to_pacer, shared withfetch_cves, and the existing pacing tests are unchanged and green.nvd.with_records_for_the_restmerges NVD's record into each row that has none, which brings the configurations and the score with it. The CLI and the API call it only for an entry they can judge: an entry matched by name costs no request.errors.docs/nis2-compliance.md: the NVD row now says that, for a versioned entry, the ids of CVEs found only by KEV or MSRC are sent.Tests (strict TDD)
tests/test_judge_through_nvd.py, 11 tests:nvd_cve_2026_48092.json(cveId, 2026-10-07; 7-Zip 9.34 ≤ v < 26.01) andnvd_no_results.json.Seen failing first (8 red before the code). 9/9 mutants killed. Full suite: 2199 passed; ruff and mypy clean.
🤖 Generated with Claude Code