Skip to content

Commit 7de85c4

Browse files
author
Emmanuel Iturbide
committed
Add Endpoint capability to Wazuh 4.8 exporter
1 parent 4a3ee14 commit 7de85c4

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

dojo/tools/wazuh/v4_8.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
from dojo.models import Finding
1+
from django.conf import settings
22

3+
from dojo.models import Endpoint, Finding
4+
from dojo.tools.locations import LocationData
35

46
class WazuhV4_8:
57
def parse_findings(self, test, data):
@@ -17,10 +19,8 @@ def parse_findings(self, test, data):
1719
continue # Skip if this finding has already been processed
1820

1921
description = vuln.get("description")
20-
description += "\nAgent id:" + item.get("agent").get("id")
21-
description += "\nAgent name:" + item.get("agent").get("name")
2222
severity = vuln.get("severity")
23-
cvssv3_score = vuln.get("score").get("base")
23+
cvssv3_score = vuln.get("score").get("base") if vuln.get("score") else None
2424
publish_date = vuln.get("published_at").split("T")[0]
2525
detection_time = vuln.get("detected_at").split("T")[0]
2626
references = vuln.get("reference")
@@ -56,7 +56,17 @@ def parse_findings(self, test, data):
5656
unique_id_from_tool=dupe_key,
5757
date=detection_time,
5858
)
59+
60+
# Create endpoint from agent name
61+
agent_name = item.get("agent").get("name", None)
62+
63+
if settings.V3_FEATURE_LOCATIONS:
64+
find.unsaved_locations = [LocationData.url(host=agent_name)]
65+
else:
66+
find.unsaved_endpoints = [Endpoint(host=agent_name)]
67+
5968
find.unsaved_vulnerability_ids = [cve]
6069
dupes[dupe_key] = find
6170

6271
return list(dupes.values())
72+

unittests/tools/test_wazuh_parser.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,19 @@ def test_parse_wazuh_abnormal_severity(self):
6565
findings = parser.get_findings(testfile, Test())
6666
for finding in findings:
6767
self.assertEqual("Info", finding.severity)
68+
69+
def test_parse_v4_8_many_findings_with_location(self):
70+
with (get_unit_tests_scans_path("wazuh") / "v4-8_many_findings.json").open(encoding="utf-8") as testfile:
71+
parser = WazuhParser()
72+
findings = parser.get_findings(testfile, Test())
73+
finding = findings[0]
74+
self.assertEqual(10, len(findings))
75+
self.validate_locations(findings)
76+
self.assertEqual("CVE-2025-27558 affects (version: 6.8.0-60.63)", findings[0].title)
77+
self.assertEqual("Critical", findings[0].severity)
78+
self.assertEqual(9.1, findings[0].cvssv3_score)
79+
location = self.get_unsaved_locations(finding)[0]
80+
self.assertEqual("myhost0", location.host)
81+
self.assertEqual("linux-image-6.8.0-60-generic", finding.component_name)
82+
self.assertEqual("6.8.0-60.63", finding.component_version)
83+
self.assertEqual("2025-06-30", finding.date)

0 commit comments

Comments
 (0)