Skip to content

Commit 2800d6a

Browse files
authored
Add support for severity range (#1179)
Signed-off-by: ziadhany <[email protected]>
1 parent eec05bb commit 2800d6a

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

vulnerabilities/templates/vulnerability_details.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@
8181
<td class="two-col-right wrap-strings">{{ vulnerability.summary }}
8282
</td>
8383
</tr>
84+
{% if severity_score_range %}
85+
<tr>
86+
<td class="two-col-left">Severity score range</td>
87+
<td class="two-col-right">{{ severity_score_range }}
88+
</td>
89+
{% endif %}
90+
</tr>
8491
</tbody>
8592
</table>
8693
</div>

vulnerabilities/utils.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,3 +502,30 @@ def is_vulnerable_nginx_version(version, affected_version_range, fixed_versions)
502502
return False
503503
return True
504504
return False
505+
506+
507+
def get_severity_range(severity_list):
508+
"""
509+
>>> get_severity_range({'LOW','7.5','5'})
510+
'0.1 - 7.5'
511+
>>> get_severity_range({'LOW','Medium'})
512+
'0.1 - 6.9'
513+
>>> get_severity_range({'9.5','critical'})
514+
'9.0 - 10.0'
515+
"""
516+
if len(severity_list) > 1:
517+
score_map = {
518+
"low": [0.1, 3],
519+
"moderate": [4.0, 6.9],
520+
"medium": [4.0, 6.9],
521+
"high": [7.0, 8.9],
522+
"critical": [9.0, 10.0],
523+
}
524+
525+
score_list = []
526+
for score in severity_list:
527+
try:
528+
score_list.append(float(score))
529+
except ValueError:
530+
score_list.extend(score_map[score.lower()])
531+
return f"{min(score_list)} - {max(score_list)}"

vulnerabilities/views.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from vulnerabilities.forms import PackageSearchForm
2525
from vulnerabilities.forms import VulnerabilitySearchForm
2626
from vulnerabilities.models import Weakness
27+
from vulnerabilities.utils import get_severity_range
2728
from vulnerablecode.settings import env
2829

2930
PAGE_SIZE = 20
@@ -125,6 +126,9 @@ def get_context_data(self, **kwargs):
125126
"vulnerability": self.object,
126127
"vulnerability_search_form": VulnerabilitySearchForm(self.request.GET),
127128
"severities": list(self.object.severities),
129+
"severity_score_range": get_severity_range(
130+
{s.value for s in self.object.severities}
131+
),
128132
"references": self.object.references.all(),
129133
"aliases": self.object.aliases.all(),
130134
"affected_packages": self.object.affected_packages.all(),

0 commit comments

Comments
 (0)