coretrace-python-analyzer 0.1.0__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 (206) hide show
  1. coretrace_python_analyzer-0.1.0/.github/workflows/ci.yml +57 -0
  2. coretrace_python_analyzer-0.1.0/.github/workflows/release.yml +43 -0
  3. coretrace_python_analyzer-0.1.0/.gitignore +11 -0
  4. coretrace_python_analyzer-0.1.0/PKG-INFO +74 -0
  5. coretrace_python_analyzer-0.1.0/README.md +45 -0
  6. coretrace_python_analyzer-0.1.0/docs/architecture.md +1777 -0
  7. coretrace_python_analyzer-0.1.0/docs/plugins.md +228 -0
  8. coretrace_python_analyzer-0.1.0/docs/usage.md +322 -0
  9. coretrace_python_analyzer-0.1.0/examples/add.py +3 -0
  10. coretrace_python_analyzer-0.1.0/examples/canonical_symbols.py +5 -0
  11. coretrace_python_analyzer-0.1.0/pyproject.toml +67 -0
  12. coretrace_python_analyzer-0.1.0/src/coretrace_python/__init__.py +4 -0
  13. coretrace_python_analyzer-0.1.0/src/coretrace_python/__main__.py +4 -0
  14. coretrace_python_analyzer-0.1.0/src/coretrace_python/abstract/__init__.py +45 -0
  15. coretrace_python_analyzer-0.1.0/src/coretrace_python/abstract/constants.py +226 -0
  16. coretrace_python_analyzer-0.1.0/src/coretrace_python/abstract/heap.py +252 -0
  17. coretrace_python_analyzer-0.1.0/src/coretrace_python/abstract/ranges.py +285 -0
  18. coretrace_python_analyzer-0.1.0/src/coretrace_python/abstract/values.py +56 -0
  19. coretrace_python_analyzer-0.1.0/src/coretrace_python/analysis/__init__.py +31 -0
  20. coretrace_python_analyzer-0.1.0/src/coretrace_python/analysis/manager.py +165 -0
  21. coretrace_python_analyzer-0.1.0/src/coretrace_python/analysis/provider.py +73 -0
  22. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/dependency_policy/dependency_policy.py +46 -0
  23. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/dependency_policy/plugin.toml +9 -0
  24. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/reachable_vulnerability/plugin.toml +9 -0
  25. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/reachable_vulnerability/reachable_vulnerability.py +56 -0
  26. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/sample_advisories/plugin.toml +9 -0
  27. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/sample_advisories/sample_advisories.py +109 -0
  28. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/vulnerable_dependency/plugin.toml +9 -0
  29. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/dependency/vulnerable_dependency/vulnerable_dependency.py +43 -0
  30. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/cli/cli_models.py +35 -0
  31. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/cli/plugin.toml +9 -0
  32. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/credentials/credential_models.py +43 -0
  33. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/credentials/plugin.toml +9 -0
  34. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/django/django_models.py +123 -0
  35. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/django/plugin.toml +9 -0
  36. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/fastapi/fastapi_models.py +29 -0
  37. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/fastapi/plugin.toml +9 -0
  38. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/flask/flask_models.py +53 -0
  39. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/flask/plugin.toml +9 -0
  40. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/http_clients/http_client_models.py +43 -0
  41. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/http_clients/plugin.toml +9 -0
  42. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/python_stdlib/plugin.toml +9 -0
  43. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/python_stdlib/python_stdlib.py +68 -0
  44. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/sqlalchemy/plugin.toml +9 -0
  45. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/models/sqlalchemy/sqlalchemy_models.py +47 -0
  46. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/secrets/config_secrets/config_secrets.py +38 -0
  47. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/secrets/config_secrets/plugin.toml +9 -0
  48. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/secrets/hardcoded_secrets/hardcoded_secrets.py +19 -0
  49. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/secrets/hardcoded_secrets/plugin.toml +9 -0
  50. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/command_injection/command_injection.py +17 -0
  51. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/command_injection/plugin.toml +9 -0
  52. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/insecure_deserialization/insecure_deserialization.py +17 -0
  53. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/insecure_deserialization/plugin.toml +9 -0
  54. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/open_redirect/open_redirect.py +17 -0
  55. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/open_redirect/plugin.toml +9 -0
  56. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/path_traversal/path_traversal.py +17 -0
  57. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/path_traversal/plugin.toml +9 -0
  58. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/plaintext_credentials/plaintext_credentials.py +21 -0
  59. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/plaintext_credentials/plugin.toml +9 -0
  60. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/sql_injection/plugin.toml +9 -0
  61. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/sql_injection/sql_injection.py +17 -0
  62. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/ssrf/plugin.toml +9 -0
  63. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/ssrf/ssrf.py +17 -0
  64. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/xss/plugin.toml +9 -0
  65. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/security/xss/xss.py +17 -0
  66. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/dangerous_eval/dangerous_eval.py +19 -0
  67. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/dangerous_eval/plugin.toml +9 -0
  68. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/flask_debug/flask_debug.py +63 -0
  69. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/flask_debug/plugin.toml +9 -0
  70. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/missing_timeout/missing_timeout.py +51 -0
  71. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/missing_timeout/plugin.toml +9 -0
  72. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/weak_crypto/plugin.toml +9 -0
  73. coretrace_python_analyzer-0.1.0/src/coretrace_python/bundled/syntax/weak_crypto/weak_crypto.py +19 -0
  74. coretrace_python_analyzer-0.1.0/src/coretrace_python/cache.py +310 -0
  75. coretrace_python_analyzer-0.1.0/src/coretrace_python/cfg/__init__.py +46 -0
  76. coretrace_python_analyzer-0.1.0/src/coretrace_python/cfg/builder.py +589 -0
  77. coretrace_python_analyzer-0.1.0/src/coretrace_python/cfg/dominance.py +183 -0
  78. coretrace_python_analyzer-0.1.0/src/coretrace_python/cfg/model.py +166 -0
  79. coretrace_python_analyzer-0.1.0/src/coretrace_python/cli.py +216 -0
  80. coretrace_python_analyzer-0.1.0/src/coretrace_python/dataflow/__init__.py +29 -0
  81. coretrace_python_analyzer-0.1.0/src/coretrace_python/dataflow/lattice.py +78 -0
  82. coretrace_python_analyzer-0.1.0/src/coretrace_python/dataflow/solver.py +96 -0
  83. coretrace_python_analyzer-0.1.0/src/coretrace_python/dependency/__init__.py +44 -0
  84. coretrace_python_analyzer-0.1.0/src/coretrace_python/dependency/advisories.py +168 -0
  85. coretrace_python_analyzer-0.1.0/src/coretrace_python/dependency/correlation.py +87 -0
  86. coretrace_python_analyzer-0.1.0/src/coretrace_python/dependency/graph.py +274 -0
  87. coretrace_python_analyzer-0.1.0/src/coretrace_python/dependency/policy.py +65 -0
  88. coretrace_python_analyzer-0.1.0/src/coretrace_python/dependency/sbom.py +65 -0
  89. coretrace_python_analyzer-0.1.0/src/coretrace_python/engine.py +688 -0
  90. coretrace_python_analyzer-0.1.0/src/coretrace_python/findings/__init__.py +13 -0
  91. coretrace_python_analyzer-0.1.0/src/coretrace_python/findings/coverage.py +45 -0
  92. coretrace_python_analyzer-0.1.0/src/coretrace_python/findings/model.py +49 -0
  93. coretrace_python_analyzer-0.1.0/src/coretrace_python/findings/refutation.py +427 -0
  94. coretrace_python_analyzer-0.1.0/src/coretrace_python/frontend/__init__.py +18 -0
  95. coretrace_python_analyzer-0.1.0/src/coretrace_python/frontend/ast_adapter.py +447 -0
  96. coretrace_python_analyzer-0.1.0/src/coretrace_python/frontend/parser.py +23 -0
  97. coretrace_python_analyzer-0.1.0/src/coretrace_python/hir/__init__.py +5 -0
  98. coretrace_python_analyzer-0.1.0/src/coretrace_python/hir/nodes.py +584 -0
  99. coretrace_python_analyzer-0.1.0/src/coretrace_python/hir/visitors.py +36 -0
  100. coretrace_python_analyzer-0.1.0/src/coretrace_python/interprocedural/__init__.py +49 -0
  101. coretrace_python_analyzer-0.1.0/src/coretrace_python/interprocedural/callgraph.py +291 -0
  102. coretrace_python_analyzer-0.1.0/src/coretrace_python/interprocedural/modulegraph.py +218 -0
  103. coretrace_python_analyzer-0.1.0/src/coretrace_python/interprocedural/summaries.py +463 -0
  104. coretrace_python_analyzer-0.1.0/src/coretrace_python/ir/__init__.py +5 -0
  105. coretrace_python_analyzer-0.1.0/src/coretrace_python/ir/defuse.py +74 -0
  106. coretrace_python_analyzer-0.1.0/src/coretrace_python/ir/lowering.py +575 -0
  107. coretrace_python_analyzer-0.1.0/src/coretrace_python/ir/model.py +481 -0
  108. coretrace_python_analyzer-0.1.0/src/coretrace_python/ir/printer.py +201 -0
  109. coretrace_python_analyzer-0.1.0/src/coretrace_python/ir/ssa.py +277 -0
  110. coretrace_python_analyzer-0.1.0/src/coretrace_python/plugins/__init__.py +58 -0
  111. coretrace_python_analyzer-0.1.0/src/coretrace_python/plugins/api.py +153 -0
  112. coretrace_python_analyzer-0.1.0/src/coretrace_python/plugins/detectors.py +114 -0
  113. coretrace_python_analyzer-0.1.0/src/coretrace_python/plugins/loader.py +84 -0
  114. coretrace_python_analyzer-0.1.0/src/coretrace_python/plugins/manifest.py +112 -0
  115. coretrace_python_analyzer-0.1.0/src/coretrace_python/plugins/registry.py +34 -0
  116. coretrace_python_analyzer-0.1.0/src/coretrace_python/plugins/secrets.py +330 -0
  117. coretrace_python_analyzer-0.1.0/src/coretrace_python/reporters/__init__.py +22 -0
  118. coretrace_python_analyzer-0.1.0/src/coretrace_python/reporters/json_format.py +48 -0
  119. coretrace_python_analyzer-0.1.0/src/coretrace_python/reporters/report.py +23 -0
  120. coretrace_python_analyzer-0.1.0/src/coretrace_python/reporters/sarif.py +70 -0
  121. coretrace_python_analyzer-0.1.0/src/coretrace_python/reporters/text.py +24 -0
  122. coretrace_python_analyzer-0.1.0/src/coretrace_python/semantic/__init__.py +9 -0
  123. coretrace_python_analyzer-0.1.0/src/coretrace_python/semantic/identity.py +39 -0
  124. coretrace_python_analyzer-0.1.0/src/coretrace_python/semantic/imports.py +131 -0
  125. coretrace_python_analyzer-0.1.0/src/coretrace_python/semantic/scopes.py +473 -0
  126. coretrace_python_analyzer-0.1.0/src/coretrace_python/semantic/symbols.py +87 -0
  127. coretrace_python_analyzer-0.1.0/src/coretrace_python/source/__init__.py +13 -0
  128. coretrace_python_analyzer-0.1.0/src/coretrace_python/source/manager.py +81 -0
  129. coretrace_python_analyzer-0.1.0/src/coretrace_python/source/model.py +57 -0
  130. coretrace_python_analyzer-0.1.0/src/coretrace_python/taint/__init__.py +55 -0
  131. coretrace_python_analyzer-0.1.0/src/coretrace_python/taint/engine.py +800 -0
  132. coretrace_python_analyzer-0.1.0/src/coretrace_python/taint/models.py +317 -0
  133. coretrace_python_analyzer-0.1.0/src/coretrace_python/taint/routes.py +99 -0
  134. coretrace_python_analyzer-0.1.0/tests/regression/expected/Chatbot.json +22 -0
  135. coretrace_python_analyzer-0.1.0/tests/regression/expected/DjangoGoat.json +58 -0
  136. coretrace_python_analyzer-0.1.0/tests/regression/expected/Flask-Image-Editing-Website.json +52 -0
  137. coretrace_python_analyzer-0.1.0/tests/regression/expected/InsecureGram.json +64 -0
  138. coretrace_python_analyzer-0.1.0/tests/regression/expected/MiniBookApiServer.json +64 -0
  139. coretrace_python_analyzer-0.1.0/tests/regression/expected/NPL-IA.json +16 -0
  140. coretrace_python_analyzer-0.1.0/tests/regression/expected/Spam-Detection-Project.json +16 -0
  141. coretrace_python_analyzer-0.1.0/tests/regression/expected/Vulnerable_fastapi.json +46 -0
  142. coretrace_python_analyzer-0.1.0/tests/regression/expected/my_gdb.json +9 -0
  143. coretrace_python_analyzer-0.1.0/tests/regression/expected/network-topologer.json +9 -0
  144. coretrace_python_analyzer-0.1.0/tests/regression/expected/uploadbox-cloud-storage-solution.json +52 -0
  145. coretrace_python_analyzer-0.1.0/tests/regression/expected/vulnerable-flask.json +64 -0
  146. coretrace_python_analyzer-0.1.0/tests/regression/expected/yt-fts.json +28 -0
  147. coretrace_python_analyzer-0.1.0/tests/regression/fixtures/vulnerable-flask/README.md +40 -0
  148. coretrace_python_analyzer-0.1.0/tests/regression/fixtures/vulnerable-flask/app.py +90 -0
  149. coretrace_python_analyzer-0.1.0/tests/regression/fixtures/vulnerable-flask/requirements.txt +2 -0
  150. coretrace_python_analyzer-0.1.0/tests/regression/fixtures/vulnerable-flask/vulnerable_services.py +33 -0
  151. coretrace_python_analyzer-0.1.0/tests/regression/repositories.toml +69 -0
  152. coretrace_python_analyzer-0.1.0/tests/test_advisory_feeds.py +362 -0
  153. coretrace_python_analyzer-0.1.0/tests/test_analysis_manager.py +375 -0
  154. coretrace_python_analyzer-0.1.0/tests/test_architecture.py +144 -0
  155. coretrace_python_analyzer-0.1.0/tests/test_audit_detectors.py +217 -0
  156. coretrace_python_analyzer-0.1.0/tests/test_cache.py +241 -0
  157. coretrace_python_analyzer-0.1.0/tests/test_cfg.py +385 -0
  158. coretrace_python_analyzer-0.1.0/tests/test_cli.py +110 -0
  159. coretrace_python_analyzer-0.1.0/tests/test_closures.py +188 -0
  160. coretrace_python_analyzer-0.1.0/tests/test_config_secrets_coverage.py +229 -0
  161. coretrace_python_analyzer-0.1.0/tests/test_constants.py +228 -0
  162. coretrace_python_analyzer-0.1.0/tests/test_correlation.py +220 -0
  163. coretrace_python_analyzer-0.1.0/tests/test_dataflow.py +221 -0
  164. coretrace_python_analyzer-0.1.0/tests/test_dependencies.py +345 -0
  165. coretrace_python_analyzer-0.1.0/tests/test_detectors.py +325 -0
  166. coretrace_python_analyzer-0.1.0/tests/test_discovery.py +118 -0
  167. coretrace_python_analyzer-0.1.0/tests/test_django_http_clients.py +303 -0
  168. coretrace_python_analyzer-0.1.0/tests/test_django_routes.py +231 -0
  169. coretrace_python_analyzer-0.1.0/tests/test_docs.py +99 -0
  170. coretrace_python_analyzer-0.1.0/tests/test_dominance.py +182 -0
  171. coretrace_python_analyzer-0.1.0/tests/test_emit_ir.py +315 -0
  172. coretrace_python_analyzer-0.1.0/tests/test_exceptions.py +331 -0
  173. coretrace_python_analyzer-0.1.0/tests/test_factories_match_loop_else.py +206 -0
  174. coretrace_python_analyzer-0.1.0/tests/test_fastapi_cli_precision.py +254 -0
  175. coretrace_python_analyzer-0.1.0/tests/test_frameworks.py +276 -0
  176. coretrace_python_analyzer-0.1.0/tests/test_heap.py +331 -0
  177. coretrace_python_analyzer-0.1.0/tests/test_hir_builder.py +221 -0
  178. coretrace_python_analyzer-0.1.0/tests/test_imports.py +123 -0
  179. coretrace_python_analyzer-0.1.0/tests/test_interprocedural.py +243 -0
  180. coretrace_python_analyzer-0.1.0/tests/test_interprocedural_taint.py +202 -0
  181. coretrace_python_analyzer-0.1.0/tests/test_ir.py +137 -0
  182. coretrace_python_analyzer-0.1.0/tests/test_match_patterns.py +153 -0
  183. coretrace_python_analyzer-0.1.0/tests/test_packaging.py +112 -0
  184. coretrace_python_analyzer-0.1.0/tests/test_parallel.py +254 -0
  185. coretrace_python_analyzer-0.1.0/tests/test_parser.py +14 -0
  186. coretrace_python_analyzer-0.1.0/tests/test_plaintext_credentials.py +188 -0
  187. coretrace_python_analyzer-0.1.0/tests/test_plugins.py +437 -0
  188. coretrace_python_analyzer-0.1.0/tests/test_project.py +269 -0
  189. coretrace_python_analyzer-0.1.0/tests/test_pyir_imports.py +143 -0
  190. coretrace_python_analyzer-0.1.0/tests/test_real_code_precision.py +183 -0
  191. coretrace_python_analyzer-0.1.0/tests/test_refutation.py +270 -0
  192. coretrace_python_analyzer-0.1.0/tests/test_refutation_evidence.py +337 -0
  193. coretrace_python_analyzer-0.1.0/tests/test_regression.py +122 -0
  194. coretrace_python_analyzer-0.1.0/tests/test_remaining_limits.py +168 -0
  195. coretrace_python_analyzer-0.1.0/tests/test_reporters.py +208 -0
  196. coretrace_python_analyzer-0.1.0/tests/test_scopes.py +370 -0
  197. coretrace_python_analyzer-0.1.0/tests/test_secrets_sbom.py +342 -0
  198. coretrace_python_analyzer-0.1.0/tests/test_self_state.py +162 -0
  199. coretrace_python_analyzer-0.1.0/tests/test_source_manager.py +88 -0
  200. coretrace_python_analyzer-0.1.0/tests/test_ssa.py +275 -0
  201. coretrace_python_analyzer-0.1.0/tests/test_symbol_resolution.py +212 -0
  202. coretrace_python_analyzer-0.1.0/tests/test_symbols.py +150 -0
  203. coretrace_python_analyzer-0.1.0/tests/test_syntax_control_flow.py +268 -0
  204. coretrace_python_analyzer-0.1.0/tests/test_syntax_coverage.py +307 -0
  205. coretrace_python_analyzer-0.1.0/tests/test_syntax_expressions.py +285 -0
  206. coretrace_python_analyzer-0.1.0/tests/test_taint.py +314 -0
