diff --git a/vulnerabilities/templates/advisory_detail.html b/vulnerabilities/templates/advisory_detail.html index fea5afde4..a8478645d 100644 --- a/vulnerabilities/templates/advisory_detail.html +++ b/vulnerabilities/templates/advisory_detail.html @@ -4,6 +4,7 @@ {% load static %} {% load show_cvss %} {% load url_filters %} +{% load diff_advisory_history %} {% block title %} VulnerableCode Advisory Details - {{ advisory.advisory_id }} @@ -23,6 +24,13 @@ + {% if is_snapshot %} +
| Data source | -{{ exploit.data_source }} | -
|---|
| Data source | +{{ exploit.data_source }} | +
|---|---|
| - - Date added - - | -{{ exploit.date_added }} | -
| - - Description - - | -{{ exploit.description }} | -
| - + + Date added + + | +{{ exploit.date_added }} | +
| + + Description + + | +{{ exploit.description }} | +
| + - Required action - - | -{{ exploit.required_action }} | -
| - {{ exploit.required_action }} | +|
| + - Due date - - | -{{ exploit.due_date }} | -
| - {{ exploit.due_date }} | +|
| + - Note - - | -{{ exploit.notes }} |
-
| - - Ransomware campaign use - - | -{{ exploit.known_ransomware_campaign_use|yesno:"Known,Unknown" }} | -
| - - Source publication date - - | -{{ exploit.source_date_published }} | -
| - - Exploit type - - | -{{ exploit.exploit_type }} | -
| - - Platform - - | -{{ exploit.platform }} | -
| - - Source update date - - | -{{ exploit.source_date_updated }} | -{{ exploit.notes }} |
+
+ {% endif %}
+ {% if exploit.known_ransomware_campaign_use is not None %}
+
| + + Ransomware campaign use + + | +{{ exploit.known_ransomware_campaign_use|yesno:"Known,Unknown" }} | +
| + + Source publication date + + | +{{ exploit.source_date_published }} | +
| + + Exploit type + + | +{{ exploit.exploit_type }} | +
| + + Platform + + | +{{ exploit.platform }} | +
| + + Source update date + + | +{{ exploit.source_date_updated }} | +
| - - Source URL - - | -{{ exploit.source_url }} | -
| - - Percentile - - | -{{ epss_data.percentile }} | -
| - - EPSS Score - - | -{{ epss_data.score }} | -
| - - Published At - - | -{{ epss_data.published_at }} | -
| - - Source - - | -{{ epss_data.source }} | -
| - - Advisory - - | -{{ epss_data.advisory.avid }} | -
| + + Percentile + + | +{{ epss_data.percentile }} | +
| + + EPSS Score + + | +{{ epss_data.score }} | +
| + + Published At + + | +{{ epss_data.published_at }} | +
| + + Source + + | +{{ epss_data.source }} | +
| + + Advisory + + | +{{ epss_data.advisory.avid }} | +
No EPSS data available for this advisory.
+No EPSS data available for this advisory.
{% endif %}| Exploitability (E) | -Access Vector (AV) | -Access Complexity (AC) | -Authentication (Au) | -Confidentiality Impact (C) | -Integrity Impact (I) | -Availability Impact (A) | -
|---|---|---|---|---|---|---|
| {{ severity_vector.vector.exploitability|cvss_printer:"high,functional,unproven,proof_of_concept,not_defined" }} | -{{ severity_vector.vector.accessVector|cvss_printer:"local,adjacent_network,network" }} | -{{ severity_vector.vector.accessComplexity|cvss_printer:"high,medium,low" }} | -{{ severity_vector.vector.authentication|cvss_printer:"multiple,single,none" }} | -{{ severity_vector.vector.confidentialityImpact|cvss_printer:"none,partial,complete" }} | -{{ severity_vector.vector.integrityImpact|cvss_printer:"none,partial,complete" }} | -{{ severity_vector.vector.availabilityImpact|cvss_printer:"none,partial,complete" }} | -
| Attack Vector (AV) | -Attack Complexity (AC) | -Privileges Required (PR) | -User Interaction (UI) | -Scope (S) | -Confidentiality Impact (C) | -Integrity Impact (I) | -Availability Impact (A) | -
|---|---|---|---|---|---|---|---|
| {{ severity_vector.vector.attackVector|cvss_printer:"network,adjacent_network,local,physical"}} | -{{ severity_vector.vector.attackComplexity|cvss_printer:"low,high" }} | -{{ severity_vector.vector.privilegesRequired|cvss_printer:"none,low,high" }} | -{{ severity_vector.vector.userInteraction|cvss_printer:"none,required"}} | -{{ severity_vector.vector.scope|cvss_printer:"unchanged,changed" }} | -{{ severity_vector.vector.confidentialityImpact|cvss_printer:"high,low,none" }} | -{{ severity_vector.vector.integrityImpact|cvss_printer:"high,low,none" }} | -{{ severity_vector.vector.availabilityImpact|cvss_printer:"high,low,none" }} | -
| Attack Vector (AV) | -Attack Complexity (AC) | -Attack Requirements (AT) | -Privileges Required (PR) | -User Interaction (UI) | - -Vulnerable System Impact Confidentiality (VC) | -Vulnerable System Impact Integrity (VI) | -Vulnerable System Impact Availability (VA) | - -Subsequent System Impact Confidentiality (SC) | -Subsequent System Impact Integrity (SI) | -Subsequent System Impact Availability (SA) | -
|---|---|---|---|---|---|---|---|---|---|---|
| {{ severity_vector.vector.attackVector|cvss_printer:"network,adjacent,local,physical"}} | -{{ severity_vector.vector.attackComplexity|cvss_printer:"low,high" }} | -{{ severity_vector.vector.attackRequirement|cvss_printer:"none,present" }} | -{{ severity_vector.vector.privilegesRequired|cvss_printer:"none,low,high" }} | -{{ severity_vector.vector.userInteraction|cvss_printer:"none,passive,active"}} | - -{{ severity_vector.vector.vulnerableSystemImpactConfidentiality|cvss_printer:"high,low,none" }} | -{{ severity_vector.vector.vulnerableSystemImpactIntegrity|cvss_printer:"high,low,none" }} | -{{ severity_vector.vector.vulnerableSystemImpactAvailability|cvss_printer:"high,low,none" }} | - -{{ severity_vector.vector.subsequentSystemImpactConfidentiality|cvss_printer:"high,low,none" }} | -{{ severity_vector.vector.subsequentSystemImpactIntegrity|cvss_printer:"high,low,none" }} | -{{ severity_vector.vector.subsequentSystemImpactAvailability|cvss_printer:"high,low,none" }} | -
| Exploitability (E) | +Access Vector (AV) | +Access Complexity (AC) | +Authentication (Au) | +Confidentiality Impact (C) | +Integrity Impact (I) | +Availability Impact (A) | +
|---|---|---|---|---|---|---|
| {{ severity_vector.vector.exploitability|cvss_printer:"high,functional,unproven,proof_of_concept,not_defined" }} | +{{ severity_vector.vector.accessVector|cvss_printer:"local,adjacent_network,network" }} | +{{ severity_vector.vector.accessComplexity|cvss_printer:"high,medium,low" }} | +{{ severity_vector.vector.authentication|cvss_printer:"multiple,single,none" }} | +{{ severity_vector.vector.confidentialityImpact|cvss_printer:"none,partial,complete" }} | +{{ severity_vector.vector.integrityImpact|cvss_printer:"none,partial,complete" }} | +{{ severity_vector.vector.availabilityImpact|cvss_printer:"none,partial,complete" }} | +
| Attack Vector (AV) | +Attack Complexity (AC) | +Privileges Required (PR) | +User Interaction (UI) | +Scope (S) | +Confidentiality Impact (C) | +Integrity Impact (I) | +Availability Impact (A) | +
|---|---|---|---|---|---|---|---|
| {{ severity_vector.vector.attackVector|cvss_printer:"network,adjacent_network,local,physical"}} | +{{ severity_vector.vector.attackComplexity|cvss_printer:"low,high" }} | +{{ severity_vector.vector.privilegesRequired|cvss_printer:"none,low,high" }} | +{{ severity_vector.vector.userInteraction|cvss_printer:"none,required"}} | +{{ severity_vector.vector.scope|cvss_printer:"unchanged,changed" }} | +{{ severity_vector.vector.confidentialityImpact|cvss_printer:"high,low,none" }} | +{{ severity_vector.vector.integrityImpact|cvss_printer:"high,low,none" }} | +{{ severity_vector.vector.availabilityImpact|cvss_printer:"high,low,none" }} | +
| Attack Vector (AV) | +Attack Complexity (AC) | +Attack Requirements (AT) | +Privileges Required (PR) | +User Interaction (UI) | + +Vulnerable System Impact Confidentiality (VC) | +Vulnerable System Impact Integrity (VI) | +Vulnerable System Impact Availability (VA) | + +Subsequent System Impact Confidentiality (SC) | +Subsequent System Impact Integrity (SI) | +Subsequent System Impact Availability (SA) | +
|---|---|---|---|---|---|---|---|---|---|---|
| {{ severity_vector.vector.attackVector|cvss_printer:"network,adjacent,local,physical"}} | +{{ severity_vector.vector.attackComplexity|cvss_printer:"low,high" }} | +{{ severity_vector.vector.attackRequirement|cvss_printer:"none,present" }} | +{{ severity_vector.vector.privilegesRequired|cvss_printer:"none,low,high" }} | +{{ severity_vector.vector.userInteraction|cvss_printer:"none,passive,active"}} | + +{{ severity_vector.vector.vulnerableSystemImpactConfidentiality|cvss_printer:"high,low,none" }} | +{{ severity_vector.vector.vulnerableSystemImpactIntegrity|cvss_printer:"high,low,none" }} | +{{ severity_vector.vector.vulnerableSystemImpactAvailability|cvss_printer:"high,low,none" }} | + +{{ severity_vector.vector.subsequentSystemImpactConfidentiality|cvss_printer:"high,low,none" }} | +{{ severity_vector.vector.subsequentSystemImpactIntegrity|cvss_printer:"high,low,none" }} | +{{ severity_vector.vector.subsequentSystemImpactAvailability|cvss_printer:"high,low,none" }} | +
- Vector: {{ ssvc.vector }} -
-- Decision: {{ ssvc.decision }} -
+ {% for ssvc in ssvcs %} ++ Vector: {{ ssvc.vector }} +
++ Decision: {{ ssvc.decision }} +
- Source URL: - - {{ ssvc.advisory_url }} - - + Source URL: + + {{ ssvc.advisory_url }} + +
- Source Advisory: - - {{ ssvc.advisory.avid }} - - + Source Advisory: + + {{ ssvc.advisory.avid }} + +
-{{ ssvc.options|pprint }}
- There are no SSVC decisions available.
+There are no SSVC decisions available.
{% endif %} -| Date Collected | +Changes in this version | +Snapshot | +
|---|---|---|
| + {{ entry.date_collected|date:"Y-m-d H:i" }} UTC + {% if entry.is_latest %} + Latest + {% endif %} + | +
+ {% if entry.is_initial %}
+ Oldest version collected
+ {% elif entry.diff %}
+ {% with formatted_diff=entry.diff|format_diff_for_ui %}
+
+ {% for field, change in formatted_diff.items %}
+
+ Show more ▾
+ {% endwith %}
+ {% endif %}
+
+ {{ field }}:
+ {% if field == 'Summary' %}
+ Summary was changed
+ {% elif 'old' in change or 'new' in change %}
+
+ {% endfor %}
+
+ {{
+ change.old }}
+ →
+ {{
+ change.new }}
+
+ {% else %}
+
+ {% for item in change.added %}
+
+ {% endif %}
+
+ + Added {% if item.attributes %}{{ item.header }} with
+{% for key, value in item.attributes %} {{ key }} {{ value }}{% if not forloop.last %}
+{% endif %}{% endfor %}{% else %}{{ item }}{% endif %}
+
+ {% endfor %}
+ {% for item in change.removed %}
+
+ − Removed {% if item.attributes %}{{ item.header }} with
+{% for key, value in item.attributes %} {{ key }} {{ value }}{% if not forloop.last %}
+{% endif %}{% endfor %}{% else %}{{ item }}{% endif %}
+
+ {% endfor %}
+ |
+ + {% if not entry.is_latest %} + + View + + {% else %} + - + {% endif %} + | +
| No historical versions available. | +||