Skip to content

Commit 698ea04

Browse files
authored
Merge pull request #51 from manuel-sommer/advance_priority_publicexploit
🎉 Improve priority calculation #50
2 parents ab3121c + 5b4fa0b commit 698ea04

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

sploitscan/metrics.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,22 @@ def calculate_priority(
106106
if not (cvss_score or epss_score or in_cisa_kev or has_public_exploits):
107107
return None
108108

109-
if in_cisa_kev or has_public_exploits:
110-
return "A+"
111-
if cvss_score >= CVSS_THRESHOLD and epss_score >= EPSS_THRESHOLD:
112-
return "A"
113-
if cvss_score >= CVSS_THRESHOLD:
114-
return "B"
115-
if epss_score >= EPSS_THRESHOLD:
116-
return "C"
117-
return "D"
109+
if in_cisa_kev:
110+
base_grade = "A+"
111+
elif cvss_score >= CVSS_THRESHOLD and epss_score >= EPSS_THRESHOLD:
112+
base_grade = "A"
113+
elif cvss_score >= CVSS_THRESHOLD:
114+
base_grade = "B"
115+
elif epss_score >= EPSS_THRESHOLD:
116+
base_grade = "C"
117+
else:
118+
base_grade = "D"
119+
120+
# Grade escalation if public exploit is known
121+
if has_public_exploits and base_grade != "A+":
122+
grade_order = ["D", "C", "B", "A", "A+"]
123+
current_index = grade_order.index(base_grade)
124+
new_index = min(current_index + 2, len(grade_order) - 1)
125+
return grade_order[new_index]
126+
127+
return base_grade

0 commit comments

Comments
 (0)