Skip to content

Commit 64e1754

Browse files
🎉 Add fix_available to Trivy (#13057)
* 🎉 Add fix_available to Trivy * review
1 parent 19fa2c2 commit 64e1754

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

docs/content/en/connecting_your_tools/parsers/file/trivy.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ By default, DefectDojo identifies duplicate Findings using these [hashcode field
3232
- vulnerability ids
3333
- cwe
3434
- description
35+
36+
### Field fix_available
37+
In case a mitigation is available, then field 'fix_available' is set to True.

dojo/tools/trivy/parser.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,9 @@ def get_result_items(self, test, results, service_name=None, artifact_name=""):
289289
package_version = vuln.get("InstalledVersion", "")
290290
references = "\n".join(vuln.get("References", []))
291291
mitigation = vuln.get("FixedVersion", "")
292+
fix_available = True
293+
if mitigation == "":
294+
fix_available = False
292295
impact = vuln.get("Status", "")
293296
status_fields = self.convert_trivy_status(vuln.get("Status", ""))
294297
cwe = int(vuln["CweIDs"][0].split("-")[1]) if len(vuln.get("CweIDs", [])) > 0 else 0
@@ -317,6 +320,7 @@ def get_result_items(self, test, results, service_name=None, artifact_name=""):
317320
cvssv3_score=cvssv3_score,
318321
static_finding=True,
319322
dynamic_finding=False,
323+
fix_available=fix_available,
320324
tags=[vul_type, target_class],
321325
service=service_name,
322326
**status_fields,
@@ -370,6 +374,7 @@ def get_result_items(self, test, results, service_name=None, artifact_name=""):
370374
references=references,
371375
description=description,
372376
mitigation=misc_resolution,
377+
fix_available=True,
373378
static_finding=True,
374379
dynamic_finding=False,
375380
tags=[target_type, target_class],
@@ -402,6 +407,7 @@ def get_result_items(self, test, results, service_name=None, artifact_name=""):
402407
line=secret_start_line,
403408
static_finding=True,
404409
dynamic_finding=False,
410+
fix_available=True,
405411
tags=[target_class],
406412
service=service_name,
407413
)
@@ -435,6 +441,7 @@ def get_result_items(self, test, results, service_name=None, artifact_name=""):
435441
url=license_link,
436442
static_finding=True,
437443
dynamic_finding=False,
444+
fix_available=True,
438445
tags=[target_class],
439446
service=service_name,
440447
)

unittests/tools/test_trivy_parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def test_scheme_2_many_vulns(self):
7171
self.assertEqual("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", finding.cvssv3)
7272
self.assertTrue(finding.static_finding)
7373
self.assertFalse(finding.dynamic_finding)
74+
self.assertTrue(finding.fix_available)
7475

7576
def test_misconfigurations_and_secrets(self):
7677
with sample_path("misconfigurations_and_secrets.json").open(encoding="utf-8") as test_file:

0 commit comments

Comments
 (0)