Scanners are honest and overwhelming: a Trivy run on a mature estate returns thousands of findings, and an SBOM diff between releases is unreadable at review speed.
Tier: Core · Hands-on time: ~45 minutes
The division of labor that works: scanners and vulnerability databases are the source of truth; AI ranks, explains, and drafts the plan; exploitability data (KEV/EPSS) anchors the ranking to reality instead of CVSS theater. The output is a remediation plan you can defend to a security team and a change-advisory board.
Skip AI for a single fresh CVE on the front page of the internet — go straight to the advisory, your exposure check, and the patch.
Merge the evidence before prompting. Join scanner findings with KEV membership, EPSS score, and your deployment-context file into one table (a 20-line script; have AI write it). Prompting with unjoined fragments produces confident nonsense.
Ask for ranking with stated rules.
Attached: merged vulnerability findings (scanner severity, KEV yes/no,
EPSS, component, deployment context). Produce a remediation plan:
Ranking rules, in order: (1) KEV-listed AND internet-facing; (2) KEV-listed;
(3) EPSS > 0.1 on prod components; (4) scanner-critical on prod;
(5) everything else grouped by component so one upgrade closes many.
For each of the top 20: what it is (2 lines, plain language), why this
rank (cite the fields), the fix (version bump / base-image update /
config), and blast radius of the fix.
Then: group the remaining findings into upgrade batches by component.
Do not change any severity or score. Do not add CVEs not in the data.
Flag any row where the data fields conflict.
Verify the top of the list hard. For the top 10: open the actual advisory, confirm the affected-version range matches what you run (scanners false-positive on backported fixes constantly), and confirm KEV/EPSS values against the source files. The plan's credibility lives or dies in its top 10.
Check reachability where it matters. For expensive fixes (major-version bumps, base-image swaps), ask the AI to help determine whether the vulnerable code path is even loaded (which package feature, which config enables it) — then verify in the code/config yourself. Deprioritize with a written reason, never silently.
Do the SBOM diff for release advisory. Diff old vs new SBOM (syft + a diff, or Dependency-Track). Ask for a change-advisory paragraph: components added/removed/bumped, net new vulnerabilities introduced, vulnerabilities closed, license changes. This becomes the security section of the change record — reviewed, then attached to the release.
Ship as PRs and tickets with the rationale embedded. Have AI draft: dependency-bump PRs in batches from step 2's grouping, and tickets for the top 20 with the two-line explanation and rank rationale inline. Rationale-in-ticket is what makes the plan defensible six months later.
CVSS answers "how bad could it be anywhere"; KEV/EPSS plus your deployment context answer "how bad is it here" — AI's job is applying stated rules to that evidence, transparently.
A remediation plan with one wrong "not exploitable here" call is worse than no plan — every deprioritization needs a written, checkable reason.