Skip to content

Commit 44cbfec

Browse files
🎉 Add fix_available information to aqua parser #12633 (#13106)
1 parent 97d6434 commit 44cbfec

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

dojo/tools/aqua/parser.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,10 @@ def get_item(self, resource, vuln, test):
147147
resource_name = resource.get("name", resource.get("path"))
148148
resource_version = resource.get("version", "No version")
149149
vulnerability_id = vuln.get("name", "No CVE")
150-
fix_version = vuln.get("fix_version", "None")
150+
fix_available = False
151+
fix_version = vuln.get("fix_version", None)
152+
if fix_version is not None:
153+
fix_available = True
151154
description = vuln.get("description", "No description.") + "\n"
152155
if resource.get("path"):
153156
description += "**Path:** " + resource.get("path") + "\n"
@@ -222,6 +225,7 @@ def get_item(self, resource, vuln, test):
222225
component_name=resource.get("name"),
223226
component_version=resource.get("version"),
224227
impact=severity,
228+
fix_available=fix_available,
225229
)
226230

227231
cvss_data = parse_cvss_data(cvssv3)
@@ -244,7 +248,10 @@ def get_item_v2(self, item, test):
244248
severity = self.severity_of(float(item["score"]))
245249
description = item.get("description")
246250
solution = item.get("solution")
247-
fix_version = item.get("fix_version")
251+
fix_available = False
252+
fix_version = item.get("fix_version", None)
253+
if fix_version is not None:
254+
fix_available = True
248255
if solution:
249256
mitigation = solution
250257
elif fix_version:
@@ -260,6 +267,7 @@ def get_item_v2(self, item, test):
260267
severity=severity,
261268
impact=severity,
262269
mitigation=mitigation,
270+
fix_available=fix_available,
263271
)
264272
finding.unsaved_vulnerability_ids = [vulnerability_id]
265273
return finding

unittests/tools/test_aqua_parser.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def test_aqua_parser_has_one_finding(self):
2323
self.assertEqual("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", finding.cvssv3)
2424
self.assertEqual("musl libc through 1.1.23 has an x87 floating-point stack adjustment imbalance, related to the math/i386/ directory. In some cases, use of this library could introduce out-of-bounds writes that are not present in an application's source code.", finding.description)
2525
self.assertEqual("1.1.20-r5", finding.mitigation)
26+
self.assertEqual(True, finding.fix_available)
2627
self.assertEqual("\nhttps://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-14697", finding.references)
2728
self.assertEqual("musl", finding.component_name)
2829
self.assertEqual("1.1.20-r4", finding.component_version)
@@ -55,6 +56,7 @@ def test_aqua_parser_v2_has_one_finding(self):
5556
self.assertEqual("Medium", finding.severity)
5657
self.assertEqual("CURL before 7.68.0 lacks proper input validation, which allows users to create a `FILE:` URL that can make the client access a remote file using SMB (Windows-only issue).", finding.description)
5758
self.assertEqual("Upgrade to curl 7.68.0", finding.mitigation)
59+
self.assertEqual(True, finding.fix_available)
5860
self.assertEqual(1, len(finding.unsaved_vulnerability_ids))
5961
self.assertEqual("CVE-2019-15601", finding.unsaved_vulnerability_ids[0])
6062

0 commit comments

Comments
 (0)