@@ -0,0 +1,57 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ python-version: ["3.11", "3.12", "3.13"]
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - uses: actions/setup-python@v5
16
+ with:
17
+ python-version: ${{ matrix.python-version }}
18
+ - run: python -m pip install -e ".[dev]"
19
+ - run: python -m mypy
20
+ - run: python -m ruff check .
21
+ - run: python -m pytest
22
+
23
+ regression:
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - uses: actions/setup-python@v5
28
+ with:
29
+ python-version: "3.12"
30
+ - uses: actions/cache@v4
31
+ with:
32
+ path: .regression
33
+ key: regression-${{ hashFiles('tests/regression/repositories.toml') }}
34
+ - run: python -m pip install -e ".[dev]"
35
+ - run: python -m pytest -m regression
36
+
37
+ package:
38
+ runs-on: ubuntu-latest
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+ - uses: actions/setup-python@v5
42
+ with:
43
+ python-version: "3.12"
44
+ - run: python -m pip install build twine
45
+ - run: python -m build
46
+ - run: python -m twine check dist/*
47
+ - name: Install the wheel in a clean environment and run a check
48
+ run: |
49
+ python -m venv /tmp/smoke
50
+ /tmp/smoke/bin/pip install dist/*.whl
51
+ printf 'def run(code):\n eval(code)\n' > /tmp/sample.py
52
+ /tmp/smoke/bin/coretrace-python-analyzer --check /tmp/sample.py --format json > /tmp/report.json || test $? -eq 1
53
+ grep -q '"rule_id": "dangerous-eval"' /tmp/report.json
54
+ - uses: actions/upload-artifact@v4
55
+ with:
56
+ name: dist
57
+ path: dist/
@@ -0,0 +1,43 @@
1
+ name: Release
2
+
3
+ # Publishes the package to PyPI when a version tag is pushed (``v0.1.0``). The tag must
4
+ # match the version in pyproject.toml. Publication uses PyPI trusted publishing: the
5
+ # ``pypi`` environment and the trusted publisher for this repository and workflow must be
6
+ # configured on pypi.org once; no token is stored.
7
+
8
+ on:
9
+ push:
10
+ tags: ["v*"]
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+ - name: Check that the tag matches the package version
21
+ run: |
22
+ version=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
23
+ test "v$version" = "${GITHUB_REF_NAME}"
24
+ - run: python -m pip install build twine
25
+ - run: python -m build
26
+ - run: python -m twine check dist/*
27
+ - uses: actions/upload-artifact@v4
28
+ with:
29
+ name: dist
30
+ path: dist/
31
+
32
+ publish:
33
+ needs: build
34
+ runs-on: ubuntu-latest
35
+ environment: pypi
36
+ permissions:
37
+ id-token: write
38
+ steps:
39
+ - uses: actions/download-artifact@v4
40
+ with:
41
+ name: dist
42
+ path: dist/
43
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,11 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ .venv/
7
+ build/
8
+ dist/
9
+
10
+ .DS_Store
11
+ .regression/
@@ -0,0 +1,74 @@
1
+ Metadata-Version: 2.5
2
+ Name: coretrace-python-analyzer
3
+ Version: 0.1.0
4
+ Summary: Static security analysis infrastructure for Python code
5
+ Project-URL: Homepage, https://github.com/CoreTrace/coretrace-python-analyzer
6
+ Project-URL: Repository, https://github.com/CoreTrace/coretrace-python-analyzer
7
+ Project-URL: Issues, https://github.com/CoreTrace/coretrace-python-analyzer/issues
8
+ Author: CoreTrace
9
+ License: Apache-2.0
10
+ Keywords: python,sast,security,static-analysis,taint
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Security
20
+ Classifier: Topic :: Software Development :: Quality Assurance
21
+ Requires-Python: >=3.11
22
+ Provides-Extra: dev
23
+ Requires-Dist: build>=1.2; extra == 'dev'
24
+ Requires-Dist: mypy>=1.15; extra == 'dev'
25
+ Requires-Dist: pytest>=8.0; extra == 'dev'
26
+ Requires-Dist: ruff>=0.9; extra == 'dev'
27
+ Requires-Dist: twine>=5.0; extra == 'dev'
28
+ Description-Content-Type: text/markdown
29
+
30
+ # CoreTrace Python Analyzer
31
+
32
+ A standalone static security analyzer for Python. It finds injection vulnerabilities by
33
+ following attacker-controlled data through the program, across functions, files, objects
34
+ and closures, and judges each flow against the guards on its path; it reports dangerous
35
+ API usage, secrets committed in sources and configuration, and vulnerable or forbidden
36
+ dependencies, correlated with the code that reaches them. It runs offline, on a file or a
37
+ whole project, with no runtime dependency.
38
+
39
+ ```bash
40
+ pip install coretrace-python-analyzer
41
+ coretrace-python-analyzer --check src/ --format sarif > report.sarif
42
+ ```
43
+
44
+ - [Usage guide](docs/usage.md): command line, rules, report formats, dependencies and
45
+ advisories, cache and parallelism, continuous integration.
46
+ - [Writing a plugin](docs/plugins.md): models for another framework, detectors for
47
+ another rule, secret patterns and project-wide checks.
48
+ - [Architecture](docs/architecture.md): the engine's design and its migration plan.
49
+
50
+ The pipeline: source manager, parser-independent high-level representation (PyHIR),
51
+ semantic resolution of imports and scopes, lowering to a small intermediate
52
+ representation (PyIR), control-flow graphs, SSA, data-flow and abstract interpretation,
53
+ interprocedural summaries, taint and refutation, then plugins and reporters.
54
+
55
+ ## Development
56
+
57
+ ```bash
58
+ python -m venv .venv
59
+ python -m pip install -e ".[dev]"
60
+ python -m mypy
61
+ python -m pytest
62
+ python -m ruff check .
63
+ ```
64
+
65
+ The non-regression suite analyses the public repositories pinned in
66
+ [`tests/regression/repositories.toml`](tests/regression/repositories.toml) and compares
67
+ findings and coverage with the snapshots in `tests/regression/expected/`. It clones on
68
+ first use, needs the network and runs in its own CI job:
69
+
70
+ ```bash
71
+ python -m pytest -m regression
72
+ CORETRACE_REGRESSION_UPDATE=1 python -m pytest -m regression # record an intended change
73
+ ```
74
+
@@ -0,0 +1,45 @@
1
+ # CoreTrace Python Analyzer
2
+
3
+ A standalone static security analyzer for Python. It finds injection vulnerabilities by
4
+ following attacker-controlled data through the program, across functions, files, objects
5
+ and closures, and judges each flow against the guards on its path; it reports dangerous
6
+ API usage, secrets committed in sources and configuration, and vulnerable or forbidden
7
+ dependencies, correlated with the code that reaches them. It runs offline, on a file or a
8
+ whole project, with no runtime dependency.
9
+
10
+ ```bash
11
+ pip install coretrace-python-analyzer
12
+ coretrace-python-analyzer --check src/ --format sarif > report.sarif
13
+ ```
14
+
15
+ - [Usage guide](docs/usage.md): command line, rules, report formats, dependencies and
16
+ advisories, cache and parallelism, continuous integration.
17
+ - [Writing a plugin](docs/plugins.md): models for another framework, detectors for
18
+ another rule, secret patterns and project-wide checks.
19
+ - [Architecture](docs/architecture.md): the engine's design and its migration plan.
20
+
21
+ The pipeline: source manager, parser-independent high-level representation (PyHIR),
22
+ semantic resolution of imports and scopes, lowering to a small intermediate
23
+ representation (PyIR), control-flow graphs, SSA, data-flow and abstract interpretation,
24
+ interprocedural summaries, taint and refutation, then plugins and reporters.
25
+
26
+ ## Development
27
+
28
+ ```bash
29
+ python -m venv .venv
30
+ python -m pip install -e ".[dev]"
31
+ python -m mypy
32
+ python -m pytest
33
+ python -m ruff check .
34
+ ```
35
+
36
+ The non-regression suite analyses the public repositories pinned in
37
+ [`tests/regression/repositories.toml`](tests/regression/repositories.toml) and compares
38
+ findings and coverage with the snapshots in `tests/regression/expected/`. It clones on
39
+ first use, needs the network and runs in its own CI job:
40
+
41
+ ```bash
42
+ python -m pytest -m regression
43
+ CORETRACE_REGRESSION_UPDATE=1 python -m pytest -m regression # record an intended change
44
+ ```
45
+