Techniques Mapped
| # | Target | STRIDE | Severity | Description | |
|---|---|---|---|---|---|
| {{ loop.index }} | {{ threat.target }} | {{ threat.stride_category }} | {{ threat.severity.level }} ({{ "%.1f"|format(threat.severity.score) }}) | {{ threat.description | truncate(130) }} |
Threats plotted by Impact (Y-axis, derived from severity score) vs Likelihood (X-axis, derived from risk signals: CVE + CWE + network exposure). Hover over a dot for details.
A higher completeness score improves threat detection accuracy, AI enrichment quality, and severity scoring.
| Check | Score | Wt | Hint |
|---|---|---|---|
| {{ check.label }} | {% if check.is_boolean %} {{ "✓" if check.score >= 1.0 else "✗" }} {% else %} {{ check.pct }}% ({{ check.passed }}/{{ check.total }}) {% endif %} | {{ check.weight }} | {{ check.hint }} |
{{ ciso_triage.narrative }}
| Action | Impact | Effort | Addresses |
|---|---|---|---|
| {{ qw.action }} | {{ qw.impact }} | {{ qw.effort }} | {{ qw.addresses | join(", ") if qw.addresses else "" }} |
{{ attack_id_validation.total_techniques_checked }} technique IDs checked against the local ATT&CK corpus. {% if attack_id_validation.n_invalid %}{{ attack_id_validation.n_invalid }} invalid{% endif %} {% if attack_id_validation.n_revoked %} · {{ attack_id_validation.n_revoked }} revoked{% endif %} {% if attack_id_validation.n_deprecated %} · {{ attack_id_validation.n_deprecated }} deprecated{% endif %}
| Technique ID | Issue | Threat | Target |
|---|---|---|---|
| {% if issue.issue_type != "invalid" %} {{ issue.technique_id }} {% else %} {{ issue.technique_id }} {% endif %} | {{ issue.label }} | {{ issue.threat_id }} — {{ issue.threat_name[:60] }} | {{ issue.threat_target }} |
Interactive attack-surface map. Click a node to list its threats. Node colour = highest severity. Edge style: solid = encrypted, dashed = plain.
Each row represents a potential pivot chain: an attacker compromises the Entry Point component via its highest-severity threat, then traverses the dataflow to exploit the Target component. Chains are ranked by average severity. {% if attack_chains|length > _max_chains %} Showing top {{ _max_chains }} of {{ attack_chains|length }} chains. {% endif %}
| # | Chain Score | Entry Point | Dataflow / Protocol | Target | Entry Threat | Pivot Threat |
|---|---|---|---|---|---|---|
| {{ loop.index }} | {{ chain.chain_label }} ({{ "%.1f"|format(chain.chain_score) }}) | {{ chain.source_name }} |
{{ chain.dataflow_name }}
{% if chain.protocol %} {{ chain.protocol }}{% endif %} |
{{ chain.sink_name }} |
{{ chain.entry_threat.stride_category }}
{{ chain.entry_threat.description | truncate(100) }}
|
{{ chain.pivot_threat.stride_category }}
{{ chain.pivot_threat.description | truncate(100) }}
|
Objective-based attack paths computed by the Goal-Driven Attack Flow engine. Each scenario models a complete adversary journey from entry point to high-value target, with MITRE ATT&CK techniques assigned per hop. Sorted by path score (highest risk first).
| # | Risk | Objective | Actor | Attack Path | Score | Hops | Detection |
|---|---|---|---|---|---|---|---|
| {{ loop.index }} | {{ s.risk_level }} |
{{ s.objective }}
{% if s.objective_description %}
{{ s.objective_description | truncate(80) }}
{% endif %}
|
{{ s.actor }}
{{ s.actor_sophistication }}
|
{{ s.path }} | {{ s.score }} | {{ s.hop_count }} | {{ "%.0f%%"|format(s.detection_coverage * 100) }} |
{{ severity_calculation_note }}
Legend:
* : Indicates a CAPEC or MITRE mapping was manually added to improve relevance.
: Indicates a mitigation has been implemented (as defined in the implemented mitigations file).
Your system appears to be secure based on the current analysis.
| # | Target | Business Value | Source | Description | Conf. | CVEs | Severity | Risk Signals | CAPEC | MITRE Techniques | MITRE Mitigations | D3FEND Mitigations | CIS Mitigations | NIST Mitigations | OWASP Mitigations | Detection (SOC) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{ loop.index }} |
{{ threat.target }} | {{ threat.business_value if threat.business_value else 'N/A' }} |
{{ threat.source if threat.source else 'pytm' }}
|
{{ threat.description }}
{% if ar %}
{{ ar.decision | replace('_', ' ') | upper }}
{% if ar.rationale %}
{{ ar.rationale }}
{% endif %}
{% if ar.reviewer %}
— {{ ar.reviewer }}
{% endif %}
{% if ar.expires %}
(expires {{ ar.expires }})
{% endif %}
{% endif %}
{{ threat.threat_key }}
|
{% if threat.confidence is not none %}
{{ "%.2f"|format(threat.confidence) }}
{% else %}
N/A
{% endif %}
|
{% if threat.cve %}
|
{{ threat.severity.level }} ({{ "%.1f"|format(threat.severity.score) }}) |
{% set rs = threat.risk_signals if threat.risk_signals is defined else {} %}
{% if rs.get('cve_match') %}CVE{% endif %}
{% if rs.get('cwe_high_risk') %}CWE⚠{% endif %}
{% if rs.get('network_exposed') %}NET{% endif %}
{% if not rs.get('d3fend_mitigations') %}⛔D3F{% else %}D3F{% endif %}
|
{% if threat.capecs %}
|
|
|
|
|
|
|
{% set soc = threat.soc_analysis if threat.soc_analysis is defined else none %}
{% if soc %}
🔍 {{ soc.detectability | upper }}
{% if soc.missing_logs %}
Missing logs ({{ soc.missing_logs | length }})
SIEM rules ({{ soc.siem_rules | length }}){% for rule in soc.siem_rules %}
{{ rule.title }}
{% endfor %}
{{ rule.logic }}
IOCs ({{ soc.iocs | length }})
|