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.
Files changed (167) hide show
  1. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/PKG-INFO +103 -67
  2. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/README.md +102 -66
  3. cycode-3.1.1.dev4/cycode/__init__.py +1 -0
  4. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/path/path_command.py +2 -2
  5. cycode-3.1.1.dev4/cycode/cli/apps/scan/aggregation_report.py +42 -0
  6. cycode-3.1.1.dev4/cycode/cli/apps/scan/code_scanner.py +306 -0
  7. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/commit_history/commit_history_command.py +2 -2
  8. cycode-3.1.1.dev4/cycode/cli/apps/scan/commit_range_scanner.py +318 -0
  9. cycode-3.1.1.dev4/cycode/cli/apps/scan/detection_excluder.py +153 -0
  10. cycode-3.1.1.dev4/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +21 -0
  11. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +18 -17
  12. cycode-3.1.1.dev4/cycode/cli/apps/scan/remote_url_resolver.py +115 -0
  13. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/repository/repository_command.py +5 -4
  14. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +2 -2
  15. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_command.py +1 -1
  16. cycode-3.1.1.dev4/cycode/cli/apps/scan/scan_parameters.py +46 -0
  17. cycode-3.1.1.dev4/cycode/cli/apps/scan/scan_result.py +212 -0
  18. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/consts.py +3 -1
  19. cycode-3.1.1.dev4/cycode/cli/files_collector/commit_range_documents.py +289 -0
  20. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/path_documents.py +1 -1
  21. cycode-3.1.1.dev4/cycode/cli/files_collector/repository_documents.py +26 -0
  22. 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
  23. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/zip_documents.py +3 -3
  24. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/sca_table_printer.py +1 -1
  25. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table_printer.py +1 -1
  26. cycode-3.1.1.dev4/cycode/cli/printers/utils/__init__.py +5 -0
  27. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/code_snippet_syntax.py +20 -17
  28. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/path_utils.py +8 -0
  29. cycode-3.1.1.dev4/cycode/cli/utils/scan_utils.py +29 -0
  30. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/scan_client.py +30 -8
  31. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/pyproject.toml +1 -1
  32. cycode-3.1.1.dev2/cycode/__init__.py +0 -1
  33. cycode-3.1.1.dev2/cycode/cli/apps/scan/code_scanner.py +0 -1093
  34. cycode-3.1.1.dev2/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -49
  35. cycode-3.1.1.dev2/cycode/cli/files_collector/repository_documents.py +0 -146
  36. cycode-3.1.1.dev2/cycode/cli/printers/utils/__init__.py +0 -8
  37. cycode-3.1.1.dev2/cycode/cli/utils/scan_utils.py +0 -11
  38. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/LICENCE +0 -0
  39. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/__main__.py +0 -0
  40. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/__init__.py +0 -0
  41. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/app.py +0 -0
  42. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/__init__.py +0 -0
  43. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
  44. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
  45. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
  46. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
  47. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/__init__.py +0 -0
  48. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/auth_command.py +0 -0
  49. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/auth_common.py +0 -0
  50. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/auth_manager.py +0 -0
  51. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/auth/models.py +0 -0
  52. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/__init__.py +0 -0
  53. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/configure_command.py +0 -0
  54. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/consts.py +0 -0
  55. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/messages.py +0 -0
  56. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/configure/prompts.py +0 -0
  57. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ignore/__init__.py +0 -0
  58. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/ignore/ignore_command.py +0 -0
  59. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/__init__.py +0 -0
  60. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/report_command.py +0 -0
  61. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/__init__.py +0 -0
  62. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/common.py +0 -0
  63. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
  64. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
  65. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
  66. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
  67. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
  68. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/__init__.py +0 -0
  69. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
  70. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/path/__init__.py +0 -0
  71. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/path/path_command.py +0 -0
  72. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
  73. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
  74. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/repository/__init__.py +0 -0
  75. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
  76. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
  77. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/__init__.py +0 -0
  78. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/get_cli_status.py +0 -0
  79. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/models.py +0 -0
  80. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/status_command.py +0 -0
  81. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/apps/status/version_command.py +0 -0
  82. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/cli_types.py +0 -0
  83. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/config.py +0 -0
  84. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/console.py +0 -0
  85. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/__init__.py +0 -0
  86. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/custom_exceptions.py +0 -0
  87. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
  88. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
  89. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_errors.py +0 -0
  90. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
  91. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
  92. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/__init__.py +0 -0
  93. /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
  94. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/iac/__init__.py +0 -0
  95. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
  96. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/models/__init__.py +0 -0
  97. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
  98. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/__init__.py +0 -0
  99. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
  100. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
  101. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
  102. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
  103. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
  104. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
  105. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
  106. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
  107. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
  108. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
  109. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
  110. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
  111. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
  112. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
  113. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/files_collector/walk_ignore.py +0 -0
  114. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/logger.py +0 -0
  115. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/main.py +0 -0
  116. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/models.py +0 -0
  117. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/__init__.py +0 -0
  118. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/console_printer.py +0 -0
  119. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/json_printer.py +0 -0
  120. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/printer_base.py +0 -0
  121. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/rich_printer.py +0 -0
  122. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/__init__.py +0 -0
  123. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table.py +0 -0
  124. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table_models.py +0 -0
  125. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/tables/table_printer_base.py +0 -0
  126. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/text_printer.py +0 -0
  127. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_data.py +0 -0
  128. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
  129. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
  130. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
  131. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/printers/utils/rich_helpers.py +0 -0
  132. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/__init__.py +0 -0
  133. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/base_file_manager.py +0 -0
  134. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/config_file_manager.py +0 -0
  135. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/configuration_manager.py +0 -0
  136. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/credentials_manager.py +0 -0
  137. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/user_settings/jwt_creator.py +0 -0
  138. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/__init__.py +0 -0
  139. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/enum_utils.py +0 -0
  140. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/get_api_client.py +0 -0
  141. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/git_proxy.py +0 -0
  142. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/ignore_utils.py +0 -0
  143. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/jwt_utils.py +0 -0
  144. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/progress_bar.py +0 -0
  145. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/scan_batch.py +0 -0
  146. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/sentry.py +0 -0
  147. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/shell_executor.py +0 -0
  148. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/string_utils.py +0 -0
  149. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/task_timer.py +0 -0
  150. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/version_checker.py +0 -0
  151. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cli/utils/yaml_utils.py +0 -0
  152. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/config.py +0 -0
  153. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/__init__.py +0 -0
  154. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/auth_client.py +0 -0
  155. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/client_creator.py +0 -0
  156. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/config.py +0 -0
  157. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/config_dev.py +0 -0
  158. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_client.py +0 -0
  159. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_client_base.py +0 -0
  160. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_dev_based_client.py +0 -0
  161. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/cycode_token_based_client.py +0 -0
  162. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/headers.py +0 -0
  163. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/logger.py +0 -0
  164. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/models.py +0 -0
  165. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/report_client.py +0 -0
  166. {cycode-3.1.1.dev2 → cycode-3.1.1.dev4}/cycode/cyclient/scan_config_base.py +0 -0
  167. {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.dev2
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
- 3. Navigate to the top directory of the local repository you wish to scan.
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
- 4. There are three methods to set the Cycode client ID and client secret:
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 only available to Secrets and SCA scans.
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.0.0
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 both, use this configuration:
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.0.0
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 | Description |
313
- |--------------------------------------|------------------------------------------------------------------------|
314
- | `-v`, `--verbose` | Show detailed logs. |
315
- | `--no-progress-meter` | Do not show the progress meter. |
316
- | `--no-update-notifier` | Do not check CLI for updates. |
317
- | `-o`, `--output [text\|json\|table]` | Specify the output (`text`/`json`/`table`). The default is `text`. |
318
- | `--user-agent TEXT` | Characteristic JSON object that lets servers identify the application. |
319
- | `--help` | Show options for given command. |
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 `Found issue of type:` message appears upon completion instead:
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
- ⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
593
- Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
594
- 0 | @@ -0,0 +1 @@
595
- 1 | +my_password = 'h3l***********350'
596
- 2 |
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
- ⛔ Found issue of type: Resource should use non-default namespace (rule ID: bdaa88e2-5e7c-46ff-ac2a-29721418c59c) in file: ./k8s/k8s.yaml ⛔
603
-
604
- 7 | name: secrets-file
605
- 8 | namespace: default
606
- 9 | resourceVersion: "4228"
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
- ⛔ Found issue of type: Security vulnerability in package 'pyyaml' referenced in project 'Users/myuser/my-test-repo': Improper Input Validation in PyYAML (rule ID: d003b23a-a2eb-42f3-83c9-7a84505603e5) in file: Users/myuser/my-test-repo/requirements.txt ⛔
613
-
614
- 1 | PyYAML~=5.3.1
615
- 2 | vyper==0.3.1
616
- 3 | cleo==1.0.0a5
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
- ⛔ Found issue of type: Detected a request using 'http://'. This request will be unencrypted, and attackers could listen into traffic on the network and be able to obtain sensitive information. Use 'https://' instead. (rule ID: 3fbbd34b-b00d-4415-b9d9-f861c076b9f2) in file: ./requests.py ⛔
623
-
624
- 2 |
625
- 3 | res = requests.get('http://example.com', timeout=1)
626
- 4 | print(res.content)
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
- 3. Navigate to the top directory of the local repository you wish to scan.
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
- 4. There are three methods to set the Cycode client ID and client secret:
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 only available to Secrets and SCA scans.
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.0.0
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 both, use this configuration:
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.0.0
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 | Description |
272
- |--------------------------------------|------------------------------------------------------------------------|
273
- | `-v`, `--verbose` | Show detailed logs. |
274
- | `--no-progress-meter` | Do not show the progress meter. |
275
- | `--no-update-notifier` | Do not check CLI for updates. |
276
- | `-o`, `--output [text\|json\|table]` | Specify the output (`text`/`json`/`table`). The default is `text`. |
277
- | `--user-agent TEXT` | Characteristic JSON object that lets servers identify the application. |
278
- | `--help` | Show options for given command. |
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 `Found issue of type:` message appears upon completion instead:
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
- ⛔ Found issue of type: generic-password (rule ID: ce3a4de0-9dfc-448b-a004-c538cf8b4710) in file: config/my_config.py
552
- Secret SHA: a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 ⛔
553
- 0 | @@ -0,0 +1 @@
554
- 1 | +my_password = 'h3l***********350'
555
- 2 |
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
- ⛔ Found issue of type: Resource should use non-default namespace (rule ID: bdaa88e2-5e7c-46ff-ac2a-29721418c59c) in file: ./k8s/k8s.yaml ⛔
562
-
563
- 7 | name: secrets-file
564
- 8 | namespace: default
565
- 9 | resourceVersion: "4228"
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
- ⛔ Found issue of type: Security vulnerability in package 'pyyaml' referenced in project 'Users/myuser/my-test-repo': Improper Input Validation in PyYAML (rule ID: d003b23a-a2eb-42f3-83c9-7a84505603e5) in file: Users/myuser/my-test-repo/requirements.txt ⛔
572
-
573
- 1 | PyYAML~=5.3.1
574
- 2 | vyper==0.3.1
575
- 3 | cleo==1.0.0a5
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
- ⛔ Found issue of type: Detected a request using 'http://'. This request will be unencrypted, and attackers could listen into traffic on the network and be able to obtain sensitive information. Use 'https://' instead. (rule ID: 3fbbd34b-b00d-4415-b9d9-f861c076b9f2) in file: ./requests.py ⛔
582
-
583
- 2 |
584
- 3 | res = requests.get('http://example.com', timeout=1)
585
- 4 | print(res.content)
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