devsecops-engine-tools 1.7.16__tar.gz → 1.7.18__tar.gz
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-1.7.16 → devsecops_engine_tools-1.7.18}/PKG-INFO +1 -1
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +15 -1
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +1 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py +0 -1
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py +1 -1
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +39 -46
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/file_generator_tool.py +19 -19
- devsecops_engine_tools-1.7.18/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +90 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py +2 -2
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py +9 -2
- devsecops_engine_tools-1.7.18/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +100 -0
- devsecops_engine_tools-1.7.18/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +64 -0
- devsecops_engine_tools-1.7.18/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +63 -0
- devsecops_engine_tools-1.7.18/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +106 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +5 -4
- devsecops_engine_tools-1.7.18/devsecops_engine_tools/version.py +1 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools.egg-info/PKG-INFO +1 -1
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools.egg-info/SOURCES.txt +0 -1
- devsecops_engine_tools-1.7.16/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +0 -56
- devsecops_engine_tools-1.7.16/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +0 -119
- devsecops_engine_tools-1.7.16/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +0 -65
- devsecops_engine_tools-1.7.16/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +0 -51
- devsecops_engine_tools-1.7.16/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +0 -114
- devsecops_engine_tools-1.7.16/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/images_scanned.py +0 -16
- devsecops_engine_tools-1.7.16/devsecops_engine_tools/version.py +0 -1
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/README.md +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/exclusions.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/finding.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/input_core.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/report.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/threshold.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/runtime_local.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_config.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/entry_point_tool.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/git_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/git_run.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_artifacts.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/azuredevops/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_api.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/cmdb.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/engagement.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_list.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_list.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/repository/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/github/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/github/models/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/input_validations/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/input_validations/env_utils.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/input_validations/validate_input_with_regex_letters_number_and_only.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/settings.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/ssh/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/__init__.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/api_error.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/dataclass_classmethod.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/datetime_parsing.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/logger_info.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/name_conversion.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/printers.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools/engine_utilities/utils/session_manager.py +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools.egg-info/dependency_links.txt +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools.egg-info/entry_points.txt +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools.egg-info/requires.txt +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/devsecops_engine_tools.egg-info/top_level.txt +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/setup.cfg +0 -0
- {devsecops_engine_tools-1.7.16 → devsecops_engine_tools-1.7.18}/setup.py +0 -0
|
@@ -28,6 +28,20 @@ from devsecops_engine_tools.version import version
|
|
|
28
28
|
|
|
29
29
|
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
30
30
|
|
|
31
|
+
def parse_separated_list(value, choices):
|
|
32
|
+
values = value.split(',')
|
|
33
|
+
# Validar cada elemento de la lista
|
|
34
|
+
for val in values:
|
|
35
|
+
if val not in choices:
|
|
36
|
+
raise argparse.ArgumentTypeError(f"Invalid value: {val}. Valid values are: {', '.join(choices)}")
|
|
37
|
+
|
|
38
|
+
return values
|
|
39
|
+
|
|
40
|
+
def parse_choices(choices):
|
|
41
|
+
def parse_with_choices(value):
|
|
42
|
+
return parse_separated_list(value, choices)
|
|
43
|
+
return parse_with_choices
|
|
44
|
+
|
|
31
45
|
def get_inputs_from_cli(args):
|
|
32
46
|
parser = argparse.ArgumentParser()
|
|
33
47
|
parser.add_argument("-v", "--version", action='version', version='{version}'.format(version=version))
|
|
@@ -49,7 +63,7 @@ def get_inputs_from_cli(args):
|
|
|
49
63
|
)
|
|
50
64
|
parser.add_argument("-fp", "--folder_path", type=str, required=False, help="Folder Path to scan, only apply engine_iac tool")
|
|
51
65
|
parser.add_argument("-p",
|
|
52
|
-
"--platform",
|
|
66
|
+
"--platform", type=parse_choices({"all", "docker", "k8s", "cloudformation"}), required=False, default="all" ,help="Platform to scan, only apply engine_iac tool"
|
|
53
67
|
)
|
|
54
68
|
parser.add_argument(
|
|
55
69
|
"--use_secrets_manager",
|
|
@@ -6,7 +6,6 @@ class ConfigTool:
|
|
|
6
6
|
self.version = json_data[tool]["VERSION"]
|
|
7
7
|
self.search_pattern = json_data["SEARCH_PATTERN"]
|
|
8
8
|
self.ignore_search_pattern = json_data["IGNORE_SEARCH_PATTERN"]
|
|
9
|
-
self.exclusions_path = json_data["EXCLUSIONS_PATH"]
|
|
10
9
|
self.use_external_checks_git = json_data[tool]["USE_EXTERNAL_CHECKS_GIT"]
|
|
11
10
|
self.external_checks_git = json_data[tool]["EXTERNAL_CHECKS_GIT"]
|
|
12
11
|
self.repository_ssh_host = json_data[tool]["EXTERNAL_GIT_SSH_HOST"]
|
|
@@ -2,5 +2,5 @@ from abc import ABCMeta, abstractmethod
|
|
|
2
2
|
|
|
3
3
|
class ToolGateway(metaclass=ABCMeta):
|
|
4
4
|
@abstractmethod
|
|
5
|
-
def run_tool(self, config_tool, folders_to_scan, environment,
|
|
5
|
+
def run_tool(self, config_tool, folders_to_scan, environment, platform_to_scan, secret_tool):
|
|
6
6
|
"run_tool"
|
|
@@ -38,6 +38,7 @@ class CheckovTool(ToolGateway):
|
|
|
38
38
|
CHECKOV_CONFIG_FILE = "checkov_config.yaml"
|
|
39
39
|
TOOL = "CHECKOV"
|
|
40
40
|
framework_mapping = {"RULES_DOCKER": "dockerfile", "RULES_K8S": "kubernetes", "RULES_CLOUDFORMATION": "cloudformation"}
|
|
41
|
+
framework_external_checks = ["RULES_K8S", "RULES_CLOUDFORMATION","RULES_DOCKER"]
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
def create_config_file(self, checkov_config: CheckovConfig):
|
|
@@ -113,58 +114,50 @@ class CheckovTool(ToolGateway):
|
|
|
113
114
|
output = self.execute(checkov_config)
|
|
114
115
|
result.append(json.loads(output))
|
|
115
116
|
queue.put(result)
|
|
116
|
-
|
|
117
|
-
def if_platform(self,value,container_platform):
|
|
118
|
-
if value.get("platform_not_apply"):
|
|
119
|
-
if value.get("platform_not_apply") != container_platform:
|
|
120
|
-
return True
|
|
121
|
-
else:
|
|
122
|
-
return False
|
|
123
|
-
else:
|
|
124
|
-
return True
|
|
125
117
|
|
|
126
118
|
def scan_folders(
|
|
127
|
-
self, folders_to_scan, config_tool: ConfigTool, agent_env, environment,
|
|
119
|
+
self, folders_to_scan, config_tool: ConfigTool, agent_env, environment, platform_to_scan
|
|
128
120
|
):
|
|
129
121
|
output_queue = queue.Queue()
|
|
130
122
|
# Crea una lista para almacenar los hilos
|
|
131
123
|
threads = []
|
|
132
124
|
for folder in folders_to_scan:
|
|
133
125
|
for rule in config_tool.rules_data_type:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
126
|
+
if "all" in platform_to_scan or any(elem.upper() in rule for elem in platform_to_scan):
|
|
127
|
+
checkov_config = CheckovConfig(
|
|
128
|
+
path_config_file="",
|
|
129
|
+
config_file_name=rule,
|
|
130
|
+
framework=self.framework_mapping[rule],
|
|
131
|
+
checks=[
|
|
132
|
+
key
|
|
133
|
+
for key, value in config_tool.rules_data_type[rule].items()
|
|
134
|
+
if value["environment"].get(environment)
|
|
135
|
+
],
|
|
136
|
+
soft_fail=False,
|
|
137
|
+
directories=folder,
|
|
138
|
+
external_checks_git=[
|
|
139
|
+
f"{config_tool.external_checks_git}/{self.framework_mapping[rule]}"
|
|
140
|
+
]
|
|
141
|
+
if config_tool.use_external_checks_git == "True"
|
|
142
|
+
and agent_env is not None
|
|
143
|
+
and rule in self.framework_external_checks
|
|
144
|
+
else [],
|
|
145
|
+
env=agent_env,
|
|
146
|
+
external_checks_dir=f"/tmp/rules/{self.framework_mapping[rule]}"
|
|
147
|
+
if config_tool.use_external_checks_dir == "True"
|
|
148
|
+
and rule in self.framework_external_checks
|
|
149
|
+
else [],
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
checkov_config.create_config_dict()
|
|
153
|
+
self.create_config_file(checkov_config)
|
|
154
|
+
config_tool.rules_all.update(config_tool.rules_data_type[rule])
|
|
155
|
+
t = threading.Thread(
|
|
156
|
+
target=self.async_scan,
|
|
157
|
+
args=(output_queue, checkov_config),
|
|
158
|
+
)
|
|
159
|
+
t.start()
|
|
160
|
+
threads.append(t)
|
|
168
161
|
# Espera a que todos los hilos terminen
|
|
169
162
|
for t in threads:
|
|
170
163
|
t.join()
|
|
@@ -176,12 +169,12 @@ class CheckovTool(ToolGateway):
|
|
|
176
169
|
return result_scans
|
|
177
170
|
|
|
178
171
|
def run_tool(
|
|
179
|
-
self, config_tool: ConfigTool, folders_to_scan, environment,
|
|
172
|
+
self, config_tool: ConfigTool, folders_to_scan, environment, platform_to_scan, secret_tool
|
|
180
173
|
):
|
|
181
174
|
agent_env = self.configurate_external_checks(config_tool, secret_tool)
|
|
182
175
|
|
|
183
176
|
result_scans = self.scan_folders(
|
|
184
|
-
folders_to_scan, config_tool, agent_env, environment,
|
|
177
|
+
folders_to_scan, config_tool, agent_env, environment, platform_to_scan
|
|
185
178
|
)
|
|
186
179
|
|
|
187
180
|
checkov_deserealizator = CheckovDeserealizator()
|
|
@@ -35,27 +35,27 @@ def generate_file_from_tool(tool, result_list, rules_doc):
|
|
|
35
35
|
"checkov_version", None
|
|
36
36
|
)
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
38
|
+
file_name = "results.json"
|
|
39
|
+
results_data = {
|
|
40
|
+
"check_type": "Dockerfile, Kubernetes and CloudFormation",
|
|
41
|
+
"results": {
|
|
42
|
+
"failed_checks": all_failed_checks,
|
|
43
|
+
},
|
|
44
|
+
"summary": {
|
|
45
|
+
"passed": summary_passed,
|
|
46
|
+
"failed": summary_failed,
|
|
47
|
+
"skipped": summary_skipped,
|
|
48
|
+
"parsing_errors": summary_parsing_errors,
|
|
49
|
+
"resource_count": summary_resource_count,
|
|
50
|
+
"checkov_version": checkov_version,
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
with open(file_name, "w") as json_file:
|
|
55
|
+
json.dump(results_data, json_file, indent=4)
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
absolute_path = os.path.abspath(file_name)
|
|
58
|
+
return absolute_path
|
|
59
59
|
except Exception as ex:
|
|
60
60
|
logger.error(f"Error during handling checkov json integrator {ex}")
|
|
61
61
|
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.tool_gateway import (
|
|
2
|
+
ToolGateway,
|
|
3
|
+
)
|
|
4
|
+
from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.images_gateway import (
|
|
5
|
+
ImagesGateway,
|
|
6
|
+
)
|
|
7
|
+
from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.deserealizator_gateway import (
|
|
8
|
+
DeseralizatorGateway,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ContainerScaScan:
|
|
15
|
+
def __init__(
|
|
16
|
+
self,
|
|
17
|
+
tool_run: ToolGateway,
|
|
18
|
+
remote_config,
|
|
19
|
+
tool_images: ImagesGateway,
|
|
20
|
+
tool_deseralizator: DeseralizatorGateway,
|
|
21
|
+
build_id,
|
|
22
|
+
token,
|
|
23
|
+
):
|
|
24
|
+
self.tool_run = tool_run
|
|
25
|
+
self.remote_config = remote_config
|
|
26
|
+
self.tool_images = tool_images
|
|
27
|
+
self.tool_deseralizator = tool_deseralizator
|
|
28
|
+
self.build_id = build_id
|
|
29
|
+
self.token = token
|
|
30
|
+
|
|
31
|
+
def get_latest_image(self):
|
|
32
|
+
"""
|
|
33
|
+
Process the list of images.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
list: List of processed images.
|
|
37
|
+
"""
|
|
38
|
+
return self.tool_images.list_images()
|
|
39
|
+
|
|
40
|
+
def get_images_already_scanned(self):
|
|
41
|
+
"""
|
|
42
|
+
Create images scanned file if it does not exist and get the images that have already been scanned.
|
|
43
|
+
"""
|
|
44
|
+
scanned_images_file = os.path.join(os.getcwd(), "scanned_images.txt")
|
|
45
|
+
if not os.path.exists(scanned_images_file):
|
|
46
|
+
open(scanned_images_file, "w").close()
|
|
47
|
+
with open(scanned_images_file, "r") as file:
|
|
48
|
+
images_scanned = file.read().splitlines()
|
|
49
|
+
return images_scanned
|
|
50
|
+
|
|
51
|
+
def set_image_scanned(self, result_file):
|
|
52
|
+
"""
|
|
53
|
+
Write in scanned_images.txt the result file
|
|
54
|
+
"""
|
|
55
|
+
with open("scanned_images.txt", "a") as file:
|
|
56
|
+
file.write(result_file + "\n")
|
|
57
|
+
|
|
58
|
+
def process(self):
|
|
59
|
+
"""
|
|
60
|
+
Process SCA scanning.
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
string: file scanning results name.
|
|
64
|
+
"""
|
|
65
|
+
latest_image = self.get_latest_image()
|
|
66
|
+
image_name = latest_image.tags[0]
|
|
67
|
+
image_scanned = None
|
|
68
|
+
if str(self.build_id) in image_name:
|
|
69
|
+
result_file = image_name + "_scan_result.json"
|
|
70
|
+
if result_file in self.get_images_already_scanned():
|
|
71
|
+
print(f"The image {image_name} has already been scanned previously.")
|
|
72
|
+
return image_scanned
|
|
73
|
+
image_scanned = self.tool_run.run_tool_container_sca(
|
|
74
|
+
self.remote_config, self.token, image_name, result_file
|
|
75
|
+
)
|
|
76
|
+
self.set_image_scanned(result_file)
|
|
77
|
+
else:
|
|
78
|
+
print(
|
|
79
|
+
f"'{image_name}' name does not contain build number '{self.build_id}'. Tool skipped."
|
|
80
|
+
)
|
|
81
|
+
return image_scanned
|
|
82
|
+
|
|
83
|
+
def deseralizator(self, image_scanned):
|
|
84
|
+
"""
|
|
85
|
+
Process the results deserializer.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
list: Deserialized list of findings.
|
|
89
|
+
"""
|
|
90
|
+
return self.tool_deseralizator.get_list_findings(image_scanned)
|
|
@@ -31,7 +31,7 @@ class SetInputCore:
|
|
|
31
31
|
]
|
|
32
32
|
return list_exclusions
|
|
33
33
|
|
|
34
|
-
def set_input_core(self,
|
|
34
|
+
def set_input_core(self, image_scanned):
|
|
35
35
|
"""
|
|
36
36
|
Set the input core.
|
|
37
37
|
|
|
@@ -45,7 +45,7 @@ class SetInputCore:
|
|
|
45
45
|
self.tool,
|
|
46
46
|
),
|
|
47
47
|
Threshold(self.remote_config["THRESHOLD"]),
|
|
48
|
-
|
|
48
|
+
image_scanned,
|
|
49
49
|
self.remote_config["MESSAGE_INFO_ENGINE_CONTAINER"],
|
|
50
50
|
self.pipeline_name,
|
|
51
51
|
self.stage.capitalize(),
|
|
@@ -4,6 +4,11 @@ from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateway
|
|
|
4
4
|
)
|
|
5
5
|
import docker
|
|
6
6
|
|
|
7
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
8
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
9
|
+
|
|
10
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
11
|
+
|
|
7
12
|
|
|
8
13
|
class DockerImages(ImagesGateway):
|
|
9
14
|
def list_images(self):
|
|
@@ -18,5 +23,7 @@ class DockerImages(ImagesGateway):
|
|
|
18
23
|
print("Tag last image:", latest_image.tags)
|
|
19
24
|
print("Created date last image:", latest_image.attrs["Created"])
|
|
20
25
|
return latest_image
|
|
21
|
-
except
|
|
22
|
-
|
|
26
|
+
except Exception as e:
|
|
27
|
+
logger.error(
|
|
28
|
+
f"Error listing images, docker must be running and added to PATH: {e}"
|
|
29
|
+
)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import stat
|
|
2
|
+
import requests
|
|
3
|
+
import os
|
|
4
|
+
import subprocess
|
|
5
|
+
import logging
|
|
6
|
+
import base64
|
|
7
|
+
from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.tool_gateway import (
|
|
8
|
+
ToolGateway,
|
|
9
|
+
)
|
|
10
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
11
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
12
|
+
|
|
13
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class PrismaCloudManagerScan(ToolGateway):
|
|
17
|
+
def download_twistcli(
|
|
18
|
+
self,
|
|
19
|
+
file_path,
|
|
20
|
+
prisma_access_key,
|
|
21
|
+
prisma_secret_key,
|
|
22
|
+
prisma_console_url,
|
|
23
|
+
prisma_api_version,
|
|
24
|
+
):
|
|
25
|
+
url = f"{prisma_console_url}/api/{prisma_api_version}/util/twistcli"
|
|
26
|
+
credentials = base64.b64encode(
|
|
27
|
+
f"{prisma_access_key}:{prisma_secret_key}".encode()
|
|
28
|
+
).decode()
|
|
29
|
+
headers = {"Authorization": f"Basic {credentials}"}
|
|
30
|
+
try:
|
|
31
|
+
response = requests.get(url, headers=headers)
|
|
32
|
+
response.raise_for_status()
|
|
33
|
+
|
|
34
|
+
with open(file_path, "wb") as file:
|
|
35
|
+
file.write(response.content)
|
|
36
|
+
|
|
37
|
+
os.chmod(file_path, stat.S_IRWXU)
|
|
38
|
+
logging.info(f"twistcli downloaded and saved to: {file_path}")
|
|
39
|
+
return 0
|
|
40
|
+
|
|
41
|
+
except Exception as e:
|
|
42
|
+
raise ValueError(f"Error downloading twistcli: {e}")
|
|
43
|
+
|
|
44
|
+
def scan_image(
|
|
45
|
+
self, file_path, image_name, result_file, remoteconfig, prisma_secret_key
|
|
46
|
+
):
|
|
47
|
+
command = (
|
|
48
|
+
file_path,
|
|
49
|
+
"images",
|
|
50
|
+
"scan",
|
|
51
|
+
"--address",
|
|
52
|
+
remoteconfig["PRISMA_CLOUD"]["PRISMA_CONSOLE_URL"],
|
|
53
|
+
"--user",
|
|
54
|
+
remoteconfig["PRISMA_CLOUD"]["PRISMA_ACCESS_KEY"],
|
|
55
|
+
"--password",
|
|
56
|
+
prisma_secret_key,
|
|
57
|
+
"--output-file",
|
|
58
|
+
result_file,
|
|
59
|
+
"--details",
|
|
60
|
+
image_name,
|
|
61
|
+
)
|
|
62
|
+
try:
|
|
63
|
+
subprocess.run(
|
|
64
|
+
command,
|
|
65
|
+
check=True,
|
|
66
|
+
stdout=subprocess.PIPE,
|
|
67
|
+
stderr=subprocess.PIPE,
|
|
68
|
+
text=True,
|
|
69
|
+
)
|
|
70
|
+
print(f"The image {image_name} was scanned")
|
|
71
|
+
|
|
72
|
+
return result_file
|
|
73
|
+
|
|
74
|
+
except subprocess.CalledProcessError as e:
|
|
75
|
+
logger.error(f"Error during image scan of {image_name}: {e.stderr}")
|
|
76
|
+
|
|
77
|
+
def run_tool_container_sca(
|
|
78
|
+
self, remoteconfig, prisma_secret_key, image_name, result_file
|
|
79
|
+
):
|
|
80
|
+
file_path = os.path.join(
|
|
81
|
+
os.getcwd(), remoteconfig["PRISMA_CLOUD"]["TWISTCLI_PATH"]
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
if not os.path.exists(file_path):
|
|
85
|
+
self.download_twistcli(
|
|
86
|
+
file_path,
|
|
87
|
+
remoteconfig["PRISMA_CLOUD"]["PRISMA_ACCESS_KEY"],
|
|
88
|
+
prisma_secret_key,
|
|
89
|
+
remoteconfig["PRISMA_CLOUD"]["PRISMA_CONSOLE_URL"],
|
|
90
|
+
remoteconfig["PRISMA_CLOUD"]["PRISMA_API_VERSION"],
|
|
91
|
+
)
|
|
92
|
+
image_scanned = self.scan_image(
|
|
93
|
+
file_path,
|
|
94
|
+
image_name,
|
|
95
|
+
result_file,
|
|
96
|
+
remoteconfig,
|
|
97
|
+
prisma_secret_key,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
return image_scanned
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.deserealizator_gateway import (
|
|
2
|
+
DeseralizatorGateway,
|
|
3
|
+
)
|
|
4
|
+
from devsecops_engine_tools.engine_core.src.domain.model.finding import (
|
|
5
|
+
Finding,
|
|
6
|
+
Category,
|
|
7
|
+
)
|
|
8
|
+
from datetime import datetime
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
import json
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class PrismaDeserealizator(DeseralizatorGateway):
|
|
15
|
+
def get_list_findings(self, image_scanned) -> "list[Finding]":
|
|
16
|
+
list_open_vulnerabilities = []
|
|
17
|
+
SEVERITY_MAP = {
|
|
18
|
+
"unimportant": "low",
|
|
19
|
+
"unassigned": "low",
|
|
20
|
+
"negligible": "low",
|
|
21
|
+
"not yet assigned": "low",
|
|
22
|
+
"low": "low",
|
|
23
|
+
"medium": "medium",
|
|
24
|
+
"moderate": "medium",
|
|
25
|
+
"high": "high",
|
|
26
|
+
"important": "high",
|
|
27
|
+
"critical": "critical",
|
|
28
|
+
}
|
|
29
|
+
with open(image_scanned, "rb") as file:
|
|
30
|
+
image_object = file.read()
|
|
31
|
+
|
|
32
|
+
json_data = json.loads(image_object)
|
|
33
|
+
vulnerabilities_data = (
|
|
34
|
+
json_data["results"][0]["vulnerabilities"]
|
|
35
|
+
if "vulnerabilities" in json_data["results"][0]
|
|
36
|
+
else []
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
# Create a list of findings instances from the JSON data
|
|
40
|
+
vulnerabilities = [
|
|
41
|
+
Finding(
|
|
42
|
+
id=vul.get("id", ""),
|
|
43
|
+
cvss=float(vul.get("cvss", 0.0)),
|
|
44
|
+
where=vul.get("packageName", "")
|
|
45
|
+
+ ":"
|
|
46
|
+
+ vul.get("packageVersion", ""),
|
|
47
|
+
description=vul.get("description", "")[:150],
|
|
48
|
+
severity=SEVERITY_MAP.get(vul.get("severity", ""), ""),
|
|
49
|
+
identification_date=datetime.strptime(
|
|
50
|
+
vul.get("discoveredDate", ""), "%Y-%m-%dT%H:%M:%S%z"
|
|
51
|
+
),
|
|
52
|
+
published_date_cve=vul.get("publishedDate", "").replace("Z", "+00:00"),
|
|
53
|
+
module="engine_container",
|
|
54
|
+
category=Category.VULNERABILITY,
|
|
55
|
+
requirements=vul.get("status", ""),
|
|
56
|
+
tool="PrismaCloud",
|
|
57
|
+
)
|
|
58
|
+
for vul in vulnerabilities_data
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
# Add the Vulnerability instances to the list
|
|
62
|
+
list_open_vulnerabilities.extend(vulnerabilities)
|
|
63
|
+
|
|
64
|
+
return list_open_vulnerabilities
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.deserealizator_gateway import (
|
|
2
|
+
DeseralizatorGateway,
|
|
3
|
+
)
|
|
4
|
+
from devsecops_engine_tools.engine_core.src.domain.model.finding import (
|
|
5
|
+
Finding,
|
|
6
|
+
Category,
|
|
7
|
+
)
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
import json
|
|
10
|
+
from datetime import datetime, timezone
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class TrivyDeserializator(DeseralizatorGateway):
|
|
15
|
+
def check_date_format(self, vul):
|
|
16
|
+
try:
|
|
17
|
+
published_date_cve=datetime.strptime(
|
|
18
|
+
vul.get("PublishedDate"),
|
|
19
|
+
"%Y-%m-%dT%H:%M:%S.%fZ"
|
|
20
|
+
).replace(tzinfo=timezone.utc).isoformat()
|
|
21
|
+
except:
|
|
22
|
+
published_date_cve=datetime.strptime(
|
|
23
|
+
vul.get("PublishedDate"),
|
|
24
|
+
"%Y-%m-%dT%H:%M:%SZ"
|
|
25
|
+
).replace(tzinfo=timezone.utc).isoformat()
|
|
26
|
+
return published_date_cve
|
|
27
|
+
|
|
28
|
+
def get_list_findings(self, image_scanned) -> "list[Finding]":
|
|
29
|
+
list_open_vulnerabilities = []
|
|
30
|
+
with open(image_scanned, "rb") as file:
|
|
31
|
+
image_object = file.read()
|
|
32
|
+
json_data = json.loads(image_object)
|
|
33
|
+
vulnerabilities_data = json_data["Results"][0].get("Vulnerabilities", [])
|
|
34
|
+
vulnerabilities = [
|
|
35
|
+
Finding(
|
|
36
|
+
id=vul.get("VulnerabilityID", ""),
|
|
37
|
+
cvss=str(next(
|
|
38
|
+
(
|
|
39
|
+
v["V3Score"]
|
|
40
|
+
for v in vul["CVSS"].values()
|
|
41
|
+
if "V3Score" in v
|
|
42
|
+
),
|
|
43
|
+
None,
|
|
44
|
+
)),
|
|
45
|
+
where=vul.get("PkgName", "")
|
|
46
|
+
+ " "
|
|
47
|
+
+ vul.get("InstalledVersion", ""),
|
|
48
|
+
description=vul.get("Description", "").replace("\n", "")[:150],
|
|
49
|
+
severity=vul.get("Severity", "").lower(),
|
|
50
|
+
identification_date=datetime.now().strftime(
|
|
51
|
+
"%Y-%m-%dT%H:%M:%S%z"
|
|
52
|
+
),
|
|
53
|
+
published_date_cve=self.check_date_format(vul),
|
|
54
|
+
module="engine_container",
|
|
55
|
+
category=Category.VULNERABILITY,
|
|
56
|
+
requirements=vul.get("FixedVersion") or vul.get("Status", ""),
|
|
57
|
+
tool="Trivy",
|
|
58
|
+
)
|
|
59
|
+
for vul in vulnerabilities_data
|
|
60
|
+
if vul.get("CVSS") and vul.get("PublishedDate")
|
|
61
|
+
]
|
|
62
|
+
list_open_vulnerabilities.extend(vulnerabilities)
|
|
63
|
+
return list_open_vulnerabilities
|