Report: Security Progress |
Generated: {{ generated_at }} |
Scope: {{ scope_label | default('All Projects') }}
{% if summary is defined and summary.period_start %} | Period: {{ summary.period_start }} to {{ summary.period_end }}{% endif %}
{% if summary is defined and summary.mode == 'version_progression' %} | Mode: Version Progression{% endif %}
{% if summary is defined and summary.mode == 'flat_snapshot' %}
Version progression data is not available.
This report requires multiple firmware versions per project to show progress over time.
The data below reflects a point-in-time snapshot rather than version-to-version trends.
{% endif %}
{% if portfolio_kpi %}
Total Resolved
{{ portfolio_kpi.total_resolved | default(0) }}
Total New
{{ portfolio_kpi.total_new | default(0) }}
Net Change
{% if portfolio_kpi.net_change | default(0) > 0 %}+{% endif %}{{ portfolio_kpi.net_change | default(0) }}
Projects Improved
{{ portfolio_kpi.projects_improved | default(0) }} / {{ portfolio_kpi.total_projects | default(0) }}
{% endif %}
{% if portfolio_progression and portfolio_progression | length > 1 %}
Open CVE Trend
Total open CVE count across all projects over time.
{% endif %}
{% if projects and projects | length > 0 %}
Project Progress
Per-project vulnerability change between baseline and current versions. Sorted by most improved.
| Project |
Baseline Open |
Current Open |
Resolved |
New |
Net Change |
{% for p in projects | sort(attribute='net_change') %}
| {{ p.project_name }} |
{{ p.baseline_open | default(0) }} |
{{ p.current_open | default(0) }} |
{{ p.total_resolved | default(0) }} |
{{ p.total_new | default(0) }} |
{% if p.net_change | default(0) > 0 %}+{% endif %}{{ p.net_change | default(0) }}
|
{% endfor %}
{% endif %}
{% if cve_update_summary and cve_update_summary.total | default(0) > 0 %}
CVE Updates Summary
CVE database changes detected during the reporting window that affect open findings.
| Category |
Count |
{% if cve_update_summary.added | default(0) > 0 %}
| Newly Added CVEs | {{ cve_update_summary.added }} |
{% endif %}
{% if cve_update_summary.retracted | default(0) > 0 %}
| Retracted CVEs | {{ cve_update_summary.retracted }} |
{% endif %}
{% if cve_update_summary.severity_escalated | default(0) > 0 %}
| Severity Escalated | {{ cve_update_summary.severity_escalated }} |
{% endif %}
{% if cve_update_summary.severity_downgraded | default(0) > 0 %}
| Severity Downgraded | {{ cve_update_summary.severity_downgraded }} |
{% endif %}
{% if cve_update_summary.exploit_gained | default(0) > 0 %}
| Exploit Gained | {{ cve_update_summary.exploit_gained }} |
{% endif %}
{% if cve_update_summary.exploit_subsided | default(0) > 0 %}
| Exploit Subsided | {{ cve_update_summary.exploit_subsided }} |
{% endif %}
| Total |
{{ cve_update_summary.total }} |
{% endif %}
{% if projects and projects | length > 0 and summary is defined and summary.mode == 'version_progression' %}
Version-by-Version Detail
Expand a project to see how vulnerability counts changed across firmware versions.
{% for p in projects | sort(attribute='net_change') %}
{% if p.progression and p.progression | length > 0 %}
{{ p.project_name }}
({{ p.progression | length }} version{{ 's' if p.progression | length != 1 else '' }},
net
{% if p.net_change | default(0) > 0 %}+{% endif %}{{ p.net_change | default(0) }}
)
| Version |
Date |
Open |
Resolved |
New |
Critical |
High |
Medium |
Low |
{% for v in p.progression %}
| {{ v.version | default('--') }} |
{{ v.date | default('--') }} |
{{ v.open_count | default(0) }} |
{{ v.resolved | default(0) }} |
{{ v.new | default(0) }} |
{{ v.critical | default(0) }} |
{{ v.high | default(0) }} |
{{ v.medium | default(0) }} |
{{ v.low | default(0) }} |
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% include '_action_buttons.html' %}