When a serious CVE drops, the first question leadership asks is "are we affected, and where?" — and the honest answer usually takes hours of cross-referencing the advisory against a sprawling, imperfect asset inventory.
This is an Advanced task because it is retrieval-grounded reasoning over messy real-world data: the advisory describes affected products, versions, and conditions; your CMDB describes what you actually run; and the impact lives in the join between them, complicated by transitive dependencies, version ambiguity, and stale inventory. AI accelerates the cross-reference and reasons about conditional applicability, but the inventory it reasons over is frequently wrong or incomplete — so every "affected" and every "not affected" is a hypothesis you confirm against reality before you act or report.
"Not affected" is the most dangerous output here. If the model concludes you're clear based on an incomplete inventory, you'll stand down while the vulnerable asset the CMDB never listed sits exposed. Treat clean results as "no evidence of impact in the data I have," never as "safe."
Assemble both sides of the join. The advisory's affected products, versions, and preconditions; and a current export of the relevant inventory — software bill of materials, CMDB, container image manifests. Freshness of the inventory is the single biggest determinant of accuracy.
Prompt for a matched impact analysis with explicit uncertainty:
You are assessing whether my organization is affected by a CVE. Match the
advisory's affected criteria against my asset inventory below.
For each potentially-affected asset:
- state whether it matches the affected version range (be exact about
version comparisons)
- state whether the advisory's preconditions (config, enabled features)
apply, or that you cannot tell from the data
- classify: AFFECTED / NOT AFFECTED / CANNOT DETERMINE
Do NOT classify NOT AFFECTED unless the version or precondition clearly
rules it out. When the inventory is silent or ambiguous, say CANNOT
DETERMINE and name what you'd need to confirm.
ADVISORY: <affected products/versions/preconditions>
INVENTORY: <SBOM / CMDB export>
Expected output: three buckets, with CANNOT DETERMINE used honestly for every asset the data can't resolve — that bucket is your manual follow-up list, and it's a feature, not a failure.
Chase transitive exposure. For library CVEs, the vulnerable component is often a dependency of a dependency. Ask the model to trace which of your assets pull in the affected component transitively, then confirm against the actual dependency tree.
Confirm the AFFECTED and CANNOT DETERMINE lists against live systems. Query the real hosts/images for the actual installed version — the inventory is a starting point, not truth. Promote confirmed hits to remediation (see the exploitability-prioritization playbook to order them).
Report impact with confidence levels. Give leadership the affected count, the unresolved count, and what you're doing to close the unknowns — an honest "12 confirmed, 30 still checking" beats a false "we're fine."
An asset inventory is one of the most sensitive artifacts a client owns — it maps their entire attack surface. Before prompting, replace real hostnames, IPs, and asset IDs with opaque tokens or roles, keeping only the product/version data the CVE match needs; the join works on versions, not names. Where the client bars external tools, run the analysis with a local model — the advisory is public and the inventory stays in-house. Confirm affected assets by querying the client's own systems, keep the impact report inside their boundary, and get per-client approval before any inventory slice leaves it.