devsecops-engine-tools 1.92.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.
- devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +12 -3
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/cdxgen.py +123 -0
- devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +1 -1
- devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +1 -1
- devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +1 -1
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +1 -1
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +2 -2
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +10 -69
- devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +11 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py +1 -1
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py +1 -1
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py +1 -1
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/trivy_tool/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +117 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py +1 -1
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +0 -1
- devsecops_engine_tools/engine_utilities/trivy_utils/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/__init__.py +0 -0
- 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
- devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/trivy_manager_scan_utils.py +73 -0
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/METADATA +6 -2
- {devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/RECORD +28 -20
- {devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/top_level.txt +0 -0
|
@@ -22,7 +22,13 @@ from devsecops_engine_tools.engine_core.src.infrastructure.driven_adapters.aws.s
|
|
|
22
22
|
from devsecops_engine_tools.engine_core.src.infrastructure.driven_adapters.printer_pretty_table.printer_pretty_table import (
|
|
23
23
|
PrinterPrettyTable,
|
|
24
24
|
)
|
|
25
|
-
from devsecops_engine_tools.engine_core.src.infrastructure.driven_adapters.syft.syft import
|
|
25
|
+
from devsecops_engine_tools.engine_core.src.infrastructure.driven_adapters.syft.syft import (
|
|
26
|
+
Syft
|
|
27
|
+
)
|
|
28
|
+
from devsecops_engine_tools.engine_core.src.infrastructure.driven_adapters.cdxgen.cdxgen import (
|
|
29
|
+
CdxGen
|
|
30
|
+
)
|
|
31
|
+
|
|
26
32
|
import sys
|
|
27
33
|
import argparse
|
|
28
34
|
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
@@ -225,7 +231,7 @@ def get_inputs_from_cli(args):
|
|
|
225
231
|
"engine_iac": ["checkov", "kics", "kubescape"],
|
|
226
232
|
"engine_secret": ["trufflehog", "gitleaks"],
|
|
227
233
|
"engine_container": ["prisma", "trivy"],
|
|
228
|
-
"engine_dependencies": ["xray", "dependency_check"],
|
|
234
|
+
"engine_dependencies": ["xray", "dependency_check", "trivy"],
|
|
229
235
|
"engine_code": ["bearer"],
|
|
230
236
|
"engine_dast": ["nuclei"],
|
|
231
237
|
"engine_risk": None,
|
|
@@ -285,7 +291,10 @@ def application_core():
|
|
|
285
291
|
}.get(args["remote_config_source"])
|
|
286
292
|
metrics_manager_gateway = S3Manager()
|
|
287
293
|
printer_table_gateway = PrinterPrettyTable()
|
|
288
|
-
sbom_tool_gateway =
|
|
294
|
+
sbom_tool_gateway = {
|
|
295
|
+
"syft": Syft(),
|
|
296
|
+
"cdxgen": CdxGen()
|
|
297
|
+
}
|
|
289
298
|
|
|
290
299
|
init_engine_core(
|
|
291
300
|
vulnerability_management_gateway,
|
|
File without changes
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
import requests
|
|
3
|
+
import subprocess
|
|
4
|
+
import platform
|
|
5
|
+
|
|
6
|
+
from devsecops_engine_tools.engine_core.src.domain.model.gateway.sbom_manager import (
|
|
7
|
+
SbomManagerGateway,
|
|
8
|
+
)
|
|
9
|
+
from devsecops_engine_tools.engine_utilities.sbom.deserealizator import (
|
|
10
|
+
get_list_component,
|
|
11
|
+
)
|
|
12
|
+
from devsecops_engine_tools.engine_core.src.domain.model.component import (
|
|
13
|
+
Component,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
17
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
18
|
+
|
|
19
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@dataclass
|
|
23
|
+
class CdxGen(SbomManagerGateway):
|
|
24
|
+
|
|
25
|
+
def get_components(self, artifact, config, service_name) -> "list[Component]":
|
|
26
|
+
try:
|
|
27
|
+
cdxgen_version = config["CDXGEN"]["CDXGEN_VERSION"]
|
|
28
|
+
slim = "-slim" if config["CDXGEN"]["SLIM_BINARY"] else ""
|
|
29
|
+
os_platform = platform.system()
|
|
30
|
+
base_url = (
|
|
31
|
+
f"https://github.com/CycloneDX/cdxgen/releases/download/v{cdxgen_version}/"
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
command_prefix = "cdxgen"
|
|
35
|
+
if os_platform == "Linux":
|
|
36
|
+
file = f"cdxgen-linux-amd64{slim}"
|
|
37
|
+
command_prefix = self._install_tool_unix(
|
|
38
|
+
file, base_url + file, command_prefix
|
|
39
|
+
)
|
|
40
|
+
elif os_platform == "Darwin":
|
|
41
|
+
file = f"cdxgen-darwin-amd64{slim}"
|
|
42
|
+
command_prefix = self._install_tool_unix(
|
|
43
|
+
file, base_url + file, command_prefix
|
|
44
|
+
)
|
|
45
|
+
elif os_platform == "Windows":
|
|
46
|
+
file = f"cdxgen-windows-amd64{slim}.exe"
|
|
47
|
+
command_prefix = self._install_tool_windows(
|
|
48
|
+
file, base_url + file, "cdxgen.exe"
|
|
49
|
+
)
|
|
50
|
+
else:
|
|
51
|
+
logger.warning(f"{os_platform} is not supported.")
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
result_sbom = self._run_cdxgen(command_prefix, artifact, service_name)
|
|
55
|
+
return get_list_component(result_sbom, config["CDXGEN"]["OUTPUT_FORMAT"])
|
|
56
|
+
except Exception as e:
|
|
57
|
+
logger.error(f"Error generating SBOM: {e}")
|
|
58
|
+
return None
|
|
59
|
+
|
|
60
|
+
def _run_cdxgen(self, command_prefix, artifact, service_name):
|
|
61
|
+
result_file = f"{service_name}_SBOM.json"
|
|
62
|
+
command = [
|
|
63
|
+
command_prefix,
|
|
64
|
+
artifact,
|
|
65
|
+
"-o",
|
|
66
|
+
result_file,
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
try:
|
|
70
|
+
subprocess.run(
|
|
71
|
+
command,
|
|
72
|
+
check=True,
|
|
73
|
+
stdout=subprocess.PIPE,
|
|
74
|
+
stderr=subprocess.PIPE,
|
|
75
|
+
text=True,
|
|
76
|
+
)
|
|
77
|
+
print(f"SBOM generated and saved to: {result_file}")
|
|
78
|
+
return result_file
|
|
79
|
+
except Exception as e:
|
|
80
|
+
logger.error(f"Error running cdxgen: {e}")
|
|
81
|
+
|
|
82
|
+
def _install_tool_unix(self, file, url, command_prefix):
|
|
83
|
+
installed = subprocess.run(
|
|
84
|
+
["which", command_prefix],
|
|
85
|
+
stdout=subprocess.PIPE,
|
|
86
|
+
stderr=subprocess.PIPE,
|
|
87
|
+
)
|
|
88
|
+
if installed.returncode == 1:
|
|
89
|
+
try:
|
|
90
|
+
self._download_tool(file, url)
|
|
91
|
+
subprocess.run(
|
|
92
|
+
["chmod", "+x", f"./{file}"],
|
|
93
|
+
stdout=subprocess.PIPE,
|
|
94
|
+
stderr=subprocess.PIPE,
|
|
95
|
+
)
|
|
96
|
+
return f"./{file}"
|
|
97
|
+
except Exception as e:
|
|
98
|
+
logger.error(f"Error installing cdxgen: {e}")
|
|
99
|
+
else:
|
|
100
|
+
return installed.stdout.decode("utf-8").strip()
|
|
101
|
+
|
|
102
|
+
def _install_tool_windows(self, file, url, command_prefix):
|
|
103
|
+
try:
|
|
104
|
+
installed = subprocess.run(
|
|
105
|
+
[command_prefix, "--version"],
|
|
106
|
+
stdout=subprocess.PIPE,
|
|
107
|
+
stderr=subprocess.PIPE,
|
|
108
|
+
)
|
|
109
|
+
return installed.stdout.decode("utf-8").strip()
|
|
110
|
+
except:
|
|
111
|
+
try:
|
|
112
|
+
self._download_tool(file, url)
|
|
113
|
+
return f"{file}"
|
|
114
|
+
except Exception as e:
|
|
115
|
+
logger.error(f"Error installing cdxgen: {e}")
|
|
116
|
+
|
|
117
|
+
def _download_tool(self, file, url):
|
|
118
|
+
try:
|
|
119
|
+
response = requests.get(url, allow_redirects=True)
|
|
120
|
+
with open(file, "wb") as compress_file:
|
|
121
|
+
compress_file.write(response.content)
|
|
122
|
+
except Exception as e:
|
|
123
|
+
logger.error(f"Error downloading cdxgen: {e}")
|
|
@@ -14,7 +14,6 @@ from devsecops_engine_tools.engine_utilities.utils.printers import (
|
|
|
14
14
|
Printers,
|
|
15
15
|
)
|
|
16
16
|
|
|
17
|
-
|
|
18
17
|
def init_engine_core(
|
|
19
18
|
vulnerability_management_gateway: any,
|
|
20
19
|
secrets_manager_gateway: any,
|
|
@@ -29,6 +28,7 @@ def init_engine_core(
|
|
|
29
28
|
args["remote_config_repo"], "/engine_core/ConfigTool.json", args["remote_config_branch"]
|
|
30
29
|
)
|
|
31
30
|
Printers.print_logo_tool(config_tool["BANNER"])
|
|
31
|
+
sbom_tool_gateway = sbom_tool_gateway.get(config_tool["SBOM_MANAGER"]["TOOL"].lower())
|
|
32
32
|
|
|
33
33
|
if config_tool[args["module"].upper()]["ENABLED"]:
|
|
34
34
|
if args["module"] == "engine_risk":
|
devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py
CHANGED
|
@@ -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.
|
|
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:
|
|
10
|
+
def get_list_findings(self, results_scan_list: str) -> "list[Finding]":
|
|
11
11
|
"Deseralizator"
|
|
12
12
|
|
|
13
13
|
@abstractmethod
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py
CHANGED
|
@@ -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=
|
|
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
|
-
|
|
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
|
-
|
|
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 = (
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py
CHANGED
|
@@ -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
|
|
7
|
+
def get_list_findings(self, results_scan_file) -> "list[Finding]":
|
|
8
8
|
"Deserializator"
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py
CHANGED
|
@@ -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
|
|
|
File without changes
|
|
@@ -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())
|
|
File without changes
|
|
File without changes
|
devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/__init__.py
ADDED
|
File without changes
|
|
@@ -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=
|
|
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.
|
|
1
|
+
version = '1.94.0'
|
{devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: devsecops-engine-tools
|
|
3
|
-
Version: 1.
|
|
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="
|
|
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=
|
|
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=
|
|
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
|
|
@@ -37,6 +37,8 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_man
|
|
|
37
37
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py,sha256=ELihQBgSPH4f9QCyg2dgjudsFitaqgdsljnVOmaA_v4,1972
|
|
38
38
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
39
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=dKe8hno53uC7JDzRWeBdBeRbDHAasEYLxVaFSvWUVxU,5863
|
|
40
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/cdxgen.py,sha256=t1CTeQG2ePBwUdeNinSYEi3vyMjufD0KuHUIxRZCsAU,4370
|
|
40
42
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
43
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=ZjtlXKAhAwHCSJTkA2X0Z-4utoCY6lvipqYJ6gkk6OU,32417
|
|
42
44
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -50,7 +52,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_lo
|
|
|
50
52
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/syft/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
53
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/syft/syft.py,sha256=hP5MitHTeZf3Ia-xwi5bUdIU5hIwbUNuDSzcsqlxG5c,4457
|
|
52
54
|
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
-
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=
|
|
55
|
+
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=BjA2jQfWpZrCfk9tpaZFL2A8dSKj26p-zIP61GBLqXk,2627
|
|
54
56
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
57
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py,sha256=wfy_PosHS0rrvkdiUYczxIcc8ZNwfqzWwqVxrmRTCBI,264
|
|
56
58
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py,sha256=lDtaozInb5m2R8Y-oGQasroksCRw_N_Ltz7gLkSguX8,380
|
|
@@ -202,18 +204,18 @@ devsecops_engine_tools/engine_sca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
|
202
204
|
devsecops_engine_tools/engine_sca/engine_container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
203
205
|
devsecops_engine_tools/engine_sca/engine_container/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
204
206
|
devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
205
|
-
devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py,sha256=
|
|
207
|
+
devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py,sha256=c502JhazBATZ-KInPk4WD1UqeFTlXh0vE7r742f_VP4,1789
|
|
206
208
|
devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
207
209
|
devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
208
210
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
209
211
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
210
212
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/model/context_container.py,sha256=_BSNeHSWJHS-G1pdkOvrO2fA2UTUlI8N3KYEUI3Uh-c,602
|
|
211
213
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
212
|
-
devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py,sha256=
|
|
214
|
+
devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py,sha256=axkx5wKgMoz1_wBxpsoS2a-27hTiqUB6Y0_ExB54W0A,575
|
|
213
215
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py,sha256=-bsTPQW6m6aVJ1NsWC0gQnmhsYMhsNL7HpC0ONvjJjU,648
|
|
214
216
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py,sha256=HdBGR0QnSCiDlj9bKk6Q55jr9tc65bXbVYIqbWBCy0s,312
|
|
215
217
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
216
|
-
devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py,sha256=
|
|
218
|
+
devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py,sha256=4m9IQA6tXxeSK3GvQANgBbWAoTc4JHTeX1KdShfNhJ8,7259
|
|
217
219
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py,sha256=4wgBTQSDE-C5v01C3Vxzeq0DJKZUSqQ5TVLG7yPZPKs,926
|
|
218
220
|
devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py,sha256=A5PpY0li7Pil2vPMpOHi0kkliqCxGbpQyBcB9VKyx5c,2904
|
|
219
221
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -222,39 +224,40 @@ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_ada
|
|
|
222
224
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py,sha256=VvkRP1knlRGUa6PE2zKTeByQuJVW27PF2FJ0zRy2TDA,6371
|
|
223
225
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
224
226
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py,sha256=Un0YmZeGh3LpOHiq6872lphD15cf02R9hwBUiHVuhCM,7848
|
|
225
|
-
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py,sha256=
|
|
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
|
|
226
228
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
227
|
-
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/
|
|
228
|
-
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
|
|
229
230
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
230
231
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py,sha256=MCBVnUxfjnax2stjn9ByM0Hy9LQ9vAMK9GZkOk3ex9M,3077
|
|
231
232
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
232
233
|
devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
233
234
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
234
235
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
235
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=
|
|
236
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=20m2PvpSUGAf27ciJ-Mb612Pyls98qYOb1nmChA3FFA,2609
|
|
236
237
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
237
238
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
238
239
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
239
240
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
240
241
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/context_dependencies.py,sha256=wm_QYNrAWePWsn6YXBtHRriIp1mfx2awuitzuBRwd5o,376
|
|
241
242
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
242
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py,sha256=
|
|
243
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py,sha256=WOJbKbeFIbQ0IR6lic2JheTPUJPPzAYsGykU1DiMmHw,286
|
|
243
244
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py,sha256=78WSYsEzt4394FEURSBmwV1pBztlORXaePFQ6GOZGGk,444
|
|
244
245
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
245
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py,sha256=
|
|
246
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py,sha256=eLctMrWQmz8GFbLrILpTMtJVsoPtbO9kMQma-xXOHYw,2023
|
|
246
247
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py,sha256=cTM8IQRZJBr5zG5nhCkTxuw2fCHDZ3wrPgQhRjG88pg,968
|
|
247
248
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py,sha256=E3-ff4NcyIvPCN5xUV_d0Vh7k1OVXqbPrHzUPJBgmr0,2283
|
|
248
249
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
249
250
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
250
251
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
251
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py,sha256=
|
|
252
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py,sha256=V9AacJ0cB3VunoHqys6NM1gpZMB3rJ8CbcFl3MIQqlk,8889
|
|
252
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
|
|
253
256
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
254
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py,sha256=
|
|
257
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py,sha256=JhSRjYL8ND_LnE27KwAoJpVo61pJ47c_v5k98WjMJg8,2250
|
|
255
258
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py,sha256=lYRl76dPzvfossuRJaRFGwTZNdC9wxJ23AivZdp9nhM,11608
|
|
256
259
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
257
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py,sha256=
|
|
260
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py,sha256=atIp2svHXoPw8hZM6zTPp8dPcMqTlD3Q23TfEh9ECC0,3771
|
|
258
261
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
259
262
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/get_artifacts.py,sha256=ECczGxi-neekJAJkMBaRCE_1NTqmcv-5tB90F3GKz7w,5234
|
|
260
263
|
devsecops_engine_tools/engine_utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -351,6 +354,11 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/__i
|
|
|
351
354
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/utils.py,sha256=SGOWrkzQrvOt9bRhhSfgiMzj1695e1W0B9ox9C1ihQI,294
|
|
352
355
|
devsecops_engine_tools/engine_utilities/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
353
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
|
|
354
362
|
devsecops_engine_tools/engine_utilities/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
355
363
|
devsecops_engine_tools/engine_utilities/utils/api_error.py,sha256=yRbad5gNUHh5nALBKkRDi-d98JPmqAhw-QJEGW4psrw,528
|
|
356
364
|
devsecops_engine_tools/engine_utilities/utils/dataclass_classmethod.py,sha256=S-w6pybVKlyVBhV3HE3IGDvO4ByXxiVePP1JaMnISgM,4302
|
|
@@ -360,8 +368,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
|
|
|
360
368
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
361
369
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
|
|
362
370
|
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
|
|
363
|
-
devsecops_engine_tools-1.
|
|
364
|
-
devsecops_engine_tools-1.
|
|
365
|
-
devsecops_engine_tools-1.
|
|
366
|
-
devsecops_engine_tools-1.
|
|
367
|
-
devsecops_engine_tools-1.
|
|
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,,
|
|
File without changes
|
{devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.92.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|