{{ identity_assertions|length }} component(s) detected as misidentified relative to NVD. Each assertion groups the CVEs attributed to the scanned component and classifies whether they apply to the actual product.
{% for a in identity_assertions %}{{ a.likely_product or '?' }}, NVD expected
{{ a.nvd_product or '?' }}
MISMATCHED
confidence: {{ a.confidence or 'medium' }}
Evidence: {{ a.evidence or '—' }}
| CVE | Verdict | Rationale | Recommended VEX |
|---|---|---|---|
| {{ cv.cve_id }} | {% if cv.verdict == 'does_not_apply' %} does_not_apply {% else %} might_still_apply {% endif %} | {{ cv.rationale or '—' }} | {% if cv.verdict == 'does_not_apply' %} NOT_AFFECTED / CODE_NOT_PRESENT {% else %} Review individually {% endif %} |
Findings on components whose identity was confirmed or ambiguous, flagged as likely FP by finding-level applicability analysis.
{% if candidates and candidates|length > 0 %}| CVE | Component | Severity | Confidence | Signals | Reason / AI Rationale | Action |
|---|---|---|---|---|---|---|
| {{ row.cve_id or row.finding_id or '—' }} | {{ row.component_name or '—' }} {{ row.component_version or '' }} | {{ row.severity or 'UNKNOWN' }} | {{ row.fp_confidence or '—' }} | {% if row.fp_signals %} {% if row.fp_signals is string %} {% for sig in row.fp_signals.split(',') %} {{ sig.strip() }} {% endfor %} {% else %} {% for sig in row.fp_signals %} {{ sig }} {% endfor %} {% endif %} {% endif %} |
{{ row.primary_reason or '—' }}
{% if row.ai_rationale %}
AI details
Verdict: {{ row.ai_verdict }}
{{ row.ai_rationale }} |
{{ row.recommended_action or 'Review' }} |
No residual FP candidates.
{% endif %}
{{ ai_component_prompts|length }} prompt(s) for offline LLM review. Paste each
into an external model; if the answer is IDENTITY: mismatched,
run the per-CVE applicability fan-out using the LIKELY_PRODUCT
and NVD_PRODUCT values. These prompts are also written to
False Positive Analysis_prompts.md alongside this report.
{{ p.prompt }}
| Signal | Count |
|---|---|
| {{ sig }} | {{ count }} |