{% if domain %}{% endif %}
Distribution of findings across risk priority bands.
How findings flow through Gate 1 (Reachable+Exploit), Gate 2 (Strong Signal), and additive scoring.
Each horizontal band represents a priority level — red (CRITICAL) at the top, gray (INFO) at the bottom. CVSS severity runs left-to-right. Bubbles that appear off the diagonal highlight where CVSS alone would misclassify risk — e.g., a CVSS Medium that lands in the CRITICAL band due to reachability and active exploitation.
Components with the highest average triage scores, with band breakdown.
Radar chart comparing risk factor profiles (Reachability, Exploits, Attack Vector, EPSS, CVSS) across top projects.
Per-project breakdown showing band counts. Projects sorted by CRITICAL count descending.
This report uses a tiered-gates scoring model that prioritizes findings based on real-world exploitability rather than theoretical CVSS scores alone.
{% if scoring_config and scoring_config.gates %} {% for gate in scoring_config.gates %}Bands: HIGH ≥ {{ scoring_config.weights.band_high_threshold }}, MEDIUM ≥ {{ scoring_config.weights.band_medium_threshold }}, LOW ≥ {{ scoring_config.weights.band_low_threshold }}, INFO < {{ scoring_config.weights.band_low_threshold }}
{% if scoring_config.weights.vex_resolved %}Copy and paste into any LLM for remediation guidance. No API key required. Project, component, and finding prompts are in the tables below.
{{ ai_portfolio_prompt }}
Detailed fix guidance for Critical and High priority components. Fix version data derived from NVD API where available.
| Component | Fix Version | Rationale | Guidance | Workaround | Code Search | Confidence |
|---|---|---|---|---|---|---|
| {{ comp_key }} | {{ guidance.fix_version|default('—') }} | {{ guidance.rationale|default('—') }} | {{ guidance.guidance|default('—') }} | {{ guidance.workaround|default('—') }} | {{ guidance.code_search_hints|default('—') }} |
{{ guidance.confidence|default('—') }} |
Per-finding triage and remediation guidance for Critical and High priority findings. Fix version data derived from NVD API where available.
| Finding | Priority | Action | Rationale | Fix Version | Workaround | Code Search | Confidence |
|---|---|---|---|---|---|---|---|
| {{ finding_id }} | {{ guidance.priority|default('—') }} | {{ guidance.action|default('—') }} | {{ guidance.rationale|default('—') }} | {{ guidance.fix_version|default('—') }} | {{ guidance.workaround|default('—') }} | {{ guidance.code_search_hints|default('—') }} |
{{ guidance.confidence|default('—') }} |
| Folder | {% endif %}Project | CRITICAL | HIGH | MEDIUM | LOW | INFO | Total | Avg Score | {% if ai_project_prompts %}AI Prompt | {% endif %}||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ row.folder_name if row.folder_name is defined else '' }} | {% endif %}{% if domain and row.project_id %} {{ row.project_name }} {% else %} {{ row.project_name }} {% endif %} | {% if row.CRITICAL|default(0) > 0 %}{{ row.CRITICAL }}{% else %}0{% endif %} | {% if row.HIGH|default(0) > 0 %}{{ row.HIGH }}{% else %}0{% endif %} | {% if row.MEDIUM|default(0) > 0 %}{{ row.MEDIUM }}{% else %}0{% endif %} | {{ row.LOW|default(0) }} | {{ row.INFO|default(0) }} | {{ row.total_findings|default(0) }} | {{ row.avg_score|default(0) }} | {% if ai_project_prompts %}
{% if row.project_name in ai_project_prompts %}
View{{ ai_project_prompts[row.project_name] }}
|
{% endif %}
||||||||||
| Component | Version | CRITICAL | HIGH | MEDIUM | LOW | Total | Avg Score | Max Score | {% if ai_component_prompts %}AI Prompt | {% endif %}Actions | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ row.component_name }} | {{ row.component_version }} | {% if row.CRITICAL|default(0) > 0 %}{{ row.CRITICAL }}{% else %}0{% endif %} | {% if row.HIGH|default(0) > 0 %}{{ row.HIGH }}{% else %}0{% endif %} | {% if row.MEDIUM|default(0) > 0 %}{{ row.MEDIUM }}{% else %}0{% endif %} | {{ row.LOW|default(0) }} | {{ row.total_findings|default(0) }} | {{ row.avg_score }} | {{ row.max_score }} | {% if ai_component_prompts %}
{% set comp_key = row.component_name ~ ':' ~ row.component_version %}
{% if comp_key in ai_component_prompts %}
View{{ ai_component_prompts[comp_key] }}
|
{% endif %}
{% set c_key = row.component_name ~ ':' ~ row.component_version %} {% set c_guidance = ai_component_guidance.get(c_key, {}) if ai_component_guidance is defined and ai_component_guidance else {} %} {% set c_summary_parts = [] %} {% if c_guidance.get('fix_version') %}{% if c_summary_parts.append('Fix: ' + c_guidance.fix_version) %}{% endif %}{% endif %} {% if c_guidance.get('guidance') %}{% if c_summary_parts.append(c_guidance.guidance) %}{% endif %}{% endif %} {% if c_guidance.get('workaround') %}{% if c_summary_parts.append('Workaround: ' + c_guidance.workaround) %}{% endif %}{% endif %} {% set c_summary = c_summary_parts | join('\n\n') if c_summary_parts else (row.total_findings | string ~ ' findings (' ~ row.CRITICAL | string ~ ' CRITICAL, ' ~ row.HIGH | string ~ ' HIGH) in ' ~ row.component_name ~ ' ' ~ row.component_version) %} {% set c_band = 'CRITICAL' if (row.CRITICAL|default(0)) > 0 else ('HIGH' if (row.HIGH|default(0)) > 0 else ('MEDIUM' if (row.MEDIUM|default(0)) > 0 else 'LOW')) %} | |||||||||
| Finding ID | Severity | Band | Score | Gate | Component | Project | Version | Reachability | Score | Vuln Functions | Exploit | KEV | Vector | EPSS %ile | CVSS | {% if ai_finding_prompts %}AI Prompt | {% endif %}AI Status | Actions | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {% if domain and row.project_id and row.project_version_id and row.internal_id %} {{ row.finding_id }} {% else %} {{ row.finding_id }} {% endif %} | {{ row.severity }} | {{ row.priority_band }} | {% set _additive = (row._pts_reachability|default(0) + row._pts_exploit|default(0) + row._pts_vector|default(0) + row._pts_epss|default(0) + row._pts_cvss|default(0))|round(1) %} {% set _gate_bonus = (row.triage_score - _additive)|round(1) if row.gate_assignment != 'NONE' else 0 %}{{ row.triage_score }} | {{ row.gate_assignment if row.gate_assignment != 'NONE' else '—' }} | {% if domain and row.project_id and row.project_version_id and row.component_id %} {{ row.component_name }}{% if row.component_version %} {{ row.component_version }}{% endif %} {% elif domain and row.project_id and row.project_version_id %} {{ row.component_name }}{% if row.component_version %} {{ row.component_version }}{% endif %} {% else %} {{ row.component_name }}{% if row.component_version %} {{ row.component_version }}{% endif %} {% endif %} | {% if domain and row.project_id %} {{ row.project_name }} {% else %} {{ row.project_name }} {% endif %} | {% if domain and row.project_id and row.project_version_id %} {{ row.version_name if row.version_name else '—' }} {% else %} {{ row.version_name if row.version_name else '—' }} {% endif %} | {% set rlabel = row.reachability_label if row.reachability_label is string else 'UNKNOWN' %}{{ rlabel }} | {{ row.reachability_score|int if row.reachability_score else '—' }} | {{ row.vuln_functions if row.vuln_functions else '—' }} | {% if row.has_exploit %}💥 Yes{% else %}—{% endif %} | {% if row.in_kev %}🔒 Yes{% else %}—{% endif %} | {{ row.attack_vector }} | {{ "%.1f"|format(row.epss_percentile|default(0) * 100) if row.epss_percentile else '—' }}% | {{ row.risk }} | {% if ai_finding_prompts %}
{% if row.finding_id in ai_finding_prompts %}
View{{ ai_finding_prompts[row.finding_id] }}
|
{% endif %}
{% if row.status is defined and row.status and row.status not in ('', 'nan', 'None') %} {{ row.status }} {% elif vex_rec_lookup is defined and vex_rec_lookup and row.finding_id in vex_rec_lookup %} {% set vrec = vex_rec_lookup[row.finding_id] %} {{ vrec.recommended_vex_status }} {% else %} — {% endif %} | {% set f_guidance = ai_finding_guidance.get(row.finding_id, {}) if ai_finding_guidance is defined and ai_finding_guidance else {} %} {% set f_summary_parts = [] %} {% if f_guidance.get('fix_version') %}{% if f_summary_parts.append('Fix: ' + f_guidance.fix_version) %}{% endif %}{% endif %} {% if f_guidance.get('guidance') %}{% if f_summary_parts.append(f_guidance.guidance) %}{% endif %}{% endif %} {% if f_guidance.get('workaround') %}{% if f_summary_parts.append('Workaround: ' + f_guidance.workaround) %}{% endif %}{% endif %} {% set f_reach = row.reachability_label if row.reachability_label is string else 'UNKNOWN' %} {% set f_summary = f_summary_parts | join('\n\n') if f_summary_parts else (row.severity ~ ' vulnerability in ' ~ row.component_name ~ ' ' ~ row.component_version ~ '. Reachability: ' ~ f_reach ~ '.') %} {% if row.internal_id and row.project_version_id %} {% set vex_reason = vex_reason_lookup.get(row.finding_id, '') if vex_reason_lookup is defined and vex_reason_lookup else '' %} {% set rec_data = vex_rec_lookup.get(row.finding_id) if vex_rec_lookup is defined and vex_rec_lookup else None %} {% endif %} | |