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.
- devsecops_engine_tools/engine_core/src/applications/runner_engine_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.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/METADATA +6 -2
- {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/RECORD +25 -19
- {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/entry_points.txt +0 -0
- {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,
|
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.93.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
|
|
@@ -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=
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
366
|
-
devsecops_engine_tools-1.
|
|
367
|
-
devsecops_engine_tools-1.
|
|
368
|
-
devsecops_engine_tools-1.
|
|
369
|
-
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.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.93.0.dist-info → devsecops_engine_tools-1.94.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|