Skip to content

Commit df15144

Browse files
fix aqua parser #10585 (#10725)
* fix aqua parser #10585 * unittest and ruff * more ruff * fix according to review * fix according to review
1 parent a904774 commit df15144

2 files changed

Lines changed: 38 additions & 2 deletions

File tree

dojo/tools/aqua/parser.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,29 @@ def vulnerability_tree(self, vulnerabilitytree, test):
3838
for node in vulnerabilitytree:
3939
resource = node.get("resource")
4040
vulnerabilities = node.get("vulnerabilities", [])
41+
sensitive_items = resource.get("sensitive_items", [])
4142
if vulnerabilities is None:
4243
vulnerabilities = []
4344
for vuln in vulnerabilities:
4445
item = get_item(resource, vuln, test)
4546
unique_key = resource.get("cpe") + vuln.get("name", "None") + resource.get("path", "None")
4647
self.items[unique_key] = item
48+
if sensitive_items is None:
49+
sensitive_items = []
50+
for sensitive_item in sensitive_items:
51+
item = get_item_sensitive_data(resource, sensitive_item, test)
52+
unique_key = resource.get("cpe") + resource.get("path", "None") + str(sensitive_item)
53+
self.items[unique_key] = item
4754

4855

4956
def get_item(resource, vuln, test):
5057
resource_name = resource.get("name", resource.get("path"))
5158
resource_version = resource.get("version", "No version")
5259
vulnerability_id = vuln.get("name", "No CVE")
5360
fix_version = vuln.get("fix_version", "None")
54-
description = vuln.get("description", "No description.")
61+
description = vuln.get("description", "No description.") + "\n"
62+
if resource.get("path"):
63+
description += "**Path:** " + resource.get("path") + "\n"
5564
cvssv3 = None
5665

5766
url = ""
@@ -161,6 +170,32 @@ def get_item_v2(item, test):
161170
return finding
162171

163172

173+
def get_item_sensitive_data(resource, sensitive_item, test):
174+
resource_name = resource.get("name", "None")
175+
resource_path = resource.get("path", "None")
176+
vulnerability_id = resource_name
177+
description = "**Senstive Item:** " + sensitive_item + "\n"
178+
description += "**Layer:** " + resource.get("layer", "None") + "\n"
179+
description += "**Layer_Digest:** " + resource.get("layer_digest", "None") + "\n"
180+
description += "**Path:** " + resource.get("path", "None") + "\n"
181+
finding = Finding(
182+
title=vulnerability_id
183+
+ " - "
184+
+ resource_name
185+
+ " ("
186+
+ resource_path
187+
+ ") ",
188+
test=test,
189+
severity="Info",
190+
description=description.strip(),
191+
component_name=resource.get("name"),
192+
)
193+
if vulnerability_id != "No CVE":
194+
finding.unsaved_vulnerability_ids = [vulnerability_id]
195+
196+
return finding
197+
198+
164199
def aqua_severity_of(score):
165200
if score == "high":
166201
return "High"

unittests/tools/test_aqua_parser.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ def test_aqua_parser_aqua_devops_issue_10611(self):
102102
with open("unittests/scans/aqua/aqua_devops_issue_10611.json") as testfile:
103103
parser = AquaParser()
104104
findings = parser.get_findings(testfile, Test())
105-
self.assertEqual(98, len(findings))
105+
self.assertEqual(101, len(findings))
106+
self.assertEqual("server.key - server.key (/juice-shop/node_modules/node-gyp/test/fixtures/server.key) ", findings[83].title)
106107

107108
def test_aqua_parser_aqua_devops_empty(self):
108109
with open("unittests/scans/aqua/empty_aquadevops.json") as testfile:

0 commit comments

Comments
 (0)