Skip to content

Commit 9240073

Browse files
committed
🐛 fix severity order of trivy #13647
1 parent b58fc33 commit 9240073

1 file changed

Lines changed: 21 additions & 17 deletions

File tree

dojo/tools/trivy/parser.py

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -255,26 +255,30 @@ def get_result_items(self, test, results, service_name=None, artifact_name=""):
255255
cvssclass = None
256256
cvssv3 = None
257257
cvssv3_score = None
258-
# Iterate over the possible severity sources tom find the first match
259-
for severity_source in [detected_severity_source, *CVSS_SEVERITY_SOURCES]:
260-
cvssclass = cvss.get(severity_source, None)
258+
# Use severity field if present, otherwise fallback to CVSS
259+
if vuln.get("Severity"):
260+
severity = TRIVY_SEVERITIES[vuln["Severity"]]
261+
else:
262+
# Iterate over the possible severity sources to find the first match
263+
for severity_source in [detected_severity_source, *CVSS_SEVERITY_SOURCES]:
264+
cvssclass = cvss.get(severity_source, None)
265+
if cvssclass is not None:
266+
break
267+
# Parse the CVSS class if it is not None
261268
if cvssclass is not None:
262-
break
263-
# Parse the CVSS class if it is not None
264-
if cvssclass is not None:
265-
if cvss_data := parse_cvss_data(cvssclass.get("V3Vector", "")):
266-
cvssv3 = cvss_data.get("cvssv3")
267-
cvssv3_score = cvss_data.get("cvssv3_score")
268-
severity = cvss_data.get("severity")
269-
elif (cvss_v3_score := cvssclass.get("V3Score")) is not None:
270-
cvssv3_score = cvss_v3_score
271-
severity = self.convert_cvss_score(cvss_v3_score)
272-
elif (cvss_v2_score := cvssclass.get("V2Score")) is not None:
273-
severity = self.convert_cvss_score(cvss_v2_score)
269+
if cvss_data := parse_cvss_data(cvssclass.get("V3Vector", "")):
270+
cvssv3 = cvss_data.get("cvssv3")
271+
cvssv3_score = cvss_data.get("cvssv3_score")
272+
severity = cvss_data.get("severity")
273+
elif (cvss_v3_score := cvssclass.get("V3Score")) is not None:
274+
cvssv3_score = cvss_v3_score
275+
severity = self.convert_cvss_score(cvss_v3_score)
276+
elif (cvss_v2_score := cvssclass.get("V2Score")) is not None:
277+
severity = self.convert_cvss_score(cvss_v2_score)
278+
else:
279+
severity = self.convert_cvss_score(None)
274280
else:
275281
severity = self.convert_cvss_score(None)
276-
else:
277-
severity = TRIVY_SEVERITIES[vuln["Severity"]]
278282
if target_class in {"os-pkgs", "lang-pkgs"}:
279283
file_path = vuln.get("PkgPath")
280284
if file_path is None:

0 commit comments

Comments
 (0)