devsecops-engine-tools 1.81.0__py3-none-any.whl → 1.82.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_risk/src/domain/usecases/handle_filters.py +0 -39
- devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py +1 -3
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_tool.py +2 -1
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py +2 -1
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/get_artifacts.py +32 -4
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.81.0.dist-info → devsecops_engine_tools-1.82.0.dist-info}/METADATA +1 -1
- {devsecops_engine_tools-1.81.0.dist-info → devsecops_engine_tools-1.82.0.dist-info}/RECORD +11 -11
- {devsecops_engine_tools-1.81.0.dist-info → devsecops_engine_tools-1.82.0.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.81.0.dist-info → devsecops_engine_tools-1.82.0.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.81.0.dist-info → devsecops_engine_tools-1.82.0.dist-info}/top_level.txt +0 -0
|
@@ -7,45 +7,6 @@ class HandleFilters:
|
|
|
7
7
|
self._get_priority_vulnerability(active_findings)
|
|
8
8
|
return active_findings
|
|
9
9
|
|
|
10
|
-
def filter_duplicated(self, findings):
|
|
11
|
-
unique_findings = []
|
|
12
|
-
findings_map = {}
|
|
13
|
-
|
|
14
|
-
for finding in findings:
|
|
15
|
-
key = (finding.where, tuple(finding.id), finding.vuln_id_from_tool)
|
|
16
|
-
if key in findings_map:
|
|
17
|
-
existing_finding = findings_map[key]
|
|
18
|
-
combined_services = existing_finding.service.split() + [
|
|
19
|
-
s
|
|
20
|
-
for s in finding.service.split()
|
|
21
|
-
if s not in existing_finding.service.split()
|
|
22
|
-
]
|
|
23
|
-
combined_vm_ids = existing_finding.vm_id.split() + [
|
|
24
|
-
vm
|
|
25
|
-
for vm in finding.vm_id.split()
|
|
26
|
-
if vm not in existing_finding.vm_id.split()
|
|
27
|
-
]
|
|
28
|
-
combined_vm_id_urls = existing_finding.vm_id_url.split() + [
|
|
29
|
-
vm_url
|
|
30
|
-
for vm_url in finding.vm_id_url.split()
|
|
31
|
-
if vm_url not in existing_finding.vm_id_url.split()
|
|
32
|
-
]
|
|
33
|
-
if finding.age >= existing_finding.age:
|
|
34
|
-
new_finding = copy.deepcopy(finding)
|
|
35
|
-
new_finding.service = " ".join(combined_services)
|
|
36
|
-
new_finding.vm_id = " ".join(combined_vm_ids)
|
|
37
|
-
new_finding.vm_id_url = " ".join(combined_vm_id_urls)
|
|
38
|
-
findings_map[key] = new_finding
|
|
39
|
-
else:
|
|
40
|
-
existing_finding.service = " ".join(combined_services)
|
|
41
|
-
existing_finding.vm_id = " ".join(combined_vm_ids)
|
|
42
|
-
existing_finding.vm_id_url = " ".join(combined_vm_id_urls)
|
|
43
|
-
else:
|
|
44
|
-
findings_map[key] = copy.deepcopy(finding)
|
|
45
|
-
|
|
46
|
-
unique_findings = list(findings_map.values())
|
|
47
|
-
return unique_findings
|
|
48
|
-
|
|
49
10
|
def filter_tags_days(self, devops_platform_gateway, remote_config, findings):
|
|
50
11
|
tag_exclusion_days = remote_config["TAG_EXCLUSION_DAYS"]
|
|
51
12
|
filtered_findings = []
|
|
@@ -52,10 +52,8 @@ def init_engine_risk(
|
|
|
52
52
|
|
|
53
53
|
active_findings = handle_filters.filter(findings)
|
|
54
54
|
|
|
55
|
-
unique_findings = handle_filters.filter_duplicated(active_findings)
|
|
56
|
-
|
|
57
55
|
filtered_findings, len_tag_filtered = handle_filters.filter_tags_days(
|
|
58
|
-
devops_platform_gateway, remote_config,
|
|
56
|
+
devops_platform_gateway, remote_config, active_findings
|
|
59
57
|
)
|
|
60
58
|
|
|
61
59
|
data_added = AddData(add_epss_gateway, filtered_findings).process()
|
|
@@ -142,8 +142,9 @@ class DependencyCheckTool(ToolGateway):
|
|
|
142
142
|
pattern = get_artifacts.excluded_files(
|
|
143
143
|
remote_config, pipeline_name, exclusion, "DEPENDENCY_CHECK"
|
|
144
144
|
)
|
|
145
|
+
ignore_files = remote_config.get("IGNORE_FILES", [])
|
|
145
146
|
to_scan = get_artifacts.find_artifacts(
|
|
146
|
-
to_scan, pattern, remote_config["DEPENDENCY_CHECK"]["PACKAGES_TO_SCAN"]
|
|
147
|
+
to_scan, pattern, remote_config["DEPENDENCY_CHECK"]["PACKAGES_TO_SCAN"], ignore_files
|
|
147
148
|
)
|
|
148
149
|
|
|
149
150
|
if not to_scan:
|
|
@@ -194,8 +194,9 @@ class XrayScan(ToolGateway):
|
|
|
194
194
|
pattern = get_artifacts.excluded_files(
|
|
195
195
|
remote_config, pipeline_name, exclusion, "XRAY"
|
|
196
196
|
)
|
|
197
|
+
ignore_files = remote_config.get("IGNORE_FILES", [])
|
|
197
198
|
to_scan = get_artifacts.find_artifacts(
|
|
198
|
-
to_scan, pattern, remote_config["XRAY"]["PACKAGES_TO_SCAN"]
|
|
199
|
+
to_scan, pattern, remote_config["XRAY"]["PACKAGES_TO_SCAN"], ignore_files
|
|
199
200
|
)
|
|
200
201
|
cwd = os.getcwd()
|
|
201
202
|
if not to_scan:
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/get_artifacts.py
CHANGED
|
@@ -33,6 +33,25 @@ class GetArtifacts:
|
|
|
33
33
|
|
|
34
34
|
return pattern
|
|
35
35
|
|
|
36
|
+
def filter_ignored_files(self, files_list, ignore_files):
|
|
37
|
+
if not ignore_files:
|
|
38
|
+
return files_list
|
|
39
|
+
|
|
40
|
+
filtered_files = []
|
|
41
|
+
for file_path in files_list:
|
|
42
|
+
should_ignore = False
|
|
43
|
+
file_name = os.path.basename(file_path)
|
|
44
|
+
|
|
45
|
+
for ignore_pattern in ignore_files:
|
|
46
|
+
if (re.search(ignore_pattern, file_name, re.IGNORECASE) or re.search(ignore_pattern, file_path, re.IGNORECASE)):
|
|
47
|
+
should_ignore = True
|
|
48
|
+
break
|
|
49
|
+
|
|
50
|
+
if not should_ignore:
|
|
51
|
+
filtered_files.append(file_path)
|
|
52
|
+
|
|
53
|
+
return filtered_files
|
|
54
|
+
|
|
36
55
|
def find_packages(self, pattern, packages, working_dir):
|
|
37
56
|
packages_list = []
|
|
38
57
|
files_list = []
|
|
@@ -69,7 +88,7 @@ class GetArtifacts:
|
|
|
69
88
|
shutil.copy2(file, target)
|
|
70
89
|
logger.debug(f"File to scan: {file}")
|
|
71
90
|
|
|
72
|
-
def find_artifacts(self, to_scan, pattern, packages):
|
|
91
|
+
def find_artifacts(self, to_scan, pattern, packages, ignore_files=None):
|
|
73
92
|
dir_to_scan_path = os.path.join(to_scan, "dependencies_to_scan")
|
|
74
93
|
if os.path.exists(dir_to_scan_path):
|
|
75
94
|
shutil.rmtree(dir_to_scan_path)
|
|
@@ -77,6 +96,11 @@ class GetArtifacts:
|
|
|
77
96
|
|
|
78
97
|
packages_list, files_list = self.find_packages(pattern, packages, to_scan)
|
|
79
98
|
|
|
99
|
+
if ignore_files:
|
|
100
|
+
filtered_files_list = self.filter_ignored_files(files_list, ignore_files)
|
|
101
|
+
else:
|
|
102
|
+
filtered_files_list = files_list
|
|
103
|
+
|
|
80
104
|
for package in packages_list:
|
|
81
105
|
tar_path = os.path.join(
|
|
82
106
|
dir_to_scan_path,
|
|
@@ -88,8 +112,8 @@ class GetArtifacts:
|
|
|
88
112
|
)
|
|
89
113
|
self.compress_and_mv(tar_path, package)
|
|
90
114
|
|
|
91
|
-
if len(
|
|
92
|
-
self.move_files(dir_to_scan_path,
|
|
115
|
+
if len(filtered_files_list):
|
|
116
|
+
self.move_files(dir_to_scan_path, filtered_files_list)
|
|
93
117
|
|
|
94
118
|
files = os.listdir(dir_to_scan_path)
|
|
95
119
|
files = [
|
|
@@ -102,8 +126,12 @@ class GetArtifacts:
|
|
|
102
126
|
file_to_scan = os.path.join(dir_to_scan_path, "file_to_scan.tar")
|
|
103
127
|
self.compress_and_mv(file_to_scan, dir_to_scan_path)
|
|
104
128
|
files_string = ", ".join(files)
|
|
105
|
-
logger.debug(f"Files to scan: {files_string}")
|
|
106
129
|
print(f"Files to scan: {files_string}")
|
|
130
|
+
|
|
131
|
+
if ignore_files and len(filtered_files_list) < len(files_list):
|
|
132
|
+
ignored_files = set([os.path.basename(f) for f in files_list if f not in filtered_files_list])
|
|
133
|
+
files_ignore_string = ", ".join(ignored_files)
|
|
134
|
+
print(f"Files ignored: {files_ignore_string}")
|
|
107
135
|
else:
|
|
108
136
|
logger.warning("No artifacts found")
|
|
109
137
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.82.0'
|
|
@@ -1,5 +1,5 @@
|
|
|
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=vL5Lm-NSzzA8AwePtmNmf3k1XSspUDxm9fFe5uddV00,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
|
|
@@ -104,13 +104,13 @@ devsecops_engine_tools/engine_risk/src/domain/usecases/add_data.py,sha256=4wqDj-
|
|
|
104
104
|
devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=nCUvHa4azCfQSdVzoJcyWOn3vzdSlgibzBS2J3Qqfsc,17011
|
|
105
105
|
devsecops_engine_tools/engine_risk/src/domain/usecases/check_threshold.py,sha256=VYdmcbAuNNvdHCegRfvza7YJ8FHbFNyDosrKJrMW93I,765
|
|
106
106
|
devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py,sha256=UNULFNbGAgQKxUQ7buEgL8uIzyVP3GEpGKguDIuZTUc,4113
|
|
107
|
-
devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py,sha256=
|
|
107
|
+
devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py,sha256=vluqHpEgzbsh1fyuE-UX41u2yj8TYiRX3UabiwrEcbw,1810
|
|
108
108
|
devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
109
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
110
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
111
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/first_epss_csv.py,sha256=puyoD1csvsJJTmTlJELS97NMoWC4hHAIbYuu916hvQY,2160
|
|
112
112
|
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
|
-
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=
|
|
113
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=6-qnhftZ8bH0KGt_-KhD1lRO2ft71JaSqAPOiX_e1s0,2639
|
|
114
114
|
devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
115
|
devsecops_engine_tools/engine_sast/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
116
|
devsecops_engine_tools/engine_sast/engine_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -239,14 +239,14 @@ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init_
|
|
|
239
239
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
240
240
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
241
241
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py,sha256=yT8C4bGIMii8XE8wnJW0bv6NI2DP-fpvGZTnG5H7gSg,8875
|
|
242
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_tool.py,sha256=
|
|
242
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_tool.py,sha256=5KF8gplfB0sqr9i9_dkmeiV6q-diyQWK7JjS59msY4w,7317
|
|
243
243
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
244
244
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py,sha256=ZUk-e1PKzV7uRAT7BpET363pgl2eMnXMCGSpewsOpKg,2236
|
|
245
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py,sha256=
|
|
245
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py,sha256=kT4Qwahl4HKVMwwwB3mJS5JlIi2jv3ajGV_8zmGfnhs,11607
|
|
246
246
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
247
247
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py,sha256=t2nAJ86ZyL6nz_tdrcWZ3cf5pnXhJ_q1AfVAbNhcrSk,3772
|
|
248
248
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
249
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/get_artifacts.py,sha256=
|
|
249
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/get_artifacts.py,sha256=ECczGxi-neekJAJkMBaRCE_1NTqmcv-5tB90F3GKz7w,5234
|
|
250
250
|
devsecops_engine_tools/engine_utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
251
251
|
devsecops_engine_tools/engine_utilities/settings.py,sha256=CPnDndwVeRgQNml3HVzvytVruDd8dTd1ICHbkMDSgTM,2144
|
|
252
252
|
devsecops_engine_tools/engine_utilities/azuredevops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -352,8 +352,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
|
|
|
352
352
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
353
353
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
|
|
354
354
|
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
|
|
355
|
-
devsecops_engine_tools-1.
|
|
356
|
-
devsecops_engine_tools-1.
|
|
357
|
-
devsecops_engine_tools-1.
|
|
358
|
-
devsecops_engine_tools-1.
|
|
359
|
-
devsecops_engine_tools-1.
|
|
355
|
+
devsecops_engine_tools-1.82.0.dist-info/METADATA,sha256=xQCnIVzAPBfiuoVW3GmVV-eQseZi2B69nsR_L9KhGV8,12093
|
|
356
|
+
devsecops_engine_tools-1.82.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
357
|
+
devsecops_engine_tools-1.82.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
|
|
358
|
+
devsecops_engine_tools-1.82.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
359
|
+
devsecops_engine_tools-1.82.0.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.81.0.dist-info → devsecops_engine_tools-1.82.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.81.0.dist-info → devsecops_engine_tools-1.82.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|