devsecops-engine-tools 1.93.0__py3-none-any.whl → 1.94.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 (25) hide show
  1. devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +1 -1
  2. devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +1 -1
  3. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +1 -1
  4. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +1 -1
  5. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +2 -2
  6. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +10 -69
  7. devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +11 -0
  8. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py +1 -1
  9. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py +1 -1
  10. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py +1 -1
  11. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/trivy_tool/__init__.py +0 -0
  12. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +117 -0
  13. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py +1 -1
  14. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +0 -1
  15. devsecops_engine_tools/engine_utilities/trivy_utils/__init__.py +0 -0
  16. devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/__init__.py +0 -0
  17. devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/__init__.py +0 -0
  18. devsecops_engine_tools/{engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool → engine_utilities/trivy_utils/infrastructure/driven_adapters}/trivy_deserialize_output.py +3 -3
  19. devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/trivy_manager_scan_utils.py +73 -0
  20. devsecops_engine_tools/version.py +1 -1
  21. {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/METADATA +6 -2
  22. {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/RECORD +25 -19
  23. {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/WHEEL +0 -0
  24. {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/entry_points.txt +0 -0
  25. {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/top_level.txt +0 -0
@@ -231,7 +231,7 @@ def get_inputs_from_cli(args):
231
231
  "engine_iac": ["checkov", "kics", "kubescape"],
232
232
  "engine_secret": ["trufflehog", "gitleaks"],
233
233
  "engine_container": ["prisma", "trivy"],
234
- "engine_dependencies": ["xray", "dependency_check"],
234
+ "engine_dependencies": ["xray", "dependency_check", "trivy"],
235
235
  "engine_code": ["bearer"],
236
236
  "engine_dast": ["nuclei"],
237
237
  "engine_risk": None,
@@ -13,7 +13,7 @@ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.drive
13
13
  from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.driven_adapters.trivy_tool.trivy_manager_scan import (
14
14
  TrivyScan,
15
15
  )
16
- from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.driven_adapters.trivy_tool.trivy_deserialize_output import (
16
+ from devsecops_engine_tools.engine_utilities.trivy_utils.infrastructure.driven_adapters.trivy_deserialize_output import (
17
17
  TrivyDeserializator,
18
18
  )
19
19
 
@@ -7,7 +7,7 @@ from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.context
7
7
 
8
8
  class DeseralizatorGateway(metaclass=ABCMeta):
9
9
  @abstractmethod
10
- def get_list_findings(self, results_scan_list: list) -> "list[Finding]":
10
+ def get_list_findings(self, results_scan_list: str) -> "list[Finding]":
11
11
  "Deseralizator"
12
12
 
13
13
  @abstractmethod
@@ -133,7 +133,7 @@ class ContainerScaScan:
133
133
  if context_flag == "true":
134
134
  self.tool_deseralizator.get_container_context_from_results(image_scanned)
135
135
 
136
- return self.tool_deseralizator.get_list_findings(image_scanned)
136
+ return self.tool_deseralizator.get_list_findings(image_scanned, module="engine_container")
137
137
 
138
138
  def _get_image(self, image_to_scan):
139
139
  """
@@ -12,7 +12,7 @@ import json
12
12
 
13
13
  @dataclass
14
14
  class PrismaDeserealizator(DeseralizatorGateway):
15
- def get_list_findings(self, image_scanned) -> "list[Finding]":
15
+ def get_list_findings(self, image_scanned, module="engine_container") -> "list[Finding]":
16
16
  list_open_vulnerabilities = []
17
17
  SEVERITY_MAP = {
18
18
  "unimportant": "low",
@@ -55,7 +55,7 @@ class PrismaDeserealizator(DeseralizatorGateway):
55
55
  published_date_cve=vul.get("publishedDate", "").replace(
56
56
  "Z", "+00:00"
57
57
  ),
58
- module="engine_container",
58
+ module=module,
59
59
  category=Category.VULNERABILITY,
60
60
  requirements=vul.get("status", ""),
61
61
  tool="PrismaCloud",
@@ -1,66 +1,20 @@
1
1
  from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.tool_gateway import (
2
2
  ToolGateway,
3
3
  )
4
-
5
- import subprocess
6
- import platform
7
- import requests
8
- import tarfile
9
- import zipfile
10
- import json
11
-
12
- from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
13
- from devsecops_engine_tools.engine_utilities import settings
14
-
15
4
  from devsecops_engine_tools.engine_utilities.sbom.deserealizator import (
16
5
  get_list_component,
17
6
  )
7
+ from devsecops_engine_tools.engine_utilities.trivy_utils.infrastructure.driven_adapters.trivy_manager_scan_utils import (
8
+ TrivyManagerScanUtils
9
+ )
10
+ import subprocess
11
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
12
+ from devsecops_engine_tools.engine_utilities import settings
18
13
 
19
14
  logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
20
15
 
21
16
 
22
17
  class TrivyScan(ToolGateway):
23
- def download_tool(self, file, url):
24
- try:
25
- response = requests.get(url, allow_redirects=True)
26
- with open(file, "wb") as compress_file:
27
- compress_file.write(response.content)
28
- except Exception as e:
29
- logger.error(f"Error downloading trivy: {e}")
30
-
31
- def install_tool(self, file, url, command_prefix):
32
- installed = subprocess.run(
33
- ["which", command_prefix],
34
- stdout=subprocess.PIPE,
35
- stderr=subprocess.PIPE,
36
- )
37
- if installed.returncode == 1:
38
- try:
39
- self.download_tool(file, url)
40
- with tarfile.open(file, 'r:gz') as tar_file:
41
- tar_file.extract(member=tar_file.getmember("trivy"))
42
- return "./trivy"
43
- except Exception as e:
44
- logger.error(f"Error installing trivy: {e}")
45
- else:
46
- return installed.stdout.decode().strip()
47
-
48
- def install_tool_windows(self, file, url, command_prefix):
49
- try:
50
- subprocess.run(
51
- [command_prefix, "--version"],
52
- stdout=subprocess.PIPE,
53
- stderr=subprocess.PIPE,
54
- )
55
- return command_prefix
56
- except:
57
- try:
58
- self.download_tool(file, url)
59
- with zipfile.ZipFile(file, 'r') as zip_file:
60
- zip_file.extract(member="trivy.exe")
61
- return "./trivy.exe"
62
- except Exception as e:
63
- logger.error(f"Error installing trivy: {e}")
64
18
 
65
19
  def scan_image(self, prefix, image_name, result_file, base_image, is_compressed_file=False):
66
20
  command = [
@@ -123,24 +77,11 @@ class TrivyScan(ToolGateway):
123
77
  logger.error(f"Error generating SBOM: {e}")
124
78
 
125
79
  def run_tool_container_sca(self, remoteconfig, secret_tool, token_engine_container, image_name, result_file, base_image, exclusions, generate_sbom, is_compressed_file=False):
126
- trivy_version = remoteconfig["TRIVY"]["TRIVY_VERSION"]
127
- os_platform = platform.system()
128
- arch_platform = platform.architecture()[0]
129
- base_url = f"https://github.com/aquasecurity/trivy/releases/download/v{trivy_version}/"
80
+ trivy_version = remoteconfig["TRIVY"]["TRIVY_VERSION"]
81
+ command_prefix = TrivyManagerScanUtils().identify_os_and_install(trivy_version)
130
82
  sbom_components = None
131
-
132
- command_prefix = "trivy"
133
- if os_platform == "Linux":
134
- file=f"trivy_{trivy_version}_Linux-{arch_platform}.tar.gz"
135
- command_prefix = self.install_tool(file, base_url+file, "trivy")
136
- elif os_platform == "Darwin":
137
- file=f"trivy_{trivy_version}_macOS-{arch_platform}.tar.gz"
138
- command_prefix = self.install_tool(file, base_url+file, "trivy")
139
- elif os_platform == "Windows":
140
- file=f"trivy_{trivy_version}_windows-{arch_platform}.zip"
141
- command_prefix = self.install_tool_windows(file, base_url+file, "trivy.exe")
142
- else:
143
- logger.warning(f"{os_platform} is not supported.")
83
+
84
+ if not command_prefix:
144
85
  return None
145
86
 
146
87
  image_scanned = (
@@ -10,6 +10,12 @@ from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.dr
10
10
  from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.driven_adapters.dependency_check.dependency_check_deserialize import (
11
11
  DependencyCheckDeserialize,
12
12
  )
13
+ from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.driven_adapters.trivy_tool.trivy_manager_scan import (
14
+ TrivyScanSBOM,
15
+ )
16
+ from devsecops_engine_tools.engine_utilities.trivy_utils.infrastructure.driven_adapters.trivy_deserialize_output import (
17
+ TrivyDeserializator,
18
+ )
13
19
  from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.entry_points.entry_point_tool import (
14
20
  init_engine_dependencies,
15
21
  )
@@ -30,6 +36,11 @@ def runner_engine_dependencies(
30
36
  "tool_deserializator": DependencyCheckDeserialize,
31
37
  "tool_sbom": sbom_tool_gateway
32
38
  },
39
+ "TRIVY": {
40
+ "tool_run": TrivyScanSBOM,
41
+ "tool_deserializator": TrivyDeserializator,
42
+ "tool_sbom": sbom_tool_gateway
43
+ }
33
44
  }
34
45
 
35
46
  selected_tool = config_tool["ENGINE_DEPENDENCIES"]["TOOL"]
@@ -4,5 +4,5 @@ from devsecops_engine_tools.engine_core.src.domain.model.finding import Finding
4
4
 
5
5
  class DeserializatorGateway(metaclass=ABCMeta):
6
6
  @abstractmethod
7
- def get_list_findings(self, results_scan_file, remote_config) -> "list[Finding]":
7
+ def get_list_findings(self, results_scan_file) -> "list[Finding]":
8
8
  "Deserializator"
@@ -61,4 +61,4 @@ class DependenciesScan:
61
61
  Process the results deserializer.
62
62
  Terun: list: Deserialized list of findings.
63
63
  """
64
- return self.tool_deserializator.get_list_findings(dependencies_scanned, self.remote_config)
64
+ return self.tool_deserializator.get_list_findings(dependencies_scanned, remote_config=self.remote_config, module="engine_dependencies")
@@ -20,7 +20,7 @@ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
20
20
  class DependencyCheckDeserialize(DeserializatorGateway):
21
21
  TOOL = "DEPENDENCY_CHECK"
22
22
 
23
- def get_list_findings(self, dependencies_scanned_file, remote_config) -> "list[Finding]":
23
+ def get_list_findings(self, dependencies_scanned_file, remote_config={}, module="") -> "list[Finding]":
24
24
  dependencies, namespace = self.filter_vulnerabilities_by_confidence(dependencies_scanned_file, remote_config)
25
25
  list_open_vulnerabilities = []
26
26
 
@@ -0,0 +1,117 @@
1
+ from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.model.gateways.tool_gateway import (
2
+ ToolGateway,
3
+ )
4
+ from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.model.context_dependencies import (
5
+ ContextDependencies,
6
+ )
7
+ from devsecops_engine_tools.engine_utilities.trivy_utils.infrastructure.driven_adapters.trivy_manager_scan_utils import (
8
+ TrivyManagerScanUtils
9
+ )
10
+ import os
11
+ import json
12
+ import subprocess
13
+ from dataclasses import asdict
14
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
15
+ from devsecops_engine_tools.engine_utilities import settings
16
+
17
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
18
+
19
+
20
+ class TrivyScanSBOM(ToolGateway):
21
+ def run_tool_dependencies_sca(
22
+ self,
23
+ remote_config,
24
+ dict_args,
25
+ exclusion,
26
+ pipeline_name,
27
+ to_scan,
28
+ secret_tool,
29
+ token_engine_dependencies,
30
+ **kwargs,
31
+ ):
32
+ trivy_version = remote_config["TRIVY"]["CLI_VERSION"]
33
+ command_prefix = TrivyManagerScanUtils().identify_os_and_install(trivy_version)
34
+ sbom = f"{pipeline_name}_SBOM.json"
35
+
36
+ if not command_prefix:
37
+ return None
38
+
39
+ if not os.path.exists(sbom):
40
+ raise FileNotFoundError("SBOM file not found, enable SBOM generation to scan with Trivy.")
41
+
42
+ dependencies_scanned = self._scan_dependencies_sbom(command_prefix, sbom)
43
+
44
+ return dependencies_scanned
45
+
46
+ def get_dependencies_context_from_results(
47
+ self,
48
+ path_file_results,
49
+ remote_config
50
+ ):
51
+ dependencies_container_list = []
52
+
53
+ with open(path_file_results, "rb") as file:
54
+ image_object = file.read()
55
+ json_data = json.loads(image_object)
56
+
57
+ results = json_data.get("Results", [])
58
+
59
+ for result in results:
60
+ vulnerabilities = result.get("Vulnerabilities", [])
61
+ for vul in vulnerabilities:
62
+ context_container = ContextDependencies(
63
+ cve_id=[vul.get("VulnerabilityID", "unknown")],
64
+ severity=vul.get("Severity", "unknown").lower(),
65
+ component=vul.get("PkgID", "unknown"),
66
+ package_name=vul.get("PkgName", "unknown"),
67
+ installed_version=vul.get("InstalledVersion", "unknown"),
68
+ fixed_version=vul.get("FixedVersion", "unknown").split(", "),
69
+ impact_paths=[],
70
+ description=vul.get("Description", "unknown").replace("\n", ""),
71
+ references=vul.get("References", "unknown"),
72
+ source_tool="Trivy"
73
+ )
74
+ dependencies_container_list.append(context_container)
75
+
76
+ print("===== BEGIN CONTEXT OUTPUT =====")
77
+ print(
78
+ json.dumps(
79
+ {
80
+ "dependencies_context": [
81
+ asdict(context) for context in dependencies_container_list
82
+ ]
83
+ },
84
+ indent=2,
85
+ )
86
+ )
87
+ print("===== END CONTEXT OUTPUT =====")
88
+
89
+ def _scan_dependencies_sbom(self, command_prefix, sbom_path):
90
+ result_file = f"{sbom_path.replace('.json', '')}_scan_result.json"
91
+
92
+ command = [
93
+ command_prefix,
94
+ "sbom",
95
+ sbom_path,
96
+ "-f",
97
+ "json",
98
+ "--scanners",
99
+ "vuln",
100
+ "-o",
101
+ result_file,
102
+ ]
103
+
104
+ try:
105
+ subprocess.run(
106
+ command,
107
+ check=True,
108
+ stdout=subprocess.PIPE,
109
+ stderr=subprocess.PIPE,
110
+ text=True,
111
+ )
112
+ print(f"The SBOM {sbom_path} was scanned")
113
+
114
+ return result_file
115
+
116
+ except Exception as e:
117
+ logger.error(f"Error during SBOM scan of {sbom_path}: {e}")
@@ -46,7 +46,7 @@ class XrayDeserializator(DeserializatorGateway):
46
46
  ]
47
47
  return vulnerabilities
48
48
 
49
- def get_list_findings(self, dependencies_scanned_file, remote_config) -> "list[Finding]":
49
+ def get_list_findings(self, dependencies_scanned_file, remote_config={}, module="") -> "list[Finding]":
50
50
  list_open_vulnerabilities = []
51
51
  with open(dependencies_scanned_file, "rb") as file:
52
52
  json_data = json.loads(file.read())
@@ -77,7 +77,6 @@ def init_engine_dependencies(
77
77
  secret_tool,
78
78
  build_id,
79
79
  build_url
80
-
81
80
  )
82
81
  if config_sbom["ENABLED"] and any(
83
82
  branch in str(tool_remote.get_variable("branch_tag"))
@@ -16,7 +16,7 @@ from datetime import datetime, timezone
16
16
  @dataclass
17
17
  class TrivyDeserializator(DeseralizatorGateway):
18
18
 
19
- def get_list_findings(self, image_scanned) -> "list[Finding]":
19
+ def get_list_findings(self, image_scanned, remote_config={}, module="") -> "list[Finding]":
20
20
  list_open_vulnerabilities = []
21
21
  with open(image_scanned, "rb") as file:
22
22
  image_object = file.read()
@@ -36,13 +36,13 @@ class TrivyDeserializator(DeseralizatorGateway):
36
36
  )
37
37
  ),
38
38
  where=vul.get("PkgName", "")
39
- + " "
39
+ + ":"
40
40
  + vul.get("InstalledVersion", ""),
41
41
  description=vul.get("Description", "").replace("\n", "")[:150],
42
42
  severity=vul.get("Severity", "").lower(),
43
43
  identification_date=datetime.now().strftime("%Y-%m-%dT%H:%M:%S%z"),
44
44
  published_date_cve=self._check_date_format(vul),
45
- module="engine_container",
45
+ module=module,
46
46
  category=Category.VULNERABILITY,
47
47
  requirements=vul.get("FixedVersion") or vul.get("Status", ""),
48
48
  tool="Trivy",
@@ -0,0 +1,73 @@
1
+ import subprocess
2
+ import platform
3
+ import requests
4
+ import tarfile
5
+ import zipfile
6
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
7
+ from devsecops_engine_tools.engine_utilities import settings
8
+
9
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
10
+
11
+ class TrivyManagerScanUtils():
12
+ def identify_os_and_install(self, trivy_version):
13
+ os_platform = platform.system()
14
+ arch_platform = platform.architecture()[0]
15
+ base_url = f"https://github.com/aquasecurity/trivy/releases/download/v{trivy_version}/"
16
+
17
+ command_prefix = "trivy"
18
+ if os_platform == "Linux":
19
+ file=f"trivy_{trivy_version}_Linux-{arch_platform}.tar.gz"
20
+ command_prefix = self._install_tool(file, base_url+file, "trivy")
21
+ elif os_platform == "Darwin":
22
+ file=f"trivy_{trivy_version}_macOS-{arch_platform}.tar.gz"
23
+ command_prefix = self._install_tool(file, base_url+file, "trivy")
24
+ elif os_platform == "Windows":
25
+ file=f"trivy_{trivy_version}_windows-{arch_platform}.zip"
26
+ command_prefix = self._install_tool_windows(file, base_url+file, "trivy.exe")
27
+ else:
28
+ logger.warning(f"{os_platform} is not supported.")
29
+ return None
30
+
31
+ return command_prefix
32
+
33
+ def _install_tool(self, file, url, command_prefix):
34
+ installed = subprocess.run(
35
+ ["which", command_prefix],
36
+ stdout=subprocess.PIPE,
37
+ stderr=subprocess.PIPE,
38
+ )
39
+ if installed.returncode == 1:
40
+ try:
41
+ self._download_tool(file, url)
42
+ with tarfile.open(file, 'r:gz') as tar_file:
43
+ tar_file.extract(member=tar_file.getmember("trivy"))
44
+ return "./trivy"
45
+ except Exception as e:
46
+ logger.error(f"Error installing trivy: {e}")
47
+ else:
48
+ return installed.stdout.decode().strip()
49
+
50
+ def _install_tool_windows(self, file, url, command_prefix):
51
+ try:
52
+ subprocess.run(
53
+ [command_prefix, "--version"],
54
+ stdout=subprocess.PIPE,
55
+ stderr=subprocess.PIPE,
56
+ )
57
+ return command_prefix
58
+ except:
59
+ try:
60
+ self._download_tool(file, url)
61
+ with zipfile.ZipFile(file, 'r') as zip_file:
62
+ zip_file.extract(member="trivy.exe")
63
+ return "./trivy.exe"
64
+ except Exception as e:
65
+ logger.error(f"Error installing trivy: {e}")
66
+
67
+ def _download_tool(self, file, url):
68
+ try:
69
+ response = requests.get(url, allow_redirects=True)
70
+ with open(file, "wb") as compress_file:
71
+ compress_file.write(response.content)
72
+ except Exception as e:
73
+ logger.error(f"Error downloading trivy: {e}")
@@ -1 +1 @@
1
- version = '1.93.0'
1
+ version = '1.94.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.93.0
3
+ Version: 1.94.0
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -165,7 +165,7 @@ For more information visit [here](https://github.com/bancolombia/devsecops-engin
165
165
  <td>Free</td>
166
166
  </tr>
167
167
  <tr>
168
- <td rowspan="2">ENGINE_DEPENDENCIES</td>
168
+ <td rowspan="3">ENGINE_DEPENDENCIES</td>
169
169
  <td><a href="https://jfrog.com/help/r/get-started-with-the-jfrog-platform/jfrog-xray">XRAY</a></td>
170
170
  <td>Paid</td>
171
171
  </tr>
@@ -173,6 +173,10 @@ For more information visit [here](https://github.com/bancolombia/devsecops-engin
173
173
  <td><a href="https://owasp.org/www-project-dependency-check/">DEPENDENCY CHECK</a></td>
174
174
  <td>Free</td>
175
175
  </tr>
176
+ <tr>
177
+ <td><a href="https://trivy.dev/">TRIVY</a></td>
178
+ <td>Free</td>
179
+ </tr>
176
180
  <tr>
177
181
  <td>ENGINE_CODE</td>
178
182
  <td><a href="https://docs.bearer.com/quickstart/">BEARER</a></td>
@@ -1,9 +1,9 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=Cq2d_sTJlpopO1NPuYFPni1ALB_Qz7XCbOThymniec8,19
2
+ devsecops_engine_tools/version.py,sha256=eNcZCyl-uCRfczTLkT2ERSgVSyemEGZ0Vosk_-IPdpU,19
3
3
  devsecops_engine_tools/engine_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  devsecops_engine_tools/engine_core/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  devsecops_engine_tools/engine_core/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=tw8E4AVN7SL1bLfqVe_XPJ2pZT5AN8N1KEIfo6Itwpk,10770
6
+ devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=9XDqzFekR_QYKYq7D8lMM1tTZY_lmqDiLosOawxmgCY,10779
7
7
  devsecops_engine_tools/engine_core/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -204,18 +204,18 @@ devsecops_engine_tools/engine_sca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
204
204
  devsecops_engine_tools/engine_sca/engine_container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
205
  devsecops_engine_tools/engine_sca/engine_container/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
206
  devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
- devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py,sha256=rUO10c5exTgxta1rtxPRfkNTc8863lr7VgqYcalwEu4,1803
207
+ devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py,sha256=c502JhazBATZ-KInPk4WD1UqeFTlXh0vE7r742f_VP4,1789
208
208
  devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
209
  devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
211
  devsecops_engine_tools/engine_sca/engine_container/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
212
  devsecops_engine_tools/engine_sca/engine_container/src/domain/model/context_container.py,sha256=_BSNeHSWJHS-G1pdkOvrO2fA2UTUlI8N3KYEUI3Uh-c,602
213
213
  devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
- devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py,sha256=AVPZvwwhV-Vns7cM58vHzd4_no2xSdzHUKiI6-2lpNM,576
214
+ devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py,sha256=axkx5wKgMoz1_wBxpsoS2a-27hTiqUB6Y0_ExB54W0A,575
215
215
  devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py,sha256=-bsTPQW6m6aVJ1NsWC0gQnmhsYMhsNL7HpC0ONvjJjU,648
216
216
  devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py,sha256=HdBGR0QnSCiDlj9bKk6Q55jr9tc65bXbVYIqbWBCy0s,312
217
217
  devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py,sha256=nCdt4tuh9cfMa6PNIun7GNiS5AOBkmDENlHCLB5rJ7w,7232
218
+ devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py,sha256=4m9IQA6tXxeSK3GvQANgBbWAoTc4JHTeX1KdShfNhJ8,7259
219
219
  devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py,sha256=4wgBTQSDE-C5v01C3Vxzeq0DJKZUSqQ5TVLG7yPZPKs,926
220
220
  devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py,sha256=A5PpY0li7Pil2vPMpOHi0kkliqCxGbpQyBcB9VKyx5c,2904
221
221
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -224,39 +224,40 @@ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_ada
224
224
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py,sha256=VvkRP1knlRGUa6PE2zKTeByQuJVW27PF2FJ0zRy2TDA,6371
225
225
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
226
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py,sha256=Un0YmZeGh3LpOHiq6872lphD15cf02R9hwBUiHVuhCM,7848
227
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py,sha256=Eb7eRLyKQizPvaeX9uH8E1wxIKXCaAyNKUpmldw_iL8,2680
227
+ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py,sha256=FXb0jUReJVUdZq_H_Zz-gCueMmWf0AwMiwJB-Ceqv2A,2695
228
228
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py,sha256=f74mfDkzA7MD7QsaG-LDbcc2fX9nMvHHp-AkrcBg-h0,5294
230
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py,sha256=pX5jGm218sLJDjFDW-KPU5hZCkxtvc4dj_heSrzsReQ,5478
229
+ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py,sha256=WiVqnlLHRt5Ab5xIxdLCQRfas_HW8-j4tDkZKo_GdPM,3241
231
230
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
231
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py,sha256=MCBVnUxfjnax2stjn9ByM0Hy9LQ9vAMK9GZkOk3ex9M,3077
233
232
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
233
  devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
234
  devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
235
  devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
- devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=FHHb7wq7bBCdSTwkPExChE5OUL7GdF7U_A5_PVUIfHQ,2119
236
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=20m2PvpSUGAf27ciJ-Mb612Pyls98qYOb1nmChA3FFA,2609
238
237
  devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
239
238
  devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
239
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
240
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
242
241
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/context_dependencies.py,sha256=wm_QYNrAWePWsn6YXBtHRriIp1mfx2awuitzuBRwd5o,376
243
242
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
244
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py,sha256=A4WPW-cNMlitI7-P2L-W2hFUPvIU7Ejk6JxRJGATfwc,301
243
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py,sha256=WOJbKbeFIbQ0IR6lic2JheTPUJPPzAYsGykU1DiMmHw,286
245
244
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py,sha256=78WSYsEzt4394FEURSBmwV1pBztlORXaePFQ6GOZGGk,444
246
245
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
247
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py,sha256=F8ro58O475MNwXN2QRvGqcdkYMYb6upeFl8PV6tc-dQ,1979
246
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py,sha256=eLctMrWQmz8GFbLrILpTMtJVsoPtbO9kMQma-xXOHYw,2023
248
247
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py,sha256=cTM8IQRZJBr5zG5nhCkTxuw2fCHDZ3wrPgQhRjG88pg,968
249
248
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py,sha256=E3-ff4NcyIvPCN5xUV_d0Vh7k1OVXqbPrHzUPJBgmr0,2283
250
249
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
250
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
252
251
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py,sha256=yT8C4bGIMii8XE8wnJW0bv6NI2DP-fpvGZTnG5H7gSg,8875
252
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py,sha256=V9AacJ0cB3VunoHqys6NM1gpZMB3rJ8CbcFl3MIQqlk,8889
254
253
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_tool.py,sha256=jlz_6bAgCNPKqWgnPow6twOYYMf7ewUh5d1WPwHCrSk,7318
254
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/trivy_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py,sha256=s1tU8gnA2aiXlXziv54XLLMxYc50XGQpOnImYQtkgC4,3910
255
256
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
256
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py,sha256=ZUk-e1PKzV7uRAT7BpET363pgl2eMnXMCGSpewsOpKg,2236
257
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py,sha256=JhSRjYL8ND_LnE27KwAoJpVo61pJ47c_v5k98WjMJg8,2250
257
258
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py,sha256=lYRl76dPzvfossuRJaRFGwTZNdC9wxJ23AivZdp9nhM,11608
258
259
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py,sha256=t2nAJ86ZyL6nz_tdrcWZ3cf5pnXhJ_q1AfVAbNhcrSk,3772
260
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py,sha256=atIp2svHXoPw8hZM6zTPp8dPcMqTlD3Q23TfEh9ECC0,3771
260
261
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
262
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/get_artifacts.py,sha256=ECczGxi-neekJAJkMBaRCE_1NTqmcv-5tB90F3GKz7w,5234
262
263
  devsecops_engine_tools/engine_utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -353,6 +354,11 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/__i
353
354
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/utils.py,sha256=SGOWrkzQrvOt9bRhhSfgiMzj1695e1W0B9ox9C1ihQI,294
354
355
  devsecops_engine_tools/engine_utilities/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
355
356
  devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py,sha256=Vvrro2e_YyvtKY9WzPUVOFTd-fiibohcG6wWHjLHAWg,2369
357
+ devsecops_engine_tools/engine_utilities/trivy_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
358
+ devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
359
+ devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
+ devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/trivy_deserialize_output.py,sha256=a9FM3n_oE9A_6PS6EU6dttBdKQDmoSMDAv3mcpxEpoE,5311
361
+ devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/trivy_manager_scan_utils.py,sha256=9bUT0V-EFhdik8aNuGTI2i4OnT1YvFT7s7xu5M5sejM,2888
356
362
  devsecops_engine_tools/engine_utilities/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
357
363
  devsecops_engine_tools/engine_utilities/utils/api_error.py,sha256=yRbad5gNUHh5nALBKkRDi-d98JPmqAhw-QJEGW4psrw,528
358
364
  devsecops_engine_tools/engine_utilities/utils/dataclass_classmethod.py,sha256=S-w6pybVKlyVBhV3HE3IGDvO4ByXxiVePP1JaMnISgM,4302
@@ -362,8 +368,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
362
368
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
363
369
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
364
370
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
365
- devsecops_engine_tools-1.93.0.dist-info/METADATA,sha256=42BtV6Bz8Uq6qlx9r_987lu22T7LLOqIOD3teQoeX_M,12218
366
- devsecops_engine_tools-1.93.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
367
- devsecops_engine_tools-1.93.0.dist-info/entry_points.txt,sha256=OWAww5aBsGeMv0kWhSgVNB0ySKKpYuJd4dly0ikFPkc,283
368
- devsecops_engine_tools-1.93.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
369
- devsecops_engine_tools-1.93.0.dist-info/RECORD,,
371
+ devsecops_engine_tools-1.94.0.dist-info/METADATA,sha256=m55XnSwop-muPVV2nnqRIbN3AfDI9bbaxVZNuv8lpHM,12303
372
+ devsecops_engine_tools-1.94.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
373
+ devsecops_engine_tools-1.94.0.dist-info/entry_points.txt,sha256=OWAww5aBsGeMv0kWhSgVNB0ySKKpYuJd4dly0ikFPkc,283
374
+ devsecops_engine_tools-1.94.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
375
+ devsecops_engine_tools-1.94.0.dist-info/RECORD,,