conviso-ast 3.0.1rc4__tar.gz → 3.0.2rc0__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 (133) hide show
  1. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/PKG-INFO +1 -1
  2. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/conviso_ast.egg-info/PKG-INFO +1 -1
  3. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/schemas/resolvers/__init__.py +8 -0
  4. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/vulnerability/run.py +63 -15
  5. conviso_ast-3.0.2rc0/convisoappsec/version.py +1 -0
  6. conviso_ast-3.0.1rc4/convisoappsec/version.py +0 -1
  7. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/README.md +0 -0
  8. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/conviso_ast.egg-info/SOURCES.txt +0 -0
  9. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/conviso_ast.egg-info/dependency_links.txt +0 -0
  10. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/conviso_ast.egg-info/entry_points.txt +0 -0
  11. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/conviso_ast.egg-info/requires.txt +0 -0
  12. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/conviso_ast.egg-info/top_level.txt +0 -0
  13. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/__init__.py +0 -0
  14. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/__init__.py +0 -0
  15. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/box.py +0 -0
  16. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/cleaner.py +0 -0
  17. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/docker.py +0 -0
  18. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/exceptions.py +0 -0
  19. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/git_data_parser.py +0 -0
  20. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/graphql/__init__.py +0 -0
  21. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/graphql/error_handlers.py +0 -0
  22. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/graphql/errors.py +0 -0
  23. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/graphql/low_client.py +0 -0
  24. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/retry_handler.py +0 -0
  25. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/common/strings.py +0 -0
  26. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/__init__.py +0 -0
  27. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/api.py +0 -0
  28. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/cleaner.py +0 -0
  29. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/__init__.py +0 -0
  30. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/__init__.py +0 -0
  31. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/client.py +0 -0
  32. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/models/__init__.py +0 -0
  33. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/models/issues/__init__.py +0 -0
  34. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/models/issues/container.py +0 -0
  35. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/models/issues/iac.py +0 -0
  36. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/models/issues/normalize.py +0 -0
  37. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/models/issues/sast.py +0 -0
  38. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/models/issues/sca.py +0 -0
  39. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/resources_api.py +0 -0
  40. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/schemas/__init__.py +0 -0
  41. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/schemas/mutations/__init__.py +0 -0
  42. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/beta/schemas/resolvers/__init__.py +0 -0
  43. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/__init__.py +0 -0
  44. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/client.py +0 -0
  45. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/models/__init__.py +0 -0
  46. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/models/asset.py +0 -0
  47. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/models/issues.py +0 -0
  48. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/models/project.py +0 -0
  49. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/resources_api.py +0 -0
  50. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/schemas/__init__.py +0 -0
  51. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/graphql_api/v1/schemas/mutations/__init__.py +0 -0
  52. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/util/__init__.py +0 -0
  53. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/util/ci_provider.py +0 -0
  54. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/util/source_code_compressor.py +0 -0
  55. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/version_control_system_adapter.py +0 -0
  56. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/version_searchers/__init__.py +0 -0
  57. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/version_searchers/sorted_by_versioning_style.py +0 -0
  58. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/version_searchers/timebased_version_seacher.py +0 -0
  59. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/version_searchers/version_searcher_result.py +0 -0
  60. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/versioning_style/__init__.py +0 -0
  61. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flow/versioning_style/semantic_versioning.py +0 -0
  62. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/__init__.py +0 -0
  63. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/__main__.py +0 -0
  64. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/assets/__init__.py +0 -0
  65. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/assets/create.py +0 -0
  66. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/assets/entrypoint.py +0 -0
  67. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/assets/ls.py +0 -0
  68. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/ast/__init__.py +0 -0
  69. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/ast/dry_run.py +0 -0
  70. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/ast/entrypoint.py +0 -0
  71. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/common.py +0 -0
  72. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/companies/__init__.py +0 -0
  73. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/companies/ls.py +0 -0
  74. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/container/__init__.py +0 -0
  75. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/container/entrypoint.py +0 -0
  76. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/container/run.py +0 -0
  77. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/context.py +0 -0
  78. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/__init__.py +0 -0
  79. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/__init__.py +0 -0
  80. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/context.py +0 -0
  81. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/entrypoint.py +0 -0
  82. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/__init__.py +0 -0
  83. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/entrypoint.py +0 -0
  84. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/__init__.py +0 -0
  85. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/context.py +0 -0
  86. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/entrypoint.py +0 -0
  87. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/__init__.py +0 -0
  88. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/entrypoint.py +0 -0
  89. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/time_.py +0 -0
  90. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/versioning_style.py +0 -0
  91. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/deploy/create/with_/values.py +0 -0
  92. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/entrypoint.py +0 -0
  93. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/environment_checker.py +0 -0
  94. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/__init__.py +0 -0
  95. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/create/__init__.py +0 -0
  96. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/create/entrypoint.py +0 -0
  97. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/create/with_/__init__.py +0 -0
  98. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/create/with_/entrypoint.py +0 -0
  99. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/create/with_/version_tracker.py +0 -0
  100. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/entrypoint.py +0 -0
  101. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/import_sarif/__init__.py +0 -0
  102. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/findings/import_sarif/entrypoint.py +0 -0
  103. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/help_option.py +0 -0
  104. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/iac/__init__.py +0 -0
  105. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/iac/dry_run.py +0 -0
  106. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/iac/entrypoint.py +0 -0
  107. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/iac/run.py +0 -0
  108. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/requirements_verifier.py +0 -0
  109. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sast/__init__.py +0 -0
  110. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sast/dry_run.py +0 -0
  111. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sast/entrypoint.py +0 -0
  112. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sast/run.py +0 -0
  113. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sbom/__init__.py +0 -0
  114. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sbom/entrypoint.py +0 -0
  115. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sbom/generate.py +0 -0
  116. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sca/__init__.py +0 -0
  117. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sca/dry_run.py +0 -0
  118. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sca/entrypoint.py +0 -0
  119. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/sca/run.py +0 -0
  120. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/vulnerability/__init__.py +0 -0
  121. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/vulnerability/assert_security_rules.py +0 -0
  122. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/vulnerability/container_vulnerability_manager.py +0 -0
  123. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/vulnerability/entrypoint.py +0 -0
  124. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/flowcli/vulnerability/rules_schema.json +0 -0
  125. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/logger.py +0 -0
  126. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/sast/__init__.py +0 -0
  127. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/sast/decision.py +0 -0
  128. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/convisoappsec/sast/sastbox.py +0 -0
  129. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/scripts/shell_completer/flow_bash_completer.sh +0 -0
  130. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/scripts/shell_completer/flow_fish_completer.fish +0 -0
  131. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/scripts/shell_completer/flow_zsh_completer.sh +0 -0
  132. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/setup.cfg +0 -0
  133. {conviso_ast-3.0.1rc4 → conviso_ast-3.0.2rc0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: conviso-ast
3
- Version: 3.0.1rc4
3
+ Version: 3.0.2rc0
4
4
  Maintainer: Conviso
5
5
  Maintainer-email: development@convisoappsec.com
6
6
  Project-URL: Source, https://github.com/convisoappsec/convisocli/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: conviso-ast
3
- Version: 3.0.1rc4
3
+ Version: 3.0.2rc0
4
4
  Maintainer: Conviso
5
5
  Maintainer-email: development@convisoappsec.com
6
6
  Project-URL: Source, https://github.com/convisoappsec/convisocli/
@@ -150,6 +150,14 @@ query GetIssuesFingerprint(
150
150
  collection {
151
151
  id
152
152
  type
153
+ ... on ScaFinding {
154
+ detail {
155
+ cve
156
+ affectedVersion
157
+ fileName
158
+ package
159
+ }
160
+ }
153
161
  ... on FindingInterface {
154
162
  originalIssueIdFromTool
155
163
  scanSource
@@ -233,28 +233,56 @@ def run(context, flow_context, asset_id, company_id, end_commit, start_commit, r
233
233
  # Starting executing the ast again
234
234
  sast_hash_issues = perform_sastbox_scan(sastbox_registry, sastbox_repository_name, sastbox_tag, repository_dir)
235
235
 
236
- sca_hash_issues = perform_sca_scan(repository_dir=repository_dir)
236
+ vulnerabilities = perform_sca_scan(repository_dir=repository_dir)
237
237
  iac_hash_issues = perform_iac_scan(repository_dir=repository_dir)
238
238
 
239
239
  # we need to append the two lists because at the moment this was made, iac and sast has sast as type on cp.
240
240
  sast_hash_issues = sast_hash_issues + iac_hash_issues
241
241
  # end ast execution
242
242
 
243
+ current_sca_hashes = set()
244
+ current_sca_tuples = set()
245
+
246
+ for vulnerability in vulnerabilities:
247
+ if vulnerability.get('hash_issue'):
248
+ current_sca_hashes.add(vulnerability['hash_issue'])
249
+
250
+ cve_list = vulnerability.get('cve')
251
+
252
+ if isinstance(cve_list, list) and len(cve_list) > 0:
253
+ cve_str = str(cve_list[0])
254
+ else:
255
+ cve_str = str(cve_list) if cve_list is not None else ""
256
+
257
+ if vulnerability.get('package') and vulnerability.get('version'):
258
+ current_sca_tuples.add((vulnerability['package'], vulnerability['version'], cve_str))
259
+
243
260
  set_of_sast_hash_issues = set(sast_hash_issues)
244
- set_of_sca_hash_issues = set(sca_hash_issues)
245
261
 
246
262
  close_sast_issues(conviso_api, sast_issues_without_fix_accepted, set_of_sast_hash_issues, control_sync_status_id)
247
- close_sca_issues(conviso_api, sca_issues_without_fix_accepted, set_of_sca_hash_issues, control_sync_status_id)
263
+ close_sca_issues(conviso_api, sca_issues_without_fix_accepted, current_sca_hashes, current_sca_tuples, control_sync_status_id)
248
264
 
249
265
  sast_issues_to_reopen = [
250
266
  {'id': item['id'], 'originalIssueIdFromTool': item['originalIssueIdFromTool']}
251
267
  for item in sast_issues_with_fix_accepted if item['originalIssueIdFromTool'] in sast_hash_issues
252
268
  ]
253
269
 
254
- sca_issues_to_reopen = [
255
- {'id': item['id'], 'originalIssueIdFromTool': item['originalIssueIdFromTool']}
256
- for item in sca_issues_with_fix_accepted if item['originalIssueIdFromTool'] in sca_hash_issues
257
- ]
270
+ sca_issues_to_reopen = []
271
+ for item in sca_issues_with_fix_accepted:
272
+ tool_id = item.get('originalIssueIdFromTool')
273
+ should_reopen = False
274
+
275
+ if tool_id:
276
+ if tool_id in current_sca_hashes:
277
+ should_reopen = True
278
+ else:
279
+ detail = item.get('detail', {})
280
+ item_tuple = (detail.get('package'), detail.get('affectedVersion'), detail.get('cve'))
281
+ if item_tuple in current_sca_tuples:
282
+ should_reopen = True
283
+
284
+ if should_reopen:
285
+ sca_issues_to_reopen.append({'id': item['id'], 'originalIssueIdFromTool': tool_id})
258
286
 
259
287
  if sast_issues_to_reopen:
260
288
  log_func("SAST: reopening {issues} vulnerability/vulnerabilities on conviso platform ...".format(
@@ -303,14 +331,25 @@ def close_sast_issues(conviso_api, issues_from_cp, issues_from_current_scan, con
303
331
  )
304
332
 
305
333
 
306
- def close_sca_issues(conviso_api, issues_from_cp, issues_from_current_scan, control_sync_status_id):
334
+ def close_sca_issues(conviso_api, issues_from_cp, current_hashes, current_tuples, control_sync_status_id):
307
335
  """ method to close sca issues on conviso platform """
308
336
 
309
337
  log_func("SCA: Verifying if any vulnerability was solved...")
310
- differences = [
311
- {'id': item['id'], 'originalIssueIdFromTool': item['originalIssueIdFromTool']}
312
- for item in issues_from_cp if item['originalIssueIdFromTool'] not in issues_from_current_scan
313
- ]
338
+
339
+ differences = []
340
+
341
+ for item in issues_from_cp:
342
+ tool_id = item.get('originalIssueIdFromTool')
343
+
344
+ if tool_id:
345
+ if tool_id not in current_hashes:
346
+ differences.append({'id': item['id'], 'originalIssueIdFromTool': tool_id})
347
+ else:
348
+ detail = item.get('detail', {})
349
+ item_tuple = (detail.get('package'), detail.get('affectedVersion'), detail.get('cve'))
350
+
351
+ if item_tuple not in current_tuples:
352
+ differences.append({'id': item['id'], 'originalIssueIdFromTool': None})
314
353
 
315
354
  if len(differences) == 0:
316
355
  log_func("No vulnerabilities have been fixed yet...")
@@ -407,19 +446,28 @@ def perform_sca_scan(flow_context, repository_dir):
407
446
  if file_path:
408
447
  results_filepaths.append(file_path)
409
448
 
410
- hash_issues = []
449
+ detected_vulnerabilities = []
411
450
 
412
451
  for report_path in results_filepaths:
413
452
  try:
414
453
  with open(report_path, 'r') as report_file:
415
454
  report_content = json.load(report_file)
416
455
  issues = report_content.get("issues", [])
417
- hash_issues.extend(issue.get("hash_issue") for issue in issues)
456
+
457
+ for issue in issues:
458
+ vuln_data = {
459
+ "hash_issue": issue.get("hash_issue"),
460
+ "package": issue.get("component"),
461
+ "version": issue.get("version"),
462
+ "cve": issue.get("cve")
463
+ }
464
+
465
+ detected_vulnerabilities.append(vuln_data)
418
466
 
419
467
  except (FileNotFoundError, json.JSONDecodeError) as e:
420
468
  print(f"Error processing {report_path}: {e}")
421
469
 
422
- return hash_issues
470
+ return detected_vulnerabilities
423
471
 
424
472
  except Exception as e:
425
473
  on_http_error(e)
@@ -0,0 +1 @@
1
+ __version__ = '3.0.2-rc.0'
@@ -1 +0,0 @@
1
- __version__ = '3.0.1-rc.4'
File without changes
File without changes
File without changes