socketsecurity 2.11.3__tar.gz → 2.11.5__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.
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/CHANGELOG.md +37 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/Dockerfile +7 -7
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/PKG-INFO +5 -5
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/docs/cli-reference.md +1 -1
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/pyproject.toml +5 -5
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/__init__.py +1 -1
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/tools/reachability.py +6 -5
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/socketcli.py +3 -4
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_reachability.py +24 -1
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/uv.lock +135 -96
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/CODEOWNERS +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/PULL_REQUEST_TEMPLATE/bug-fix.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/PULL_REQUEST_TEMPLATE/improvement.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/actions/setup-docker/action.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/actions/setup-hatch/action.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/actions/setup-sfw/action.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/dependabot.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/dependency-audit.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/dependency-review.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/docker-stable.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/e2e-test.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/package-check.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/pr-preview.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/python-tests.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/release.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/workflows/version-check.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.github/zizmor.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.gitignore +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.hooks/sync_version.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.pre-commit-config.yaml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/.python-version +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/CONTRIBUTING.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/Dockerfile.preview +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/LICENSE +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/Makefile +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/README.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/benchmarks/manifest_discovery.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/docs/ci-cd.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/docs/development.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/docs/troubleshooting.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/examples/config/sarif-dashboard-parity.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/examples/config/sarif-dashboard-parity.toml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/examples/config/sarif-diff-ci-cd.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/examples/config/sarif-diff-ci-cd.toml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/examples/config/sarif-instance-detail.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/examples/config/sarif-instance-detail.toml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/instructions/gitlab-commit-status/uat.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/pytest.ini +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/scripts/build_container.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/scripts/build_container_flexible.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/scripts/deploy-test-docker.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/scripts/deploy-test-pypi.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/scripts/docker-entrypoint.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/scripts/run.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/session.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socket.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/config.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/__init__.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/alert_selection.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/classes.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/cli_client.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/cli_run.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/exceptions.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/git_interface.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/git_remote.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/helper/__init__.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/helper/socket_facts_loader.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/lazy_file_loader.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/log_uploader.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/logging.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/messages.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/pull_request.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/resource_utils.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/scm/__init__.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/scm/base.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/scm/client.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/scm/github.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/scm/gitlab.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/scm_comments.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/socket_config.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/streaming.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/tools/coana-cache.mjs +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/core/utils.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/fossa_compat.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/output.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/__init__.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/base.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/formatters/__init__.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/formatters/slack.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/jira.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/manager.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/slack.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/teams.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/socketsecurity/plugins/webhook.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/__init__.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/conftest.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/create_diff_input.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_diff_alerts.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_diff_generation.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_diff_scan_polling.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_facts_compression.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_full_scan_outputs.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_has_manifest_files.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_invalid_facts_marker.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_package_and_alerts.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_sdk_methods.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/core/test_supporting_methods.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/create_response.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/diff/stream_diff.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/diff/stream_diff_full.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/head_scan/metadata.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/head_scan/stream_scan.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/head_scan/stream_scan_full.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/new_scan/metadata.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/fullscans/new_scan/stream_scan.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/repos/repo_info_error.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/repos/repo_info_no_head.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/repos/repo_info_success.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/data/settings/security-policy.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/fixtures/simple-npm/index.js +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/fixtures/simple-npm/package.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/fixtures/simple-pypi/requirements.txt +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/reach-facts-probe.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/validate-gitlab.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/validate-json.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/validate-reachability.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/validate-sarif.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/e2e/validate-scan.sh +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/fixtures/fossa/README.md +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/fixtures/fossa/fossa-analyze-empty.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/fixtures/fossa/fossa-analyze-populated.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/fixtures/fossa/fossa-sbom-empty-deep.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/fixtures/fossa/fossa-sbom-populated.json +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/__init__.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_alert_selection.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_cli_config.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_cli_run.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_client.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_commit_message_truncation.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_config.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_dependency_overview.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_disable_ignore.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_exclude_paths.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_fossa_compat.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_fossa_parity.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_full_scan_retry.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_git_interface.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_git_remote.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_github_buildkite_config.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_gitlab_auth.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_gitlab_auth_fallback.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_gitlab_commit_status.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_gitlab_format.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_ignore_authorization.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_ignore_telemetry_filtering.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_include_dirs.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_log_uploader.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_manifest_discovery.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_messages.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_output.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_pr_comment_rendering.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_pull_request_context.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_scan_scope.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_slack_plugin.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_slack_severity_normalization.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_socketcli.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_streaming.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_summary_text.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/tests/unit/test_tier1_finalize.py +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/workflows/bitbucket-pipelines.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/workflows/buildkite.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/workflows/github-actions.yml +0 -0
- {socketsecurity-2.11.3 → socketsecurity-2.11.5}/workflows/gitlab-ci.yml +0 -0
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.11.5
|
|
4
|
+
|
|
5
|
+
### Changed: bump pinned Coana CLI to 15.13.2
|
|
6
|
+
|
|
7
|
+
- Bumped the pinned reachability engine (the Coana CLI) from `15.13.0` to
|
|
8
|
+
`15.13.2`. See the
|
|
9
|
+
[reachability analysis changelog](https://docs.socket.dev/docs/reachability-analysis-changelog)
|
|
10
|
+
for engine changes.
|
|
11
|
+
|
|
12
|
+
## 2.11.4
|
|
13
|
+
|
|
14
|
+
### Fixed: bump `brotli` and `brotlicffi` to patched versions
|
|
15
|
+
|
|
16
|
+
- Bumped the pinned `brotli` (CPython) from `1.2.0` to `1.2.1` and `brotlicffi`
|
|
17
|
+
(other implementations) from `1.2.0.2` to `1.2.1.0`, which fix
|
|
18
|
+
CVE-2026-111497 (GHSA-9v8h-qqgm-4m35), an out-of-bounds write in the Brotli
|
|
19
|
+
decoder. The pins are exact, so earlier releases couldn't be installed
|
|
20
|
+
alongside the patched versions.
|
|
21
|
+
|
|
22
|
+
### Fixed: find the reachability facts file when `--target-path` isn't the working directory
|
|
23
|
+
|
|
24
|
+
- `--only-facts-file` and `--reach-use-only-pregenerated-sboms` now submit the
|
|
25
|
+
facts file, and `--reach` no longer warns `Facts file not found`.
|
|
26
|
+
|
|
27
|
+
### Changed: update the Docker image's PyPy to 3.12
|
|
28
|
+
|
|
29
|
+
- The amd64 Docker image now ships PyPy `8.0.1` (Python 3.12), up from PyPy
|
|
30
|
+
`7.3.20` (Python 3.11). The reachability engine uses it to speed up Python
|
|
31
|
+
analysis.
|
|
32
|
+
|
|
33
|
+
### Changed: bump pinned Coana CLI to 15.13.0
|
|
34
|
+
|
|
35
|
+
- Bumped the pinned reachability engine (the Coana CLI) from `15.12.11` to
|
|
36
|
+
`15.13.0`. See the
|
|
37
|
+
[reachability analysis changelog](https://docs.socket.dev/docs/reachability-analysis-changelog)
|
|
38
|
+
for engine changes.
|
|
39
|
+
|
|
3
40
|
## 2.11.3
|
|
4
41
|
|
|
5
42
|
### Fixed: finish rejecting the compromised eMudhra intermediate CAs
|
|
@@ -89,16 +89,16 @@ RUN if [ "$DOTNET_VERSION" = "6" ]; then \
|
|
|
89
89
|
|
|
90
90
|
# Install PyPy (Alpine-compatible build for x86_64 only)
|
|
91
91
|
# PyPy is an alternative Python interpreter that makes the Python reachability analysis faster.
|
|
92
|
-
# This is a custom build of PyPy3.
|
|
92
|
+
# This is a custom build of PyPy3.12 for Alpine on x86-64.
|
|
93
93
|
ARG TARGETARCH # Passed by Docker buildx
|
|
94
94
|
RUN if [ "$TARGETARCH" = "amd64" ]; then \
|
|
95
|
-
PYPY_URL="https://github.com/BarrensZeppelin/alpine-pypy/releases/download/alp3.
|
|
96
|
-
PYPY_SHA256="
|
|
97
|
-
curl -L -o /tmp/pypy.tar.
|
|
98
|
-
echo "$PYPY_SHA256 /tmp/pypy.tar.
|
|
95
|
+
PYPY_URL="https://github.com/BarrensZeppelin/alpine-pypy/releases/download/alp3.24.2-pypy3.12-8.0.1/pypy3.12-v8.0.1-linux64-alpine3.24.tar.gz" && \
|
|
96
|
+
PYPY_SHA256="b6d5dd429c6394f1710a52e3e20d5c9198547caff9528547c457d3f2ed37db09" && \
|
|
97
|
+
curl -L -o /tmp/pypy.tar.gz "$PYPY_URL" && \
|
|
98
|
+
echo "$PYPY_SHA256 /tmp/pypy.tar.gz" | sha256sum -c - && \
|
|
99
99
|
mkdir -p /opt/pypy && \
|
|
100
|
-
tar -
|
|
101
|
-
rm /tmp/pypy.tar.
|
|
100
|
+
tar -xz --strip-components=1 -C /opt/pypy -f /tmp/pypy.tar.gz && \
|
|
101
|
+
rm /tmp/pypy.tar.gz && \
|
|
102
102
|
ln -s /opt/pypy/bin/pypy3 /bin/pypy3 && \
|
|
103
103
|
pypy3 --version; \
|
|
104
104
|
fi
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: socketsecurity
|
|
3
|
-
Version: 2.11.
|
|
3
|
+
Version: 2.11.5
|
|
4
4
|
Summary: Socket Security CLI for CI/CD
|
|
5
5
|
Project-URL: Homepage, https://socket.dev
|
|
6
6
|
Author-email: Douglas Coburn <douglas@socket.dev>
|
|
@@ -34,10 +34,10 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
34
34
|
Classifier: Programming Language :: Python :: 3.12
|
|
35
35
|
Requires-Python: >=3.11
|
|
36
36
|
Requires-Dist: beautifulsoup4==4.15.0
|
|
37
|
-
Requires-Dist: brotli==1.2.
|
|
38
|
-
Requires-Dist: brotlicffi==1.2.0
|
|
37
|
+
Requires-Dist: brotli==1.2.1; platform_python_implementation == 'CPython'
|
|
38
|
+
Requires-Dist: brotlicffi==1.2.1.0; platform_python_implementation != 'CPython'
|
|
39
39
|
Requires-Dist: certifi>=2026.10.19
|
|
40
|
-
Requires-Dist: gitpython==3.2.
|
|
40
|
+
Requires-Dist: gitpython==3.2.1
|
|
41
41
|
Requires-Dist: markdown==3.11.1
|
|
42
42
|
Requires-Dist: mdutils==1.8.1
|
|
43
43
|
Requires-Dist: packaging==26.3
|
|
@@ -48,7 +48,7 @@ Requires-Dist: socketdev==3.6.1
|
|
|
48
48
|
Provides-Extra: dev
|
|
49
49
|
Requires-Dist: hatch==1.18.1; extra == 'dev'
|
|
50
50
|
Requires-Dist: pre-commit==4.7.0; extra == 'dev'
|
|
51
|
-
Requires-Dist: ruff==0.17.
|
|
51
|
+
Requires-Dist: ruff==0.17.1; extra == 'dev'
|
|
52
52
|
Requires-Dist: twine==7.0.0; extra == 'dev'
|
|
53
53
|
Requires-Dist: uv==0.13.4; extra == 'dev'
|
|
54
54
|
Provides-Extra: test
|
|
@@ -338,7 +338,7 @@ If you don't want to provide the Socket API Token every time then you can use th
|
|
|
338
338
|
| Parameter | Required | Default | Description |
|
|
339
339
|
|:---------------------------------|:---------|:--------|:---------------------------------------------------------------------------------------------------------------------------|
|
|
340
340
|
| `--reach` | False | False | Enable reachability analysis to identify which vulnerable functions are actually called by your code. Creates a full application reachability scan (`scan_type=socket_tier1`). |
|
|
341
|
-
| `--reach-version` | False | 15.
|
|
341
|
+
| `--reach-version` | False | 15.13.2 | Version of the Coana CLI to use. Defaults to the pinned version that ships with this CLI release, so the engine only changes when you upgrade the Socket CLI. Pass `latest` to always use the newest published version (opt-in auto-update), or an explicit version (e.g. `1.2.3`) to pin it. |
|
|
342
342
|
| `--reach-analysis-timeout` | False | 10m | Timeout for each reachability analysis run, e.g. `90s`, `10m` or `1h`. Omitted by default, so coana applies its own default (`10m`). Alias: `--reach-timeout` |
|
|
343
343
|
| `--reach-analysis-memory-limit` | False | 8GB | Memory limit for each reachability analysis run, e.g. `512MB` or `8GB`. Omitted by default, so coana applies its own default (`8GB`). Alias: `--reach-memory-limit` |
|
|
344
344
|
| `--reach-concurrency` | False | 1 | Control parallel analysis execution (must be >= 1). Omitted by default, so coana applies its own default. |
|
|
@@ -6,21 +6,21 @@ build-backend = "hatchling.build"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "socketsecurity"
|
|
9
|
-
version = "2.11.
|
|
9
|
+
version = "2.11.5"
|
|
10
10
|
requires-python = ">= 3.11"
|
|
11
11
|
license = {"file" = "LICENSE"}
|
|
12
12
|
dependencies = [
|
|
13
13
|
"requests==2.34.2",
|
|
14
14
|
"mdutils==1.8.1",
|
|
15
15
|
"prettytable==3.18.0",
|
|
16
|
-
"gitpython==3.2.
|
|
16
|
+
"gitpython==3.2.1",
|
|
17
17
|
"packaging==26.3",
|
|
18
18
|
"python-dotenv==1.2.4",
|
|
19
19
|
"socketdev==3.6.1",
|
|
20
20
|
"beautifulsoup4==4.15.0",
|
|
21
21
|
"markdown==3.11.1",
|
|
22
|
-
"brotli==1.2.
|
|
23
|
-
"brotlicffi==1.2.0
|
|
22
|
+
"brotli==1.2.1; platform_python_implementation == 'CPython'",
|
|
23
|
+
"brotlicffi==1.2.1.0; platform_python_implementation != 'CPython'",
|
|
24
24
|
# requests' CA bundle. A floor rather than an exact pin, so later trust-store
|
|
25
25
|
# fixes still reach installs; 2026.10.19 drops the roots behind the
|
|
26
26
|
# compromised eMudhra intermediates.
|
|
@@ -51,7 +51,7 @@ test = [
|
|
|
51
51
|
"pytest-watch==4.2.0"
|
|
52
52
|
]
|
|
53
53
|
dev = [
|
|
54
|
-
"ruff==0.17.
|
|
54
|
+
"ruff==0.17.1",
|
|
55
55
|
"twine==7.0.0", # for building
|
|
56
56
|
"uv==0.13.4", # for dependency management
|
|
57
57
|
"pre-commit==4.7.0",
|
|
@@ -22,7 +22,7 @@ log = logging.getLogger(__name__)
|
|
|
22
22
|
# Pinned Coana CLI version. Bumped deliberately per Python CLI release so the
|
|
23
23
|
# reachability engine version only changes through a standard pip upgrade (advance notice).
|
|
24
24
|
# Pass --reach-version latest to opt into the newest published version instead.
|
|
25
|
-
DEFAULT_COANA_CLI_VERSION: Final = "15.
|
|
25
|
+
DEFAULT_COANA_CLI_VERSION: Final = "15.13.2"
|
|
26
26
|
|
|
27
27
|
# Vendored from coana-package-manager, where it is generated; the only code that may read or
|
|
28
28
|
# write the cache Coana shares with the Socket CLIs. See "Launching Coana" in that repo's
|
|
@@ -132,7 +132,7 @@ class ReachabilityAnalyzer:
|
|
|
132
132
|
org_slug: Socket organization slug
|
|
133
133
|
target_directory: Directory to analyze
|
|
134
134
|
tar_hash: Tar hash from manifest upload or existing scan (optional)
|
|
135
|
-
output_path: Output file path for results
|
|
135
|
+
output_path: Output file path for results, relative to target_directory unless absolute
|
|
136
136
|
timeout: Analysis timeout, forwarded verbatim to coana --analysis-timeout
|
|
137
137
|
(coana parses the units, e.g. '90s', '10m', '1h'; a bare number is seconds)
|
|
138
138
|
memory_limit: Memory limit, forwarded verbatim to coana --memory-limit
|
|
@@ -282,8 +282,9 @@ class ReachabilityAnalyzer:
|
|
|
282
282
|
log.error(f"Reachability analysis failed with exit code {returncode}")
|
|
283
283
|
raise Exception(f"Reachability analysis failed with exit code {returncode}")
|
|
284
284
|
|
|
285
|
-
#
|
|
286
|
-
|
|
285
|
+
# Coana runs in target_directory, so a relative output_path lands there.
|
|
286
|
+
report_path = os.path.join(target_directory, output_path)
|
|
287
|
+
scan_id = self._extract_scan_id(report_path)
|
|
287
288
|
|
|
288
289
|
log.info("Reachability analysis completed successfully")
|
|
289
290
|
if scan_id:
|
|
@@ -291,7 +292,7 @@ class ReachabilityAnalyzer:
|
|
|
291
292
|
|
|
292
293
|
return {
|
|
293
294
|
"scan_id": scan_id,
|
|
294
|
-
"report_path":
|
|
295
|
+
"report_path": report_path,
|
|
295
296
|
"tar_hash_used": tar_hash
|
|
296
297
|
}
|
|
297
298
|
|
|
@@ -561,7 +561,7 @@ def main_code():
|
|
|
561
561
|
|
|
562
562
|
# If only-facts-file mode, mark the facts file for submission
|
|
563
563
|
if config.only_facts_file:
|
|
564
|
-
facts_file_to_submit = os.path.abspath(
|
|
564
|
+
facts_file_to_submit = os.path.abspath(result['report_path'])
|
|
565
565
|
log.info(f"Only-facts-file mode: will submit only {facts_file_to_submit}")
|
|
566
566
|
|
|
567
567
|
# If reach-use-only-pregenerated-sboms mode, submit CDX, SPDX, and facts file
|
|
@@ -570,9 +570,8 @@ def main_code():
|
|
|
570
570
|
sbom_files_to_submit = []
|
|
571
571
|
for scan_path in scan_paths:
|
|
572
572
|
sbom_files_to_submit.extend(core.find_sbom_files(scan_path))
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
sbom_files_to_submit.append(output_path)
|
|
573
|
+
if os.path.exists(result['report_path']):
|
|
574
|
+
sbom_files_to_submit.append(result['report_path'])
|
|
576
575
|
log.info(f"Pre-generated SBOMs mode: will submit {len(sbom_files_to_submit)} files (CDX, SPDX, and facts file)")
|
|
577
576
|
|
|
578
577
|
except Exception as e:
|
|
@@ -20,12 +20,14 @@ from socketsecurity.core.tools.reachability import (
|
|
|
20
20
|
|
|
21
21
|
VERSION = "1.2.3"
|
|
22
22
|
|
|
23
|
-
# Records what it was run with in $FAKE_COANA_RUN, or fails when passed --fail.
|
|
23
|
+
# Records what it was run with in $FAKE_COANA_RUN, or fails when passed --fail. Like Coana, it
|
|
24
|
+
# writes the facts file to the --socket-mode path, resolved against its cwd.
|
|
24
25
|
FAKE_CLI_WRAPPER = """
|
|
25
26
|
import { writeFileSync } from 'node:fs'
|
|
26
27
|
const args = process.argv.slice(2)
|
|
27
28
|
if (args.includes('--fail')) process.exit(1)
|
|
28
29
|
writeFileSync(process.env.FAKE_COANA_RUN, JSON.stringify({ args, cwd: process.cwd(), env: process.env }))
|
|
30
|
+
writeFileSync(args[args.indexOf('--socket-mode') + 1], JSON.stringify({ tier1ReachabilityScanId: 'reach-scan-id' }))
|
|
29
31
|
"""
|
|
30
32
|
|
|
31
33
|
|
|
@@ -84,6 +86,27 @@ def test_runs_the_cached_cli_wrapper_with_the_args_and_cwd(fake_run_path):
|
|
|
84
86
|
assert run["cwd"] == str(fake_run_path.parent)
|
|
85
87
|
|
|
86
88
|
|
|
89
|
+
@pytest.mark.parametrize("absolute", [False, True])
|
|
90
|
+
def test_report_path_is_where_coana_wrote_the_facts_file(fake_run_path, tmp_path, monkeypatch, absolute):
|
|
91
|
+
target = tmp_path / "project"
|
|
92
|
+
target.mkdir()
|
|
93
|
+
monkeypatch.chdir(tmp_path)
|
|
94
|
+
output_path = str(tmp_path / "out" / "facts.json") if absolute else ".socket.facts.json"
|
|
95
|
+
if absolute:
|
|
96
|
+
(tmp_path / "out").mkdir()
|
|
97
|
+
|
|
98
|
+
result = _analyzer().run_reachability_analysis(
|
|
99
|
+
org_slug="my-org",
|
|
100
|
+
target_directory=str(target),
|
|
101
|
+
tar_hash="tar-hash-abc123",
|
|
102
|
+
output_path=output_path,
|
|
103
|
+
version=VERSION,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
assert result["report_path"] == (output_path if absolute else str(target / ".socket.facts.json"))
|
|
107
|
+
assert result["scan_id"] == "reach-scan-id"
|
|
108
|
+
|
|
109
|
+
|
|
87
110
|
def test_reach_debug_appends_debug_long_flag(fake_run_path):
|
|
88
111
|
"""G9: --reach-debug -> coana --debug; does not emit the global -d."""
|
|
89
112
|
args = _run(fake_run_path, reach_debug=True)["args"]
|