From 3df11bdcc78b04f3a140ccb48839c05cd3d31a90 Mon Sep 17 00:00:00 2001 From: Julia Date: Mon, 25 Mar 2024 16:29:30 +0100 Subject: [PATCH] fix: fix parser for non packages vulnerabilities --- .../end_to_end/vulnerability_detector.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/end_to_end/vulnerability_detector.py b/deps/wazuh_testing/wazuh_testing/end_to_end/vulnerability_detector.py index 675a0c9bf6..bdbae26990 100644 --- a/deps/wazuh_testing/wazuh_testing/end_to_end/vulnerability_detector.py +++ b/deps/wazuh_testing/wazuh_testing/end_to_end/vulnerability_detector.py @@ -259,8 +259,8 @@ def check_vuln_state_consistency(vulnerabilities_alerts, vulnerabilities_states) if vulnerabilities_states.keys() != vulnerabilities_alerts.keys(): logging.critical("The number of agents is not the same between alerts and states") - agents_in_alerts_states = [agent for agent in vulnerabilities_states.keys() \ - if agent in vulnerabilities_alerts.keys()] + agents_in_alerts_states = [agent for agent in vulnerabilities_states.keys() + if agent in vulnerabilities_alerts.keys()] alerts_not_in_states = [] states_not_in_alerts = [] @@ -305,14 +305,19 @@ def get_vulnerabilities_from_states(vulnerabilities_states: List) -> List: try: vulnerability = Vulnerability( cve=state_vulnerability['_source']['vulnerability']['id'], - package_name=state_vulnerability['_source']['package']['name'], - package_version=state_vulnerability['_source']['package']['version'], - type=state_vulnerability['_source']['pacakge']['type'] if 'type' in state_vulnerability['_source']['vulnerability'] else None, - architecture=state_vulnerability['_source']['package']['architecture'] if 'architecture' in state_vulnerability['_source']['vulnerability'] else None + package_name=(state_vulnerability['_source']['package']['name'] + if 'package' in state_vulnerability['_source'] else None), + package_version=(state_vulnerability['_source']['package']['version'] + if 'package' in state_vulnerability['_source'] else None), + type=(state_vulnerability['_source']['pacakge']['type'] + if 'type' in state_vulnerability['_source']['vulnerability'] else None), + architecture=(state_vulnerability['_source']['package']['architecture'] + if 'architecture' in state_vulnerability['_source']['vulnerability'] else None) ) vulnerabilities.append(vulnerability) except KeyError: logging.error(f"Error parsing vulnerability: {state_vulnerability}") + raise KeyError vulnerabilities = sorted(vulnerabilities, key=lambda x: (x.cve, x.package_name, x.package_version, x.architecture))