socketsecurity 2.4.12__tar.gz → 2.4.14__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.4.12 → socketsecurity-2.4.14}/CHANGELOG.md +19 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/PKG-INFO +1 -1
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/docs/cli-reference.md +10 -2
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/docs/troubleshooting.md +1 -1
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/pyproject.toml +1 -1
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/__init__.py +1 -1
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/__init__.py +18 -18
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/tools/reachability.py +3 -3
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/uv.lock +1 -1
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/CODEOWNERS +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/PULL_REQUEST_TEMPLATE/bug-fix.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/PULL_REQUEST_TEMPLATE/improvement.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/actions/setup-docker/action.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/actions/setup-hatch/action.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/actions/setup-sfw/action.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/dependabot.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/workflows/dependency-review.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/workflows/docker-stable.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/workflows/e2e-test.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/workflows/pr-preview.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/workflows/python-tests.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/workflows/release.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/workflows/version-check.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/zizmor.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.gitignore +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.hooks/sync_version.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.pre-commit-config.yaml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/.python-version +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/Dockerfile +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/LICENSE +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/Makefile +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/README.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/docs/ci-cd.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/docs/development.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/examples/config/sarif-dashboard-parity.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/examples/config/sarif-dashboard-parity.toml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/examples/config/sarif-diff-ci-cd.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/examples/config/sarif-diff-ci-cd.toml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/examples/config/sarif-instance-detail.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/examples/config/sarif-instance-detail.toml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/instructions/gitlab-commit-status/uat.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/pytest.ini +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/scripts/build_container.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/scripts/build_container_flexible.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/scripts/deploy-test-docker.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/scripts/deploy-test-pypi.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/scripts/docker-entrypoint.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/scripts/run.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/session.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socket.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/config.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/alert_selection.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/classes.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/cli_client.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/cli_run.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/exceptions.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/git_interface.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/helper/__init__.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/helper/socket_facts_loader.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/lazy_file_loader.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/log_uploader.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/logging.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/messages.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/resource_utils.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/scm/__init__.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/scm/base.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/scm/client.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/scm/github.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/scm/gitlab.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/scm_comments.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/socket_config.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/streaming.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/utils.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/fossa_compat.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/output.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/__init__.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/base.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/formatters/__init__.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/formatters/slack.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/jira.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/manager.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/slack.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/teams.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/webhook.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/socketcli.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/__init__.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/conftest.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/create_diff_input.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/test_diff_alerts.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/test_diff_generation.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/test_facts_compression.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/test_has_manifest_files.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/test_package_and_alerts.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/test_sdk_methods.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/core/test_supporting_methods.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/create_response.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/diff/stream_diff.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/diff/stream_diff_full.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/head_scan/metadata.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/head_scan/stream_scan.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/head_scan/stream_scan_full.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/new_scan/metadata.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/new_scan/stream_scan.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/repos/repo_info_error.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/repos/repo_info_no_head.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/repos/repo_info_success.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/settings/security-policy.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/fixtures/simple-npm/index.js +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/fixtures/simple-npm/package.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/fixtures/simple-pypi/requirements.txt +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/validate-gitlab.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/validate-json.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/validate-reachability.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/validate-sarif.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/validate-scan.sh +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/README.md +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-analyze-empty.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-analyze-populated.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-sbom-empty-deep.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-sbom-populated.json +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/__init__.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_alert_selection.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_cli_config.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_cli_run.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_client.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_config.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_dependency_overview.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_disable_ignore.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_exclude_paths.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_fossa_compat.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_fossa_parity.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_full_scan_retry.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_gitlab_auth.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_gitlab_auth_fallback.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_gitlab_commit_status.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_gitlab_format.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_ignore_telemetry_filtering.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_include_dirs.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_log_uploader.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_output.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_reachability.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_slack_plugin.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_socketcli.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_streaming.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_tier1_finalize.py +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/workflows/bitbucket-pipelines.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/workflows/buildkite.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/workflows/github-actions.yml +0 -0
- {socketsecurity-2.4.12 → socketsecurity-2.4.14}/workflows/gitlab-ci.yml +0 -0
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.4.14
|
|
4
|
+
|
|
5
|
+
### Changed: bump pinned @coana-tech/cli to 15.5.9
|
|
6
|
+
|
|
7
|
+
- Bumped the pinned `@coana-tech/cli` version to `15.5.9` (previously `15.5.7`).
|
|
8
|
+
|
|
9
|
+
## 2.4.13
|
|
10
|
+
|
|
11
|
+
### Changed: reachability analysis types now use full names instead of "Tier 1/2/3"
|
|
12
|
+
|
|
13
|
+
- Reachability analysis types are referred to by their full names instead of the
|
|
14
|
+
"Tier 1/2/3" numbering: **Full application reachability** (formerly Tier 1),
|
|
15
|
+
**Precomputed reachability** (formerly Tier 2), and **Dependency reachability**
|
|
16
|
+
(formerly Tier 3). This updates `--help` text, command output, log messages, and docs
|
|
17
|
+
only — wire-format values such as the `socket_tier1` scan type are unchanged for
|
|
18
|
+
backward compatibility. See the reachability section in `docs/cli-reference.md` for the
|
|
19
|
+
old→new name mapping.
|
|
20
|
+
- Bumped the pinned `@coana-tech/cli` version to `15.5.7`.
|
|
21
|
+
|
|
3
22
|
## 2.4.12
|
|
4
23
|
|
|
5
24
|
### Changed: consolidated coana launcher env vars into `SOCKET_CLI_COANA_LAUNCHER`
|
|
@@ -240,8 +240,8 @@ If you don't want to provide the Socket API Token every time then you can use th
|
|
|
240
240
|
#### Reachability Analysis
|
|
241
241
|
| Parameter | Required | Default | Description |
|
|
242
242
|
|:---------------------------------|:---------|:--------|:---------------------------------------------------------------------------------------------------------------------------|
|
|
243
|
-
| `--reach` | False | False | Enable reachability analysis to identify which vulnerable functions are actually called by your code. Creates a
|
|
244
|
-
| `--reach-version` | False | 15.5.
|
|
243
|
+
| `--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`). |
|
|
244
|
+
| `--reach-version` | False | 15.5.9 | Version of @coana-tech/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. |
|
|
245
245
|
| `--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` |
|
|
246
246
|
| `--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` |
|
|
247
247
|
| `--reach-concurrency` | False | 1 | Control parallel analysis execution (must be >= 1). Omitted by default, so coana applies its own default. |
|
|
@@ -271,6 +271,14 @@ The Python CLI verifies the following **up front** (before invoking the analysis
|
|
|
271
271
|
|
|
272
272
|
Separately, the analysis engine (coana) needs the **per-ecosystem build toolchain** for whatever languages your project uses — e.g. a compatible Python interpreter (3.11+, or PyPy) for Python, a JDK for Java/Kotlin/Scala, .NET 6+ for C#, the matching Go toolchain for Go, etc. These are validated by the engine **at analysis time** (the CLI does not pre-check them) and that validation can be skipped with `--reach-disable-external-tool-checks`.
|
|
273
273
|
|
|
274
|
+
**Reachability analysis types:**
|
|
275
|
+
|
|
276
|
+
Socket's reachability analysis comes in three forms, referred to by their full names rather than the older "Tier" numbering:
|
|
277
|
+
|
|
278
|
+
- **Full application reachability** (formerly *Tier 1*) — the full-application analysis enabled by `--reach`.
|
|
279
|
+
- **Precomputed reachability** (formerly *Tier 2*).
|
|
280
|
+
- **Dependency reachability** (formerly *Tier 3*).
|
|
281
|
+
|
|
274
282
|
## Config file support
|
|
275
283
|
|
|
276
284
|
Use `--config <path>` to load defaults from a `.toml` or `.json` file.
|
|
@@ -22,7 +22,7 @@ Common reasons:
|
|
|
22
22
|
- Policy vs dataset:
|
|
23
23
|
- `--strict-blocking` only affects diff-scope behavior and does not make diff output equivalent to full dashboard data.
|
|
24
24
|
- Reachability data availability:
|
|
25
|
-
- If reachability analysis partially fails and falls back to precomputed
|
|
25
|
+
- If reachability analysis partially fails and falls back to precomputed reachability, counts can shift.
|
|
26
26
|
|
|
27
27
|
Recommended comparison path:
|
|
28
28
|
|
|
@@ -58,7 +58,7 @@ _HUMANIZE_BOUNDARY = re.compile(r"(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z]
|
|
|
58
58
|
# whose basename is exactly ``.socket.facts.json.br`` and stores it as plain
|
|
59
59
|
# ``.socket.facts.json``. Compressing the facts file on upload keeps it well under the
|
|
60
60
|
# server's per-file size cap (a ~262 MB facts file compresses to roughly 15-30 MB),
|
|
61
|
-
# which is required for large
|
|
61
|
+
# which is required for large full application reachability scans to succeed.
|
|
62
62
|
#
|
|
63
63
|
# The server matches the *exact* name ``.socket.facts.json.br``, so we only compress
|
|
64
64
|
# files whose basename is exactly ``.socket.facts.json`` (a custom ``--reach-output-file``
|
|
@@ -72,8 +72,8 @@ SOCKET_FACTS_BROTLI_LGWIN = 24
|
|
|
72
72
|
# Stream the facts file in 1 MiB chunks so large files aren't held fully in memory.
|
|
73
73
|
SOCKET_FACTS_BROTLI_CHUNK_SIZE = 1024 * 1024
|
|
74
74
|
|
|
75
|
-
#
|
|
76
|
-
# full scan and can fail transiently (network/API blips); a few backoff retries make it robust.
|
|
75
|
+
# Full application reachability finalize retry policy. The finalize call links the reachability
|
|
76
|
+
# scan to the full scan and can fail transiently (network/API blips); a few backoff retries make it robust.
|
|
77
77
|
TIER1_FINALIZE_MAX_ATTEMPTS = 3
|
|
78
78
|
TIER1_FINALIZE_BACKOFF_SECONDS = 1.0
|
|
79
79
|
|
|
@@ -612,21 +612,21 @@ class Core:
|
|
|
612
612
|
|
|
613
613
|
def finalize_tier1_scan(self, full_scan_id: str, facts_file_path: str) -> bool:
|
|
614
614
|
"""
|
|
615
|
-
Finalize a
|
|
615
|
+
Finalize a full application reachability scan by associating it with a full scan.
|
|
616
616
|
|
|
617
617
|
This function reads the tier1ReachabilityScanId from the facts file and
|
|
618
618
|
calls the SDK to link it with the specified full scan.
|
|
619
619
|
|
|
620
|
-
Linking the
|
|
620
|
+
Linking the reachability scan to the full scan helps the Socket team debug potential issues.
|
|
621
621
|
|
|
622
622
|
Args:
|
|
623
|
-
full_scan_id: The ID of the full scan to associate with the
|
|
623
|
+
full_scan_id: The ID of the full scan to associate with the reachability scan
|
|
624
624
|
facts_file_path: Path to the .socket.facts.json file containing the tier1ReachabilityScanId
|
|
625
625
|
|
|
626
626
|
Returns:
|
|
627
627
|
True if successful, False otherwise
|
|
628
628
|
"""
|
|
629
|
-
log.debug(f"Finalizing
|
|
629
|
+
log.debug(f"Finalizing full application reachability scan for full scan {full_scan_id}")
|
|
630
630
|
|
|
631
631
|
# Read the tier1ReachabilityScanId from the facts file
|
|
632
632
|
try:
|
|
@@ -649,7 +649,7 @@ class Core:
|
|
|
649
649
|
log.debug(f"Failed to read tier1ReachabilityScanId from {facts_file_path}: {e}")
|
|
650
650
|
return False
|
|
651
651
|
|
|
652
|
-
# Call the SDK to finalize the
|
|
652
|
+
# Call the SDK to finalize the full application reachability scan, retrying transient failures with backoff.
|
|
653
653
|
last_error: Optional[Exception] = None
|
|
654
654
|
for attempt in range(1, TIER1_FINALIZE_MAX_ATTEMPTS + 1):
|
|
655
655
|
try:
|
|
@@ -659,7 +659,7 @@ class Core:
|
|
|
659
659
|
)
|
|
660
660
|
|
|
661
661
|
if success:
|
|
662
|
-
log.debug(f"Successfully finalized
|
|
662
|
+
log.debug(f"Successfully finalized full application reachability scan {tier1_scan_id} for full scan {full_scan_id}")
|
|
663
663
|
return True
|
|
664
664
|
|
|
665
665
|
log.debug(
|
|
@@ -669,7 +669,7 @@ class Core:
|
|
|
669
669
|
except Exception as e:
|
|
670
670
|
last_error = e
|
|
671
671
|
log.debug(
|
|
672
|
-
f"Unable to finalize
|
|
672
|
+
f"Unable to finalize full application reachability scan (attempt {attempt}/{TIER1_FINALIZE_MAX_ATTEMPTS}): {e}"
|
|
673
673
|
)
|
|
674
674
|
|
|
675
675
|
if attempt < TIER1_FINALIZE_MAX_ATTEMPTS:
|
|
@@ -677,12 +677,12 @@ class Core:
|
|
|
677
677
|
|
|
678
678
|
if last_error is not None:
|
|
679
679
|
log.debug(
|
|
680
|
-
f"Giving up finalizing
|
|
680
|
+
f"Giving up finalizing full application reachability scan {tier1_scan_id} after "
|
|
681
681
|
f"{TIER1_FINALIZE_MAX_ATTEMPTS} attempts: {last_error}"
|
|
682
682
|
)
|
|
683
683
|
else:
|
|
684
684
|
log.debug(
|
|
685
|
-
f"Giving up finalizing
|
|
685
|
+
f"Giving up finalizing full application reachability scan {tier1_scan_id} after "
|
|
686
686
|
f"{TIER1_FINALIZE_MAX_ATTEMPTS} attempts"
|
|
687
687
|
)
|
|
688
688
|
return False
|
|
@@ -846,21 +846,21 @@ class Core:
|
|
|
846
846
|
total_time = create_full_end - create_full_start
|
|
847
847
|
log.debug(f"New Full Scan created in {total_time:.2f} seconds")
|
|
848
848
|
|
|
849
|
-
# Finalize
|
|
849
|
+
# Finalize full application reachability scan if reachability analysis was enabled
|
|
850
850
|
if self.cli_config and self.cli_config.reach:
|
|
851
851
|
facts_file_path = os.path.join(
|
|
852
|
-
self.cli_config.target_path or ".",
|
|
852
|
+
self.cli_config.target_path or ".",
|
|
853
853
|
self.cli_config.reach_output_file
|
|
854
854
|
)
|
|
855
|
-
log.debug(f"Reachability analysis enabled, finalizing
|
|
855
|
+
log.debug(f"Reachability analysis enabled, finalizing full application reachability scan for full scan {full_scan.id}")
|
|
856
856
|
try:
|
|
857
857
|
success = self.finalize_tier1_scan(full_scan.id, facts_file_path)
|
|
858
858
|
if success:
|
|
859
|
-
log.debug(f"Successfully finalized
|
|
859
|
+
log.debug(f"Successfully finalized full application reachability scan for full scan {full_scan.id}")
|
|
860
860
|
else:
|
|
861
|
-
log.debug(f"Failed to finalize
|
|
861
|
+
log.debug(f"Failed to finalize full application reachability scan for full scan {full_scan.id}")
|
|
862
862
|
except Exception as e:
|
|
863
|
-
log.warning(f"Error finalizing
|
|
863
|
+
log.warning(f"Error finalizing full application reachability scan for full scan {full_scan.id}: {e}")
|
|
864
864
|
|
|
865
865
|
return full_scan
|
|
866
866
|
|
|
@@ -18,7 +18,7 @@ log = logging.getLogger(__name__)
|
|
|
18
18
|
# Pinned @coana-tech/cli version. Bumped deliberately per Python CLI release so the
|
|
19
19
|
# reachability engine version only changes through a standard pip upgrade (advance notice).
|
|
20
20
|
# Pass --reach-version latest to opt into the newest published version instead.
|
|
21
|
-
DEFAULT_COANA_CLI_VERSION: Final = "15.5.
|
|
21
|
+
DEFAULT_COANA_CLI_VERSION: Final = "15.5.9"
|
|
22
22
|
|
|
23
23
|
# Resolved @coana-tech/cli script paths from the npm-install fallback, keyed by version.
|
|
24
24
|
# Lives for the process lifetime so repeated fallback invocations install only once
|
|
@@ -55,7 +55,7 @@ class ReachabilityAnalyzer:
|
|
|
55
55
|
|
|
56
56
|
def _resolve_coana_package_spec(self, version: Optional[str] = None) -> str:
|
|
57
57
|
"""
|
|
58
|
-
Resolve the @coana-tech/cli package spec to run (e.g. '@coana-tech/cli@15.5.
|
|
58
|
+
Resolve the @coana-tech/cli package spec to run (e.g. '@coana-tech/cli@15.5.9').
|
|
59
59
|
|
|
60
60
|
Args:
|
|
61
61
|
version: Coana CLI version to use.
|
|
@@ -64,7 +64,7 @@ class ReachabilityAnalyzer:
|
|
|
64
64
|
- '<semver>': that exact version.
|
|
65
65
|
|
|
66
66
|
Returns:
|
|
67
|
-
str: The package specifier to use with npx (e.g. '@coana-tech/cli@15.5.
|
|
67
|
+
str: The package specifier to use with npx (e.g. '@coana-tech/cli@15.5.9').
|
|
68
68
|
"""
|
|
69
69
|
return f"@coana-tech/cli@{self._resolve_coana_version(version)}"
|
|
70
70
|
|
|
@@ -1283,7 +1283,7 @@ wheels = [
|
|
|
1283
1283
|
|
|
1284
1284
|
[[package]]
|
|
1285
1285
|
name = "socketsecurity"
|
|
1286
|
-
version = "2.4.
|
|
1286
|
+
version = "2.4.14"
|
|
1287
1287
|
source = { editable = "." }
|
|
1288
1288
|
dependencies = [
|
|
1289
1289
|
{ name = "brotli", marker = "platform_python_implementation == 'CPython'" },
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/.github/PULL_REQUEST_TEMPLATE/improvement.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/core/helper/socket_facts_loader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/socketsecurity/plugins/formatters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/diff/stream_diff_full.json
RENAMED
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/head_scan/metadata.json
RENAMED
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/head_scan/stream_scan.json
RENAMED
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/head_scan/stream_scan_full.json
RENAMED
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/data/fullscans/new_scan/stream_scan.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/e2e/fixtures/simple-pypi/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-analyze-empty.json
RENAMED
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-analyze-populated.json
RENAMED
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-sbom-empty-deep.json
RENAMED
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/fixtures/fossa/fossa-sbom-populated.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.4.12 → socketsecurity-2.4.14}/tests/unit/test_ignore_telemetry_filtering.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|