cycode 3.1.1.dev2__tar.gz → 3.1.1.dev4__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.
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/PKG-INFO +103 -67
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/README.md +102 -66
- cycode-3.1.1.dev4/cycode/__init__.py +1 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/path/path_command.py +2 -2
- cycode-3.1.1.dev4/cycode/cli/apps/scan/aggregation_report.py +42 -0
- cycode-3.1.1.dev4/cycode/cli/apps/scan/code_scanner.py +306 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/commit_history/commit_history_command.py +2 -2
- cycode-3.1.1.dev4/cycode/cli/apps/scan/commit_range_scanner.py +318 -0
- cycode-3.1.1.dev4/cycode/cli/apps/scan/detection_excluder.py +153 -0
- cycode-3.1.1.dev4/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +21 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +18 -17
- cycode-3.1.1.dev4/cycode/cli/apps/scan/remote_url_resolver.py +115 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/repository/repository_command.py +5 -4
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +2 -2
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_command.py +1 -1
- cycode-3.1.1.dev4/cycode/cli/apps/scan/scan_parameters.py +46 -0
- cycode-3.1.1.dev4/cycode/cli/apps/scan/scan_result.py +212 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/consts.py +3 -1
- cycode-3.1.1.dev4/cycode/cli/files_collector/commit_range_documents.py +289 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/path_documents.py +1 -1
- cycode-3.1.1.dev4/cycode/cli/files_collector/repository_documents.py +26 -0
- cycode-3.1.1.dev2/cycode/cli/files_collector/sca/sca_code_scanner.py → cycode-3.1.1.dev4/cycode/cli/files_collector/sca/sca_file_collector.py +59 -65
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/zip_documents.py +3 -3
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/sca_table_printer.py +1 -1
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table_printer.py +1 -1
- cycode-3.1.1.dev4/cycode/cli/printers/utils/__init__.py +5 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/code_snippet_syntax.py +20 -17
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/path_utils.py +8 -0
- cycode-3.1.1.dev4/cycode/cli/utils/scan_utils.py +29 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/scan_client.py +30 -8
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/pyproject.toml +1 -1
- cycode-3.1.1.dev2/cycode/__init__.py +0 -1
- cycode-3.1.1.dev2/cycode/cli/apps/scan/code_scanner.py +0 -1093
- cycode-3.1.1.dev2/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -49
- cycode-3.1.1.dev2/cycode/cli/files_collector/repository_documents.py +0 -146
- cycode-3.1.1.dev2/cycode/cli/printers/utils/__init__.py +0 -8
- cycode-3.1.1.dev2/cycode/cli/utils/scan_utils.py +0 -11
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/LICENCE +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/__main__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/app.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/auth_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/auth_common.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/auth_manager.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/models.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/configure_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/consts.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/messages.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/prompts.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ignore/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ignore/ignore_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/report_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/common.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/path/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/path/path_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/repository/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/get_cli_status.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/models.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/status_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/version_command.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/cli_types.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/config.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/console.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/custom_exceptions.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_errors.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/__init__.py +0 -0
- /cycode-3.1.1.dev2/cycode/cli/files_collector/excluder.py → /cycode-3.1.1.dev4/cycode/cli/files_collector/file_excluder.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/iac/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/models/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/walk_ignore.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/logger.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/main.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/models.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/console_printer.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/json_printer.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/printer_base.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/rich_printer.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table_models.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table_printer_base.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/text_printer.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_data.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/rich_helpers.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/base_file_manager.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/config_file_manager.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/configuration_manager.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/credentials_manager.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/jwt_creator.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/enum_utils.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/get_api_client.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/git_proxy.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/ignore_utils.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/jwt_utils.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/progress_bar.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/scan_batch.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/sentry.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/shell_executor.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/string_utils.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/task_timer.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/version_checker.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/yaml_utils.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/config.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/__init__.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/auth_client.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/client_creator.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/config.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/config_dev.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_client.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_client_base.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_dev_based_client.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_token_based_client.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/headers.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/logger.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/models.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/report_client.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/scan_config_base.py +0 -0
- {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/logger.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cycode
|
|
3
|
-
Version: 3.1.1.
|
|
3
|
+
Version: 3.1.1.dev4
|
|
4
4
|
Summary: Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning.
|
|
5
5
|
Home-page: https://github.com/cycodehq/cycode-cli
|
|
6
6
|
License: MIT
|
|
@@ -127,9 +127,15 @@ To install the Cycode CLI application on your local machine, perform the followi
|
|
|
127
127
|
brew install cycode
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
- To install from [GitHub Releases](https://github.com/cycodehq/cycode-cli/releases) navigate and download executable for your operating system and architecture, then run the following command:
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
```bash
|
|
133
|
+
cd /path/to/downloaded/cycode-cli
|
|
134
|
+
chmod +x cycode
|
|
135
|
+
./cycode
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
3. Authenticate CLI. There are three methods to set the Cycode client ID and client secret:
|
|
133
139
|
|
|
134
140
|
- [cycode auth](#using-the-auth-command) (**Recommended**)
|
|
135
141
|
- [cycode configure](#using-the-configure-command)
|
|
@@ -246,7 +252,7 @@ export CYCODE_CLIENT_SECRET={your Cycode Secret Key}
|
|
|
246
252
|
Cycode’s pre-commit hook can be set up within your local repository so that the Cycode CLI application will identify any issues with your code automatically before you commit it to your codebase.
|
|
247
253
|
|
|
248
254
|
> [!NOTE]
|
|
249
|
-
> pre-commit hook is
|
|
255
|
+
> pre-commit hook is not available for IaC scans.
|
|
250
256
|
|
|
251
257
|
Perform the following steps to install the pre-commit hook:
|
|
252
258
|
|
|
@@ -263,19 +269,19 @@ Perform the following steps to install the pre-commit hook:
|
|
|
263
269
|
```yaml
|
|
264
270
|
repos:
|
|
265
271
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
266
|
-
rev: v3.
|
|
272
|
+
rev: v3.2.0
|
|
267
273
|
hooks:
|
|
268
274
|
- id: cycode
|
|
269
275
|
stages:
|
|
270
276
|
- pre-commit
|
|
271
277
|
```
|
|
272
278
|
|
|
273
|
-
4. Modify the created file for your specific needs. Use hook ID `cycode` to enable scan for Secrets. Use hook ID `cycode-sca` to enable SCA scan. If you want to enable
|
|
279
|
+
4. Modify the created file for your specific needs. Use hook ID `cycode` to enable scan for Secrets. Use hook ID `cycode-sca` to enable SCA scan. Use hook ID `cycode-sast` to enable SAST scan. If you want to enable all scanning types, use this configuration:
|
|
274
280
|
|
|
275
281
|
```yaml
|
|
276
282
|
repos:
|
|
277
283
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
278
|
-
rev: v3.
|
|
284
|
+
rev: v3.2.0
|
|
279
285
|
hooks:
|
|
280
286
|
- id: cycode
|
|
281
287
|
stages:
|
|
@@ -283,6 +289,9 @@ Perform the following steps to install the pre-commit hook:
|
|
|
283
289
|
- id: cycode-sca
|
|
284
290
|
stages:
|
|
285
291
|
- pre-commit
|
|
292
|
+
- id: cycode-sast
|
|
293
|
+
stages:
|
|
294
|
+
- pre-commit
|
|
286
295
|
```
|
|
287
296
|
|
|
288
297
|
5. Install Cycode’s hook:
|
|
@@ -309,14 +318,17 @@ Perform the following steps to install the pre-commit hook:
|
|
|
309
318
|
|
|
310
319
|
The following are the options and commands available with the Cycode CLI application:
|
|
311
320
|
|
|
312
|
-
| Option
|
|
313
|
-
|
|
314
|
-
| `-v`, `--verbose`
|
|
315
|
-
| `--no-progress-meter`
|
|
316
|
-
| `--no-update-notifier`
|
|
317
|
-
| `-o`, `--output [text\|json\|table]`
|
|
318
|
-
| `--
|
|
319
|
-
| `--
|
|
321
|
+
| Option | Description |
|
|
322
|
+
|-------------------------------------------------------------------|------------------------------------------------------------------------------------|
|
|
323
|
+
| `-v`, `--verbose` | Show detailed logs. |
|
|
324
|
+
| `--no-progress-meter` | Do not show the progress meter. |
|
|
325
|
+
| `--no-update-notifier` | Do not check CLI for updates. |
|
|
326
|
+
| `-o`, `--output [rich\|text\|json\|table]` | Specify the output type. The default is `rich`. |
|
|
327
|
+
| `--client-id TEXT` | Specify a Cycode client ID for this specific scan execution. |
|
|
328
|
+
| `--client-secret TEXT` | Specify a Cycode client secret for this specific scan execution. |
|
|
329
|
+
| `--install-completion` | Install completion for the current shell.. |
|
|
330
|
+
| `--show-completion [bash\|zsh\|fish\|powershell\|pwsh]` | Show completion for the specified shell, to copy it or customize the installation. |
|
|
331
|
+
| `-h`, `--help` | Show options for given command. |
|
|
320
332
|
|
|
321
333
|
| Command | Description |
|
|
322
334
|
|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
|
|
@@ -336,8 +348,6 @@ The Cycode CLI application offers several types of scans so that you can choose
|
|
|
336
348
|
| Option | Description |
|
|
337
349
|
|------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|
|
|
338
350
|
| `-t, --scan-type [secret\|iac\|sca\|sast]` | Specify the scan you wish to execute (`secret`/`iac`/`sca`/`sast`), the default is `secret`. |
|
|
339
|
-
| `--client-secret TEXT` | Specify a Cycode client secret for this specific scan execution. |
|
|
340
|
-
| `--client-id TEXT` | Specify a Cycode client ID for this specific scan execution. |
|
|
341
351
|
| `--show-secret BOOLEAN` | Show secrets in plain text. See [Show/Hide Secrets](#showhide-secrets) section for more details. |
|
|
342
352
|
| `--soft-fail BOOLEAN` | Run scan without failing, always return a non-error status code. See [Soft Fail](#soft-fail) section for more details. |
|
|
343
353
|
| `--severity-threshold [INFO\|LOW\|MEDIUM\|HIGH\|CRITICAL]` | Show only violations at the specified level or higher. |
|
|
@@ -499,6 +509,9 @@ _How to generate a Terraform plan from Terraform configuration file?_
|
|
|
499
509
|
|
|
500
510
|
### Commit History Scan
|
|
501
511
|
|
|
512
|
+
> [!NOTE]
|
|
513
|
+
> Secrets scanning analyzes all commits in the repository history because secrets introduced and later removed can still be leaked or exposed. SCA and SAST scanning focus only on the latest code state and the changes between branches or pull requests. Full commit history scanning is not performed for SCA and SAST.
|
|
514
|
+
|
|
502
515
|
A commit history scan is limited to a local repository’s previous commits, focused on finding any secrets within the commit history, instead of examining the repository’s current state.
|
|
503
516
|
|
|
504
517
|
To execute a commit history scan, execute the following:
|
|
@@ -541,15 +554,7 @@ If no issues are found, the scan ends with the following success message:
|
|
|
541
554
|
|
|
542
555
|
`Good job! No issues were found!!! 👏👏👏`
|
|
543
556
|
|
|
544
|
-
If an issue is found, a
|
|
545
|
-
|
|
546
|
-
```bash
|
|
547
|
-
⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
|
|
548
|
-
Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
|
|
549
|
-
0 | @@ -0,0 +1 @@
|
|
550
|
-
1 | +my_password = 'h3l***********350'
|
|
551
|
-
2 |
|
|
552
|
-
```
|
|
557
|
+
If an issue is found, a violation card appears upon completion instead.
|
|
553
558
|
|
|
554
559
|
If an issue is found, review the file in question for the specific line highlighted by the result message. Implement any changes required to resolve the issue, then execute the scan again.
|
|
555
560
|
|
|
@@ -565,15 +570,7 @@ In the following example, a Path Scan is executed against the `cli` subdirectory
|
|
|
565
570
|
|
|
566
571
|
`cycode scan --show-secret path ./cli`
|
|
567
572
|
|
|
568
|
-
The result would then not be obfuscated
|
|
569
|
-
|
|
570
|
-
```bash
|
|
571
|
-
⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
|
|
572
|
-
Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
|
|
573
|
-
0 | @@ -0,0 +1 @@
|
|
574
|
-
1 | +my_password = 'h3110w0r1d!@#$350'
|
|
575
|
-
2 |
|
|
576
|
-
```
|
|
573
|
+
The result would then not be obfuscated.
|
|
577
574
|
|
|
578
575
|
### Soft Fail
|
|
579
576
|
|
|
@@ -589,41 +586,92 @@ Scan results are assigned with a value of exit code `1` when issues are found in
|
|
|
589
586
|
#### Secrets Result Example
|
|
590
587
|
|
|
591
588
|
```bash
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
589
|
+
╭─────────────────────────────────────────────────────────────── Hardcoded generic-password is used ───────────────────────────────────────────────────────────────╮
|
|
590
|
+
│ Violation 12 of 12 │
|
|
591
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
592
|
+
│ │ Severity 🟠 MEDIUM │ │ 34 }; │ │
|
|
593
|
+
│ │ In file /Users/cycodemacuser/NodeGoat/test/s │ │ 35 │ │
|
|
594
|
+
│ │ ecurity/profile-test.js │ │ 36 var sutUserName = "user1"; │ │
|
|
595
|
+
│ │ Secret SHA b4ea3116d868b7c982ee6812cce61727856b │ │ ❱ 37 var sutUserPassword = "Us*****23"; │ │
|
|
596
|
+
│ │ 802b3063cd5aebe7d796988552e0 │ │ 38 │ │
|
|
597
|
+
│ │ Rule ID 68b6a876-4890-4e62-9531-0e687223579f │ │ 39 chrome.setDefaultService(service); │ │
|
|
598
|
+
│ ╰────────────────────────────────────────────────────╯ │ 40 │ │
|
|
599
|
+
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
600
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
601
|
+
│ │ A generic secret or password is an authentication token used to access a computer or application and is assigned to a password variable. │ │
|
|
602
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
603
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
597
604
|
```
|
|
598
605
|
|
|
599
606
|
#### IaC Result Example
|
|
600
607
|
|
|
601
608
|
```bash
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
609
|
+
╭──────────── Enable Content Encoding through the attribute 'MinimumCompressionSize'. This value should be greater than -1 and smaller than 10485760. ─────────────╮
|
|
610
|
+
│ Violation 45 of 110 │
|
|
611
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
612
|
+
│ │ Severity 🟠 MEDIUM │ │ 20 BinaryMediaTypes: │ │
|
|
613
|
+
│ │ In file ...ads-copy/iac/cft/api-gateway/ap │ │ 21 - !Ref binaryMediaType1 │ │
|
|
614
|
+
│ │ i-gateway-rest-api/deploy.yml │ │ 22 - !Ref binaryMediaType2 │ │
|
|
615
|
+
│ │ IaC Provider CloudFormation │ │ ❱ 23 MinimumCompressionSize: -1 │ │
|
|
616
|
+
│ │ Rule ID 33c4b90c-3270-4337-a075-d3109c141b │ │ 24 EndpointConfiguration: │ │
|
|
617
|
+
│ │ 53 │ │ 25 Types: │ │
|
|
618
|
+
│ ╰────────────────────────────────────────────────────╯ │ 26 - EDGE │ │
|
|
619
|
+
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
620
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
621
|
+
│ │ This policy validates the proper configuration of content encoding in AWS API Gateway. Specifically, the policy checks for the attribute │ │
|
|
622
|
+
│ │ 'minimum_compression_size' in API Gateway REST APIs. Correct configuration of this attribute is important for enabling content encoding of API responses for │ │
|
|
623
|
+
│ │ improved API performance and reduced payload sizes. │ │
|
|
624
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
625
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
607
626
|
```
|
|
608
627
|
|
|
609
628
|
#### SCA Result Example
|
|
610
629
|
|
|
611
630
|
```bash
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
631
|
+
╭─────────────────────────────────────────────────────── [CVE-2019-10795] Prototype Pollution in undefsafe ────────────────────────────────────────────────────────╮
|
|
632
|
+
│ Violation 172 of 195 │
|
|
633
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
634
|
+
│ │ Severity 🟠 MEDIUM │ │ 26758 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", │ │
|
|
635
|
+
│ │ In file /Users/cycodemacuser/Node │ │ 26759 "dev": true │ │
|
|
636
|
+
│ │ Goat/package-lock.json │ │ 26760 }, │ │
|
|
637
|
+
│ │ CVEs CVE-2019-10795 │ │ ❱ 26761 "undefsafe": { │ │
|
|
638
|
+
│ │ Package undefsafe │ │ 26762 "version": "2.0.2", │ │
|
|
639
|
+
│ │ Version 2.0.2 │ │ 26763 "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", │ │
|
|
640
|
+
│ │ First patched version Not fixed │ │ 26764 "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", │ │
|
|
641
|
+
│ │ Dependency path nodemon 1.19.1 -> │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
642
|
+
│ │ undefsafe 2.0.2 │ │
|
|
643
|
+
│ │ Rule ID 9c6a8911-e071-4616-86db-4 │ │
|
|
644
|
+
│ │ 943f2e1df81 │ │
|
|
645
|
+
│ ╰────────────────────────────────────────────────────╯ │
|
|
646
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
647
|
+
│ │ undefsafe before 2.0.3 is vulnerable to Prototype Pollution. The 'a' function could be tricked into adding or modifying properties of Object.prototype using │ │
|
|
648
|
+
│ │ a __proto__ payload. │ │
|
|
649
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
650
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
617
651
|
```
|
|
618
652
|
|
|
619
653
|
#### SAST Result Example
|
|
620
654
|
|
|
621
655
|
```bash
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
656
|
+
╭───────────────────────────────────────────── [CWE-208: Observable Timing Discrepancy] Observable Timing Discrepancy ─────────────────────────────────────────────╮
|
|
657
|
+
│ Violation 24 of 49 │
|
|
658
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
659
|
+
│ │ Severity 🟠 MEDIUM │ │ 173 " including numbers, lowercase and uppercase letters."; │ │
|
|
660
|
+
│ │ In file /Users/cycodemacuser/NodeGoat/app │ │ 174 return false; │ │
|
|
661
|
+
│ │ /routes/session.js │ │ 175 } │ │
|
|
662
|
+
│ │ CWE CWE-208 │ │ ❱ 176 if (password !== verify) { │ │
|
|
663
|
+
│ │ Subcategory Security │ │ 177 errors.verifyError = "Password must match"; │ │
|
|
664
|
+
│ │ Language js │ │ 178 return false; │ │
|
|
665
|
+
│ │ Security Tool Bearer (Powered by Cycode) │ │ 179 } │ │
|
|
666
|
+
│ │ Rule ID 19fbca07-a8e7-4fa6-92ac-a36d15509 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
667
|
+
│ │ fa9 │ │
|
|
668
|
+
│ ╰────────────────────────────────────────────────────╯ │
|
|
669
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
670
|
+
│ │ Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability │ │
|
|
671
|
+
│ │ is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long │ │
|
|
672
|
+
│ │ these operations take, they might be able to deduce confidential details, putting your data at risk. │ │
|
|
673
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
674
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
627
675
|
```
|
|
628
676
|
|
|
629
677
|
### Company’s Custom Remediation Guidelines
|
|
@@ -650,18 +698,6 @@ The following are the options available for the `cycode ignore` command:
|
|
|
650
698
|
| `-t, --scan-type [secret\|iac\|sca\|sast]` | Specify the scan you wish to execute (`secret`/`iac`/`sca`/`sast`). The default value is `secret`. |
|
|
651
699
|
| `-g, --global` | Add an ignore rule and update it in the global `.cycode` config file. |
|
|
652
700
|
|
|
653
|
-
In the following example, a pre-commit scan runs and finds the following:
|
|
654
|
-
|
|
655
|
-
```bash
|
|
656
|
-
⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
|
|
657
|
-
Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
|
|
658
|
-
0 | @@ -0,0 +1 @@
|
|
659
|
-
1 | +my_password = 'h3l***********350'
|
|
660
|
-
2 |
|
|
661
|
-
```
|
|
662
|
-
|
|
663
|
-
If this is a value that is not a valid secret, then use the `cycode ignore` command to ignore the secret by its value, SHA value, specific path, or rule ID. If this is an IaC scan, then you can ignore that result by its path or rule ID.
|
|
664
|
-
|
|
665
701
|
### Ignoring a Secret Value
|
|
666
702
|
|
|
667
703
|
To ignore a specific secret value, you will need to use the `--by-value` flag. This will ignore the given secret value from all future scans. Use the following command to add a secret value to be ignored:
|
|
@@ -86,9 +86,15 @@ To install the Cycode CLI application on your local machine, perform the followi
|
|
|
86
86
|
brew install cycode
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
- To install from [GitHub Releases](https://github.com/cycodehq/cycode-cli/releases) navigate and download executable for your operating system and architecture, then run the following command:
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
```bash
|
|
92
|
+
cd /path/to/downloaded/cycode-cli
|
|
93
|
+
chmod +x cycode
|
|
94
|
+
./cycode
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
3. Authenticate CLI. There are three methods to set the Cycode client ID and client secret:
|
|
92
98
|
|
|
93
99
|
- [cycode auth](#using-the-auth-command) (**Recommended**)
|
|
94
100
|
- [cycode configure](#using-the-configure-command)
|
|
@@ -205,7 +211,7 @@ export CYCODE_CLIENT_SECRET={your Cycode Secret Key}
|
|
|
205
211
|
Cycode’s pre-commit hook can be set up within your local repository so that the Cycode CLI application will identify any issues with your code automatically before you commit it to your codebase.
|
|
206
212
|
|
|
207
213
|
> [!NOTE]
|
|
208
|
-
> pre-commit hook is
|
|
214
|
+
> pre-commit hook is not available for IaC scans.
|
|
209
215
|
|
|
210
216
|
Perform the following steps to install the pre-commit hook:
|
|
211
217
|
|
|
@@ -222,19 +228,19 @@ Perform the following steps to install the pre-commit hook:
|
|
|
222
228
|
```yaml
|
|
223
229
|
repos:
|
|
224
230
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
225
|
-
rev: v3.
|
|
231
|
+
rev: v3.2.0
|
|
226
232
|
hooks:
|
|
227
233
|
- id: cycode
|
|
228
234
|
stages:
|
|
229
235
|
- pre-commit
|
|
230
236
|
```
|
|
231
237
|
|
|
232
|
-
4. Modify the created file for your specific needs. Use hook ID `cycode` to enable scan for Secrets. Use hook ID `cycode-sca` to enable SCA scan. If you want to enable
|
|
238
|
+
4. Modify the created file for your specific needs. Use hook ID `cycode` to enable scan for Secrets. Use hook ID `cycode-sca` to enable SCA scan. Use hook ID `cycode-sast` to enable SAST scan. If you want to enable all scanning types, use this configuration:
|
|
233
239
|
|
|
234
240
|
```yaml
|
|
235
241
|
repos:
|
|
236
242
|
- repo: https://github.com/cycodehq/cycode-cli
|
|
237
|
-
rev: v3.
|
|
243
|
+
rev: v3.2.0
|
|
238
244
|
hooks:
|
|
239
245
|
- id: cycode
|
|
240
246
|
stages:
|
|
@@ -242,6 +248,9 @@ Perform the following steps to install the pre-commit hook:
|
|
|
242
248
|
- id: cycode-sca
|
|
243
249
|
stages:
|
|
244
250
|
- pre-commit
|
|
251
|
+
- id: cycode-sast
|
|
252
|
+
stages:
|
|
253
|
+
- pre-commit
|
|
245
254
|
```
|
|
246
255
|
|
|
247
256
|
5. Install Cycode’s hook:
|
|
@@ -268,14 +277,17 @@ Perform the following steps to install the pre-commit hook:
|
|
|
268
277
|
|
|
269
278
|
The following are the options and commands available with the Cycode CLI application:
|
|
270
279
|
|
|
271
|
-
| Option
|
|
272
|
-
|
|
273
|
-
| `-v`, `--verbose`
|
|
274
|
-
| `--no-progress-meter`
|
|
275
|
-
| `--no-update-notifier`
|
|
276
|
-
| `-o`, `--output [text\|json\|table]`
|
|
277
|
-
| `--
|
|
278
|
-
| `--
|
|
280
|
+
| Option | Description |
|
|
281
|
+
|-------------------------------------------------------------------|------------------------------------------------------------------------------------|
|
|
282
|
+
| `-v`, `--verbose` | Show detailed logs. |
|
|
283
|
+
| `--no-progress-meter` | Do not show the progress meter. |
|
|
284
|
+
| `--no-update-notifier` | Do not check CLI for updates. |
|
|
285
|
+
| `-o`, `--output [rich\|text\|json\|table]` | Specify the output type. The default is `rich`. |
|
|
286
|
+
| `--client-id TEXT` | Specify a Cycode client ID for this specific scan execution. |
|
|
287
|
+
| `--client-secret TEXT` | Specify a Cycode client secret for this specific scan execution. |
|
|
288
|
+
| `--install-completion` | Install completion for the current shell.. |
|
|
289
|
+
| `--show-completion [bash\|zsh\|fish\|powershell\|pwsh]` | Show completion for the specified shell, to copy it or customize the installation. |
|
|
290
|
+
| `-h`, `--help` | Show options for given command. |
|
|
279
291
|
|
|
280
292
|
| Command | Description |
|
|
281
293
|
|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
|
|
@@ -295,8 +307,6 @@ The Cycode CLI application offers several types of scans so that you can choose
|
|
|
295
307
|
| Option | Description |
|
|
296
308
|
|------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|
|
|
297
309
|
| `-t, --scan-type [secret\|iac\|sca\|sast]` | Specify the scan you wish to execute (`secret`/`iac`/`sca`/`sast`), the default is `secret`. |
|
|
298
|
-
| `--client-secret TEXT` | Specify a Cycode client secret for this specific scan execution. |
|
|
299
|
-
| `--client-id TEXT` | Specify a Cycode client ID for this specific scan execution. |
|
|
300
310
|
| `--show-secret BOOLEAN` | Show secrets in plain text. See [Show/Hide Secrets](#showhide-secrets) section for more details. |
|
|
301
311
|
| `--soft-fail BOOLEAN` | Run scan without failing, always return a non-error status code. See [Soft Fail](#soft-fail) section for more details. |
|
|
302
312
|
| `--severity-threshold [INFO\|LOW\|MEDIUM\|HIGH\|CRITICAL]` | Show only violations at the specified level or higher. |
|
|
@@ -458,6 +468,9 @@ _How to generate a Terraform plan from Terraform configuration file?_
|
|
|
458
468
|
|
|
459
469
|
### Commit History Scan
|
|
460
470
|
|
|
471
|
+
> [!NOTE]
|
|
472
|
+
> Secrets scanning analyzes all commits in the repository history because secrets introduced and later removed can still be leaked or exposed. SCA and SAST scanning focus only on the latest code state and the changes between branches or pull requests. Full commit history scanning is not performed for SCA and SAST.
|
|
473
|
+
|
|
461
474
|
A commit history scan is limited to a local repository’s previous commits, focused on finding any secrets within the commit history, instead of examining the repository’s current state.
|
|
462
475
|
|
|
463
476
|
To execute a commit history scan, execute the following:
|
|
@@ -500,15 +513,7 @@ If no issues are found, the scan ends with the following success message:
|
|
|
500
513
|
|
|
501
514
|
`Good job! No issues were found!!! 👏👏👏`
|
|
502
515
|
|
|
503
|
-
If an issue is found, a
|
|
504
|
-
|
|
505
|
-
```bash
|
|
506
|
-
⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
|
|
507
|
-
Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
|
|
508
|
-
0 | @@ -0,0 +1 @@
|
|
509
|
-
1 | +my_password = 'h3l***********350'
|
|
510
|
-
2 |
|
|
511
|
-
```
|
|
516
|
+
If an issue is found, a violation card appears upon completion instead.
|
|
512
517
|
|
|
513
518
|
If an issue is found, review the file in question for the specific line highlighted by the result message. Implement any changes required to resolve the issue, then execute the scan again.
|
|
514
519
|
|
|
@@ -524,15 +529,7 @@ In the following example, a Path Scan is executed against the `cli` subdirectory
|
|
|
524
529
|
|
|
525
530
|
`cycode scan --show-secret path ./cli`
|
|
526
531
|
|
|
527
|
-
The result would then not be obfuscated
|
|
528
|
-
|
|
529
|
-
```bash
|
|
530
|
-
⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
|
|
531
|
-
Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
|
|
532
|
-
0 | @@ -0,0 +1 @@
|
|
533
|
-
1 | +my_password = 'h3110w0r1d!@#$350'
|
|
534
|
-
2 |
|
|
535
|
-
```
|
|
532
|
+
The result would then not be obfuscated.
|
|
536
533
|
|
|
537
534
|
### Soft Fail
|
|
538
535
|
|
|
@@ -548,41 +545,92 @@ Scan results are assigned with a value of exit code `1` when issues are found in
|
|
|
548
545
|
#### Secrets Result Example
|
|
549
546
|
|
|
550
547
|
```bash
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
548
|
+
╭─────────────────────────────────────────────────────────────── Hardcoded generic-password is used ───────────────────────────────────────────────────────────────╮
|
|
549
|
+
│ Violation 12 of 12 │
|
|
550
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
551
|
+
│ │ Severity 🟠 MEDIUM │ │ 34 }; │ │
|
|
552
|
+
│ │ In file /Users/cycodemacuser/NodeGoat/test/s │ │ 35 │ │
|
|
553
|
+
│ │ ecurity/profile-test.js │ │ 36 var sutUserName = "user1"; │ │
|
|
554
|
+
│ │ Secret SHA b4ea3116d868b7c982ee6812cce61727856b │ │ ❱ 37 var sutUserPassword = "Us*****23"; │ │
|
|
555
|
+
│ │ 802b3063cd5aebe7d796988552e0 │ │ 38 │ │
|
|
556
|
+
│ │ Rule ID 68b6a876-4890-4e62-9531-0e687223579f │ │ 39 chrome.setDefaultService(service); │ │
|
|
557
|
+
│ ╰────────────────────────────────────────────────────╯ │ 40 │ │
|
|
558
|
+
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
559
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
560
|
+
│ │ A generic secret or password is an authentication token used to access a computer or application and is assigned to a password variable. │ │
|
|
561
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
562
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
556
563
|
```
|
|
557
564
|
|
|
558
565
|
#### IaC Result Example
|
|
559
566
|
|
|
560
567
|
```bash
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
568
|
+
╭──────────── Enable Content Encoding through the attribute 'MinimumCompressionSize'. This value should be greater than -1 and smaller than 10485760. ─────────────╮
|
|
569
|
+
│ Violation 45 of 110 │
|
|
570
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
571
|
+
│ │ Severity 🟠 MEDIUM │ │ 20 BinaryMediaTypes: │ │
|
|
572
|
+
│ │ In file ...ads-copy/iac/cft/api-gateway/ap │ │ 21 - !Ref binaryMediaType1 │ │
|
|
573
|
+
│ │ i-gateway-rest-api/deploy.yml │ │ 22 - !Ref binaryMediaType2 │ │
|
|
574
|
+
│ │ IaC Provider CloudFormation │ │ ❱ 23 MinimumCompressionSize: -1 │ │
|
|
575
|
+
│ │ Rule ID 33c4b90c-3270-4337-a075-d3109c141b │ │ 24 EndpointConfiguration: │ │
|
|
576
|
+
│ │ 53 │ │ 25 Types: │ │
|
|
577
|
+
│ ╰────────────────────────────────────────────────────╯ │ 26 - EDGE │ │
|
|
578
|
+
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
579
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
580
|
+
│ │ This policy validates the proper configuration of content encoding in AWS API Gateway. Specifically, the policy checks for the attribute │ │
|
|
581
|
+
│ │ 'minimum_compression_size' in API Gateway REST APIs. Correct configuration of this attribute is important for enabling content encoding of API responses for │ │
|
|
582
|
+
│ │ improved API performance and reduced payload sizes. │ │
|
|
583
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
584
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
566
585
|
```
|
|
567
586
|
|
|
568
587
|
#### SCA Result Example
|
|
569
588
|
|
|
570
589
|
```bash
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
590
|
+
╭─────────────────────────────────────────────────────── [CVE-2019-10795] Prototype Pollution in undefsafe ────────────────────────────────────────────────────────╮
|
|
591
|
+
│ Violation 172 of 195 │
|
|
592
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
593
|
+
│ │ Severity 🟠 MEDIUM │ │ 26758 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", │ │
|
|
594
|
+
│ │ In file /Users/cycodemacuser/Node │ │ 26759 "dev": true │ │
|
|
595
|
+
│ │ Goat/package-lock.json │ │ 26760 }, │ │
|
|
596
|
+
│ │ CVEs CVE-2019-10795 │ │ ❱ 26761 "undefsafe": { │ │
|
|
597
|
+
│ │ Package undefsafe │ │ 26762 "version": "2.0.2", │ │
|
|
598
|
+
│ │ Version 2.0.2 │ │ 26763 "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", │ │
|
|
599
|
+
│ │ First patched version Not fixed │ │ 26764 "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", │ │
|
|
600
|
+
│ │ Dependency path nodemon 1.19.1 -> │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
601
|
+
│ │ undefsafe 2.0.2 │ │
|
|
602
|
+
│ │ Rule ID 9c6a8911-e071-4616-86db-4 │ │
|
|
603
|
+
│ │ 943f2e1df81 │ │
|
|
604
|
+
│ ╰────────────────────────────────────────────────────╯ │
|
|
605
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
606
|
+
│ │ undefsafe before 2.0.3 is vulnerable to Prototype Pollution. The 'a' function could be tricked into adding or modifying properties of Object.prototype using │ │
|
|
607
|
+
│ │ a __proto__ payload. │ │
|
|
608
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
609
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
576
610
|
```
|
|
577
611
|
|
|
578
612
|
#### SAST Result Example
|
|
579
613
|
|
|
580
614
|
```bash
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
615
|
+
╭───────────────────────────────────────────── [CWE-208: Observable Timing Discrepancy] Observable Timing Discrepancy ─────────────────────────────────────────────╮
|
|
616
|
+
│ Violation 24 of 49 │
|
|
617
|
+
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
618
|
+
│ │ Severity 🟠 MEDIUM │ │ 173 " including numbers, lowercase and uppercase letters."; │ │
|
|
619
|
+
│ │ In file /Users/cycodemacuser/NodeGoat/app │ │ 174 return false; │ │
|
|
620
|
+
│ │ /routes/session.js │ │ 175 } │ │
|
|
621
|
+
│ │ CWE CWE-208 │ │ ❱ 176 if (password !== verify) { │ │
|
|
622
|
+
│ │ Subcategory Security │ │ 177 errors.verifyError = "Password must match"; │ │
|
|
623
|
+
│ │ Language js │ │ 178 return false; │ │
|
|
624
|
+
│ │ Security Tool Bearer (Powered by Cycode) │ │ 179 } │ │
|
|
625
|
+
│ │ Rule ID 19fbca07-a8e7-4fa6-92ac-a36d15509 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
626
|
+
│ │ fa9 │ │
|
|
627
|
+
│ ╰────────────────────────────────────────────────────╯ │
|
|
628
|
+
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
|
|
629
|
+
│ │ Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability │ │
|
|
630
|
+
│ │ is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long │ │
|
|
631
|
+
│ │ these operations take, they might be able to deduce confidential details, putting your data at risk. │ │
|
|
632
|
+
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
|
|
633
|
+
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
586
634
|
```
|
|
587
635
|
|
|
588
636
|
### Company’s Custom Remediation Guidelines
|
|
@@ -609,18 +657,6 @@ The following are the options available for the `cycode ignore` command:
|
|
|
609
657
|
| `-t, --scan-type [secret\|iac\|sca\|sast]` | Specify the scan you wish to execute (`secret`/`iac`/`sca`/`sast`). The default value is `secret`. |
|
|
610
658
|
| `-g, --global` | Add an ignore rule and update it in the global `.cycode` config file. |
|
|
611
659
|
|
|
612
|
-
In the following example, a pre-commit scan runs and finds the following:
|
|
613
|
-
|
|
614
|
-
```bash
|
|
615
|
-
⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
|
|
616
|
-
Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
|
|
617
|
-
0 | @@ -0,0 +1 @@
|
|
618
|
-
1 | +my_password = 'h3l***********350'
|
|
619
|
-
2 |
|
|
620
|
-
```
|
|
621
|
-
|
|
622
|
-
If this is a value that is not a valid secret, then use the `cycode ignore` command to ignore the secret by its value, SHA value, specific path, or rule ID. If this is an IaC scan, then you can ignore that result by its path or rule ID.
|
|
623
|
-
|
|
624
660
|
### Ignoring a Secret Value
|
|
625
661
|
|
|
626
662
|
To ignore a specific secret value, you will need to use the `--by-value` flag. This will ignore the given secret value from all future scans. Use the following command to add a secret value to be ignored:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '3.1.1.dev4' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|