devsecops-engine-tools 1.60.0__py3-none-any.whl → 1.61.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of devsecops-engine-tools might be problematic. Click here for more details.

Files changed (19) hide show
  1. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/context_iac.py +2 -1
  2. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py +4 -5
  3. devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +14 -12
  4. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py +11 -8
  5. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +230 -206
  6. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_tool.py +143 -93
  7. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/kubescape_tool.py +80 -65
  8. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/context_container.py +2 -1
  9. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +7 -2
  10. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +53 -52
  11. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +3 -3
  12. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +50 -31
  13. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +9 -5
  14. devsecops_engine_tools/version.py +1 -1
  15. {devsecops_engine_tools-1.60.0.dist-info → devsecops_engine_tools-1.61.0.dist-info}/METADATA +1 -1
  16. {devsecops_engine_tools-1.60.0.dist-info → devsecops_engine_tools-1.61.0.dist-info}/RECORD +19 -19
  17. {devsecops_engine_tools-1.60.0.dist-info → devsecops_engine_tools-1.61.0.dist-info}/WHEEL +0 -0
  18. {devsecops_engine_tools-1.60.0.dist-info → devsecops_engine_tools-1.61.0.dist-info}/entry_points.txt +0 -0
  19. {devsecops_engine_tools-1.60.0.dist-info → devsecops_engine_tools-1.61.0.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,6 @@
1
1
  from dataclasses import dataclass
2
2
 
3
+
3
4
  @dataclass
4
5
  class ContextIac:
5
6
  id: str
@@ -10,4 +11,4 @@ class ContextIac:
10
11
  resource: str
11
12
  description: str
12
13
  module: str
13
- tool: str
14
+ tool: str
@@ -1,12 +1,11 @@
1
1
  from abc import ABCMeta, abstractmethod
2
2
 
3
+
3
4
  class ToolGateway(metaclass=ABCMeta):
4
5
  @abstractmethod
5
6
  def run_tool(self, config_tool, folders_to_scan, **kwargs):
6
7
  "run_tool"
7
8
 
8
- @classmethod
9
- def get_iac_context_from_results(
10
- self, path_file_results
11
- ) -> None:
12
- "get_iac_context_from_results"
9
+ @abstractmethod
10
+ def get_iac_context_from_results(self, path_file_results) -> None:
11
+ "get_iac_context_from_results"
@@ -28,14 +28,18 @@ class IacScan:
28
28
 
29
29
  def process(self, dict_args, secret_tool, tool, env):
30
30
  config_tool_iac = self.remote_config_source_gateway.get_remote_config(
31
- dict_args["remote_config_repo"], "engine_sast/engine_iac/ConfigTool.json", dict_args["remote_config_branch"]
31
+ dict_args["remote_config_repo"],
32
+ "engine_sast/engine_iac/ConfigTool.json",
33
+ dict_args["remote_config_branch"],
32
34
  )
33
35
 
34
36
  exclusions = self.remote_config_source_gateway.get_remote_config(
35
- dict_args["remote_config_repo"], "engine_sast/engine_iac/Exclusions.json", dict_args["remote_config_branch"]
37
+ dict_args["remote_config_repo"],
38
+ "engine_sast/engine_iac/Exclusions.json",
39
+ dict_args["remote_config_branch"],
36
40
  )
37
41
 
38
- config_tool_core, folders_to_scan, skip_tool = self.complete_config_tool(
42
+ config_tool_core, folders_to_scan, skip_tool = self._complete_config_tool(
39
43
  config_tool_iac, exclusions, tool, dict_args
40
44
  )
41
45
 
@@ -55,12 +59,10 @@ class IacScan:
55
59
  print("Tool skipped by DevSecOps policy")
56
60
  dict_args["send_metrics"] = "false"
57
61
  dict_args["use_vulnerability_management"] = "false"
58
-
62
+
59
63
  if dict_args.get("context") == "true":
60
- self.tool_gateway.get_iac_context_from_results(
61
- path_file_results
62
- )
63
-
64
+ self.tool_gateway.get_iac_context_from_results(path_file_results)
65
+
64
66
  totalized_exclusions = []
65
67
  (
66
68
  totalized_exclusions.extend(
@@ -96,7 +98,7 @@ class IacScan:
96
98
 
97
99
  return findings_list, input_core
98
100
 
99
- def complete_config_tool(self, data_file_tool, exclusions, tool, dict_args):
101
+ def _complete_config_tool(self, data_file_tool, exclusions, tool, dict_args):
100
102
  config_tool = ConfigTool(json_data=data_file_tool)
101
103
 
102
104
  config_tool.exclusions = exclusions
@@ -138,7 +140,7 @@ class IacScan:
138
140
 
139
141
  folders_to_scan = [dict_args["folder_path"]]
140
142
  else:
141
- folders_to_scan = self.search_folders(config_tool.search_pattern)
143
+ folders_to_scan = self._search_folders(config_tool.search_pattern)
142
144
 
143
145
  if len(folders_to_scan) == 0:
144
146
  logger.warning(
@@ -148,7 +150,7 @@ class IacScan:
148
150
 
149
151
  return config_tool, folders_to_scan, skip_tool
150
152
 
151
- def search_folders(self, search_pattern):
153
+ def _search_folders(self, search_pattern):
152
154
  current_directory = os.getcwd()
153
155
  patron = "(?i).*?(" + "|".join(search_pattern) + ").*$"
154
156
  folders = [
@@ -161,4 +163,4 @@ class IacScan:
161
163
  for folder in folders
162
164
  if re.match(patron, folder)
163
165
  ]
164
- return matching_folders
166
+ return matching_folders
@@ -5,6 +5,7 @@ from devsecops_engine_tools.engine_core.src.domain.model.finding import (
5
5
  from datetime import datetime
6
6
  from dataclasses import dataclass
7
7
 
8
+
8
9
  @dataclass
9
10
  class CheckovDeserealizator:
10
11
  @classmethod
@@ -16,20 +17,24 @@ class CheckovDeserealizator:
16
17
  for result in results_scan_list:
17
18
  if "failed_checks" in str(result):
18
19
  for scan in result["results"]["failed_checks"]:
19
- check_id = scan.get("check_id")
20
+ check_id = scan.get("check_id")
20
21
  if not rules.get(check_id):
21
22
  description = scan.get("check_name")
22
23
  severity = default_severity.lower()
23
24
  category = default_category.lower()
24
25
  else:
25
- description = rules[check_id].get("checkID", scan.get("check_name"))
26
+ description = rules[check_id].get(
27
+ "checkID", scan.get("check_name")
28
+ )
26
29
  severity = rules[check_id].get("severity").lower()
27
30
  category = rules[check_id].get("category").lower()
28
31
 
29
32
  finding_open = Finding(
30
33
  id=check_id,
31
34
  cvss=None,
32
- where=scan.get("repo_file_path") + ": " + str(scan.get("resource")),
35
+ where=scan.get("repo_file_path")
36
+ + ": "
37
+ + str(scan.get("resource")),
33
38
  description=description,
34
39
  severity=severity,
35
40
  identification_date=datetime.now().strftime("%d%m%Y"),
@@ -37,10 +42,8 @@ class CheckovDeserealizator:
37
42
  module="engine_iac",
38
43
  category=Category(category),
39
44
  requirements=scan.get("guideline"),
40
- tool="Checkov"
45
+ tool="Checkov",
41
46
  )
42
- list_open_findings.append(finding_open)
43
-
47
+ list_open_findings.append(finding_open)
48
+
44
49
  return list_open_findings
45
-
46
-