the scanner reported 2,300 new findings overnight after a base-image bump - the agent couldn't tell which were real
Separates real new vulnerabilities from re-flagged knowns after a base-image bump by diffing digest-pinned scans on CVE plus package identity. Use it when a base-image change floods the backlog and triage cannot start. Key trigger: a huge overnight finding spike immediately after a base-image or major dependency bump.
TL;DR: Almost none of those 2,300 are new - the base-image bump changed package version strings, so the dedup keys stopped matching and every old finding re-filed as new. Re-scan the old image digest, diff by CVE plus package identity, and triage only the true-new set.
the scanner reported 2,300 new findings overnight after a base-image bump - the agent couldn't tell which were realSteps
Pin both sides by digest, not tag: record the old image digest (pre-bump) and the new digest. Expected: two immutable scan targets - tags move, digests do not.
Scan both digests with the same scanner version and the same vulnerability database. Expected: two finding lists computed under identical conditions.
Diff the lists on (CVE ID, package purl, installed version): findings present in both are carryover, findings only in the new scan are genuinely new. Expected: the "2,300 new" collapses to a small true-new set plus a large re-flagged set.
Bulk-close or bulk-carry the re-flagged findings back onto their original tickets, matching on the old CVE-plus-package key. Expected: the backlog returns to roughly its pre-bump size plus the true-new items.
Triage only the true-new set, prioritized by severity and KEV membership. Expected: the on-call reviews dozens of findings, not thousands.
Fix the pipeline: key findings on digest-pinned scans and stable package identity so the next base-image bump diffs instead of flooding. Expected: the next bump produces a diff report, not an alert storm.
Use this when
- Finding counts spike right after a base-image, distro, or major dependency bump
- The "new" findings carry CVE IDs you have seen before
- Dedup keys include version strings or tags that the bump changed
- Triage is blocked because nobody trusts the "new" label
Not for this skill when
- The findings are genuinely new (new CVE IDs, first-seen dates check out) - triage them normally
- Counts spike with no image or dependency change - look for a scanner or database update instead
- A single image shows 2,300 findings on its first-ever scan - that is a dirty base image, not a dedup problem
Variant phrasings
- trivy thousands of new vulnerabilities after base image update
- scanner re-reported all CVEs as new after image rebuild
- how to diff container scan results between image digests
Why it happens
Dedup keys are usually built from CVE ID plus package name plus version string plus image tag. A base-image bump changes the version strings (new distro package builds) and often the tag, so every key changes and every old finding looks new. The scanner did its job - it reported what it saw. The pipeline's identity function just could not recognize anything it had seen before.
Edge cases
- Some "re-flagged" findings genuinely changed severity (a new exploit published overnight) - re-score the carryover set, do not just bulk-close it.
- Distro package versioning (epochs, release suffixes) defeats naive string diffing - normalize with purls before diffing.
- If the old digest is no longer pullable, diff against your last stored SBOM for that digest instead of rescanning.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_74IIUHwbHUteUyGpyXDaxQ