socketsecurity 2.9.3__tar.gz → 2.9.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.9.5/.github/workflows/dependency-audit.yml +157 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/python-tests.yml +2 -11
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/version-check.yml +2 -6
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/CHANGELOG.md +24 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/PKG-INFO +2 -2
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/docs/cli-reference.md +1 -1
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/pyproject.toml +2 -2
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/__init__.py +1 -1
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/tools/reachability.py +3 -3
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/uv.lock +8 -8
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/CODEOWNERS +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/PULL_REQUEST_TEMPLATE/bug-fix.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/PULL_REQUEST_TEMPLATE/improvement.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/actions/setup-docker/action.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/actions/setup-hatch/action.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/actions/setup-sfw/action.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/dependabot.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/dependency-review.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/docker-stable.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/e2e-test.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/package-check.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/pr-preview.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/workflows/release.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.github/zizmor.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.gitignore +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.hooks/sync_version.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.pre-commit-config.yaml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/.python-version +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/CONTRIBUTING.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/Dockerfile +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/Dockerfile.preview +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/LICENSE +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/Makefile +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/README.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/benchmarks/manifest_discovery.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/docs/ci-cd.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/docs/development.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/docs/troubleshooting.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/examples/config/sarif-dashboard-parity.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/examples/config/sarif-dashboard-parity.toml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/examples/config/sarif-diff-ci-cd.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/examples/config/sarif-diff-ci-cd.toml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/examples/config/sarif-instance-detail.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/examples/config/sarif-instance-detail.toml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/instructions/gitlab-commit-status/uat.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/pytest.ini +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/scripts/build_container.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/scripts/build_container_flexible.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/scripts/deploy-test-docker.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/scripts/deploy-test-pypi.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/scripts/docker-entrypoint.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/scripts/run.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/session.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socket.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/config.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/__init__.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/alert_selection.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/classes.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/cli_client.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/cli_run.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/exceptions.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/git_interface.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/git_remote.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/helper/__init__.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/helper/socket_facts_loader.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/lazy_file_loader.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/log_uploader.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/logging.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/messages.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/pull_request.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/resource_utils.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/scm/__init__.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/scm/base.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/scm/client.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/scm/github.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/scm/gitlab.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/scm_comments.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/socket_config.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/streaming.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/core/utils.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/fossa_compat.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/output.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/__init__.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/base.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/formatters/__init__.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/formatters/slack.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/jira.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/manager.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/slack.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/teams.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/plugins/webhook.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/socketsecurity/socketcli.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/__init__.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/conftest.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/create_diff_input.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_diff_alerts.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_diff_generation.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_diff_scan_polling.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_facts_compression.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_full_scan_outputs.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_has_manifest_files.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_invalid_facts_marker.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_package_and_alerts.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_sdk_methods.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/core/test_supporting_methods.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/create_response.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/diff/stream_diff.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/diff/stream_diff_full.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/head_scan/metadata.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/head_scan/stream_scan.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/head_scan/stream_scan_full.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/new_scan/metadata.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/new_scan/stream_scan.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/repos/repo_info_error.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/repos/repo_info_no_head.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/repos/repo_info_success.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/settings/security-policy.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/fixtures/simple-npm/index.js +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/fixtures/simple-npm/package.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/fixtures/simple-pypi/requirements.txt +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/reach-facts-probe.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/validate-gitlab.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/validate-json.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/validate-reachability.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/validate-sarif.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/e2e/validate-scan.sh +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/fixtures/fossa/README.md +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/fixtures/fossa/fossa-analyze-empty.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/fixtures/fossa/fossa-analyze-populated.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/fixtures/fossa/fossa-sbom-empty-deep.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/fixtures/fossa/fossa-sbom-populated.json +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/__init__.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_alert_selection.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_cli_config.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_cli_run.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_client.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_config.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_dependency_overview.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_disable_ignore.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_exclude_paths.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_fossa_compat.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_fossa_parity.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_full_scan_retry.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_git_interface.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_git_remote.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_github_buildkite_config.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_gitlab_auth.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_gitlab_auth_fallback.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_gitlab_commit_status.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_gitlab_format.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_ignore_authorization.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_ignore_telemetry_filtering.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_include_dirs.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_log_uploader.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_manifest_discovery.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_messages.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_output.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_pr_comment_rendering.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_pull_request_context.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_reachability.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_scan_scope.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_slack_plugin.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_slack_severity_normalization.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_socketcli.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_streaming.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/unit/test_tier1_finalize.py +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/workflows/bitbucket-pipelines.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/workflows/buildkite.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/workflows/github-actions.yml +0 -0
- {socketsecurity-2.9.3 → socketsecurity-2.9.5}/workflows/gitlab-ci.yml +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
name: Dependency Audit
|
|
2
|
+
|
|
3
|
+
env:
|
|
4
|
+
PYTHON_VERSION: "3.12"
|
|
5
|
+
|
|
6
|
+
# pip-audit compares the lockfile against advisory databases that publish
|
|
7
|
+
# continuously, so the result tracks the clock, not the commit. Hence the cron.
|
|
8
|
+
on:
|
|
9
|
+
schedule:
|
|
10
|
+
- cron: "17 6 * * *"
|
|
11
|
+
# Unfiltered: a required check behind a paths filter never reports on a
|
|
12
|
+
# pull request that misses the filter, which blocks the merge.
|
|
13
|
+
pull_request:
|
|
14
|
+
push:
|
|
15
|
+
branches: [main]
|
|
16
|
+
paths:
|
|
17
|
+
- "pyproject.toml"
|
|
18
|
+
- "uv.lock"
|
|
19
|
+
- ".github/workflows/dependency-audit.yml"
|
|
20
|
+
workflow_dispatch:
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
concurrency:
|
|
26
|
+
group: dependency-audit-${{ github.event.pull_request.number || github.ref }}
|
|
27
|
+
cancel-in-progress: true
|
|
28
|
+
|
|
29
|
+
jobs:
|
|
30
|
+
dependency-audit:
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
timeout-minutes: 10
|
|
33
|
+
permissions:
|
|
34
|
+
contents: read
|
|
35
|
+
issues: write
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
38
|
+
with:
|
|
39
|
+
fetch-depth: 1
|
|
40
|
+
persist-credentials: false
|
|
41
|
+
|
|
42
|
+
- name: 🐍 setup python
|
|
43
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
44
|
+
with:
|
|
45
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
46
|
+
|
|
47
|
+
- name: 🛠️ install uv
|
|
48
|
+
run: |
|
|
49
|
+
python -m pip install --upgrade pip
|
|
50
|
+
pip install uv
|
|
51
|
+
|
|
52
|
+
- name: 🛡️ pip-audit (known CVEs in the locked deps)
|
|
53
|
+
id: audit
|
|
54
|
+
run: |
|
|
55
|
+
uv export --no-hashes --no-emit-project --format requirements-txt > /tmp/req-audit.txt
|
|
56
|
+
|
|
57
|
+
set +e
|
|
58
|
+
uvx pip-audit --strict --progress-spinner off --disable-pip --no-deps \
|
|
59
|
+
-r /tmp/req-audit.txt 2>&1 | tee /tmp/audit.log
|
|
60
|
+
status=${PIPESTATUS[0]}
|
|
61
|
+
set -e
|
|
62
|
+
|
|
63
|
+
# Written before the exit so the next step can quote it.
|
|
64
|
+
{
|
|
65
|
+
echo 'report<<AUDIT_REPORT_EOF'
|
|
66
|
+
cat /tmp/audit.log
|
|
67
|
+
echo 'AUDIT_REPORT_EOF'
|
|
68
|
+
} >> "$GITHUB_OUTPUT"
|
|
69
|
+
|
|
70
|
+
exit "$status"
|
|
71
|
+
|
|
72
|
+
# A scheduled run has no pull request to turn red, so record it instead.
|
|
73
|
+
- name: 📮 open or update the tracking issue
|
|
74
|
+
if: always() && steps.audit.outcome == 'failure' && github.event_name == 'schedule'
|
|
75
|
+
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
76
|
+
env:
|
|
77
|
+
AUDIT_REPORT: ${{ steps.audit.outputs.report }}
|
|
78
|
+
with:
|
|
79
|
+
script: |
|
|
80
|
+
const marker = '<!-- dependency-audit-tracking-issue -->';
|
|
81
|
+
const title = 'Dependency audit: known vulnerabilities in the locked dependencies';
|
|
82
|
+
const runUrl =
|
|
83
|
+
`${context.serverUrl}/${context.repo.owner}/${context.repo.repo}` +
|
|
84
|
+
`/actions/runs/${context.runId}`;
|
|
85
|
+
const body = [
|
|
86
|
+
marker,
|
|
87
|
+
'`pip-audit` found known vulnerabilities in the locked dependency set.',
|
|
88
|
+
'',
|
|
89
|
+
'Bump the affected pins in `pyproject.toml`, run `uv lock`, and open a PR.',
|
|
90
|
+
'',
|
|
91
|
+
'```',
|
|
92
|
+
process.env.AUDIT_REPORT.trim(),
|
|
93
|
+
'```',
|
|
94
|
+
'',
|
|
95
|
+
`Run: ${runUrl}`,
|
|
96
|
+
`Last checked: ${new Date().toISOString()}`,
|
|
97
|
+
].join('\n');
|
|
98
|
+
|
|
99
|
+
const existing = await github.paginate(github.rest.issues.listForRepo, {
|
|
100
|
+
owner: context.repo.owner,
|
|
101
|
+
repo: context.repo.repo,
|
|
102
|
+
state: 'open',
|
|
103
|
+
per_page: 100,
|
|
104
|
+
});
|
|
105
|
+
const tracking = existing.find(
|
|
106
|
+
(issue) => !issue.pull_request && issue.body && issue.body.includes(marker),
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
if (tracking) {
|
|
110
|
+
await github.rest.issues.update({
|
|
111
|
+
owner: context.repo.owner,
|
|
112
|
+
repo: context.repo.repo,
|
|
113
|
+
issue_number: tracking.number,
|
|
114
|
+
body,
|
|
115
|
+
});
|
|
116
|
+
core.notice(`Updated tracking issue #${tracking.number}`);
|
|
117
|
+
} else {
|
|
118
|
+
const created = await github.rest.issues.create({
|
|
119
|
+
owner: context.repo.owner,
|
|
120
|
+
repo: context.repo.repo,
|
|
121
|
+
title,
|
|
122
|
+
body,
|
|
123
|
+
labels: ['dependencies'],
|
|
124
|
+
});
|
|
125
|
+
core.notice(`Opened tracking issue #${created.data.number}`);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
- name: ✅ close the tracking issue once the audit is clean
|
|
129
|
+
if: always() && steps.audit.outcome == 'success' && github.event_name == 'schedule'
|
|
130
|
+
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
131
|
+
with:
|
|
132
|
+
script: |
|
|
133
|
+
const marker = '<!-- dependency-audit-tracking-issue -->';
|
|
134
|
+
const existing = await github.paginate(github.rest.issues.listForRepo, {
|
|
135
|
+
owner: context.repo.owner,
|
|
136
|
+
repo: context.repo.repo,
|
|
137
|
+
state: 'open',
|
|
138
|
+
per_page: 100,
|
|
139
|
+
});
|
|
140
|
+
const tracking = existing.find(
|
|
141
|
+
(issue) => !issue.pull_request && issue.body && issue.body.includes(marker),
|
|
142
|
+
);
|
|
143
|
+
if (!tracking) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
await github.rest.issues.createComment({
|
|
147
|
+
owner: context.repo.owner,
|
|
148
|
+
repo: context.repo.repo,
|
|
149
|
+
issue_number: tracking.number,
|
|
150
|
+
body: 'The scheduled audit is clean again. Closing.',
|
|
151
|
+
});
|
|
152
|
+
await github.rest.issues.update({
|
|
153
|
+
owner: context.repo.owner,
|
|
154
|
+
repo: context.repo.repo,
|
|
155
|
+
issue_number: tracking.number,
|
|
156
|
+
state: 'closed',
|
|
157
|
+
});
|
|
@@ -13,14 +13,9 @@ on:
|
|
|
13
13
|
- "pyproject.toml"
|
|
14
14
|
- "uv.lock"
|
|
15
15
|
- ".github/workflows/python-tests.yml"
|
|
16
|
+
# Unfiltered: a required check behind a paths filter never reports on a
|
|
17
|
+
# pull request that misses the filter, which blocks the merge.
|
|
16
18
|
pull_request:
|
|
17
|
-
paths:
|
|
18
|
-
- "socketsecurity/**/*.py"
|
|
19
|
-
- "tests/unit/**/*.py"
|
|
20
|
-
- "tests/core/**/*.py"
|
|
21
|
-
- "pyproject.toml"
|
|
22
|
-
- "uv.lock"
|
|
23
|
-
- ".github/workflows/python-tests.yml"
|
|
24
19
|
workflow_dispatch:
|
|
25
20
|
|
|
26
21
|
permissions:
|
|
@@ -62,10 +57,6 @@ jobs:
|
|
|
62
57
|
from socketsecurity.config import CliConfig
|
|
63
58
|
print('import smoke OK')
|
|
64
59
|
"
|
|
65
|
-
- name: 🛡️ pip-audit (known CVEs in the locked deps)
|
|
66
|
-
run: |
|
|
67
|
-
uv export --no-hashes --no-emit-project --format requirements-txt > /tmp/req-audit.txt
|
|
68
|
-
uvx pip-audit --strict --progress-spinner off --disable-pip --no-deps -r /tmp/req-audit.txt
|
|
69
60
|
|
|
70
61
|
ruff:
|
|
71
62
|
runs-on: ubuntu-latest
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
name: Version Check
|
|
2
2
|
on:
|
|
3
|
+
# Unfiltered: a required check behind a paths filter never reports on a
|
|
4
|
+
# pull request that misses the filter, which blocks the merge.
|
|
3
5
|
pull_request:
|
|
4
6
|
types: [opened, synchronize, ready_for_review]
|
|
5
|
-
paths:
|
|
6
|
-
- 'socketsecurity/**'
|
|
7
|
-
- 'pyproject.toml'
|
|
8
|
-
- 'uv.lock'
|
|
9
|
-
# Included so a change to the check itself is exercised by its own PR.
|
|
10
|
-
- '.github/workflows/version-check.yml'
|
|
11
7
|
|
|
12
8
|
permissions:
|
|
13
9
|
contents: read
|
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.9.5
|
|
4
|
+
|
|
5
|
+
### Changed: bump pinned gitpython to 3.1.62 and soupsieve to 2.9.2
|
|
6
|
+
|
|
7
|
+
- Bumped `gitpython` from `3.1.59` to `3.1.62` (CVE-2026-87817, CVE-2026-87818,
|
|
8
|
+
CVE-2026-87819) and the transitive `soupsieve` pin from `2.8.4` to `2.9.2`
|
|
9
|
+
(GHSA-gjv8-xp57-g29c, GHSA-j934-xhv5-fg8f).
|
|
10
|
+
- Normalized the `gitpython` requirement to its lowercase PEP 503 name.
|
|
11
|
+
|
|
12
|
+
### Changed: audit the locked dependencies on a schedule
|
|
13
|
+
|
|
14
|
+
- `pip-audit` moved out of the Unit Tests workflow into a new Dependency Audit
|
|
15
|
+
workflow that also runs daily, so advisories published against unchanged pins
|
|
16
|
+
are reported on their own schedule rather than on the next push.
|
|
17
|
+
|
|
18
|
+
## 2.9.4
|
|
19
|
+
|
|
20
|
+
### Changed: bump pinned @coana-tech/cli to 15.10.46
|
|
21
|
+
|
|
22
|
+
- Bumped the pinned reachability engine (`@coana-tech/cli`) from `15.10.45` to
|
|
23
|
+
`15.10.46`. See the
|
|
24
|
+
[reachability analysis changelog](https://docs.socket.dev/docs/reachability-analysis-changelog)
|
|
25
|
+
for engine changes.
|
|
26
|
+
|
|
3
27
|
## 2.9.3
|
|
4
28
|
|
|
5
29
|
### Changed: bump pinned @coana-tech/cli to 15.10.45
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: socketsecurity
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.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>
|
|
@@ -36,7 +36,7 @@ Requires-Python: >=3.11
|
|
|
36
36
|
Requires-Dist: beautifulsoup4==4.15.0
|
|
37
37
|
Requires-Dist: brotli==1.2.0; platform_python_implementation == 'CPython'
|
|
38
38
|
Requires-Dist: brotlicffi==1.2.0.2; platform_python_implementation != 'CPython'
|
|
39
|
-
Requires-Dist: gitpython==3.1.
|
|
39
|
+
Requires-Dist: gitpython==3.1.62
|
|
40
40
|
Requires-Dist: markdown==3.10.3
|
|
41
41
|
Requires-Dist: mdutils==1.8.1
|
|
42
42
|
Requires-Dist: packaging==26.3
|
|
@@ -336,7 +336,7 @@ If you don't want to provide the Socket API Token every time then you can use th
|
|
|
336
336
|
| Parameter | Required | Default | Description |
|
|
337
337
|
|:---------------------------------|:---------|:--------|:---------------------------------------------------------------------------------------------------------------------------|
|
|
338
338
|
| `--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`). |
|
|
339
|
-
| `--reach-version` | False | 15.10.
|
|
339
|
+
| `--reach-version` | False | 15.10.46 | 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. |
|
|
340
340
|
| `--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` |
|
|
341
341
|
| `--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` |
|
|
342
342
|
| `--reach-concurrency` | False | 1 | Control parallel analysis execution (must be >= 1). Omitted by default, so coana applies its own default. |
|
|
@@ -6,14 +6,14 @@ build-backend = "hatchling.build"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "socketsecurity"
|
|
9
|
-
version = "2.9.
|
|
9
|
+
version = "2.9.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
|
-
"
|
|
16
|
+
"gitpython==3.1.62",
|
|
17
17
|
"packaging==26.3",
|
|
18
18
|
"python-dotenv==1.2.3",
|
|
19
19
|
"socketdev==3.6.0",
|
|
@@ -19,7 +19,7 @@ log = logging.getLogger(__name__)
|
|
|
19
19
|
# Pinned @coana-tech/cli version. Bumped deliberately per Python CLI release so the
|
|
20
20
|
# reachability engine version only changes through a standard pip upgrade (advance notice).
|
|
21
21
|
# Pass --reach-version latest to opt into the newest published version instead.
|
|
22
|
-
DEFAULT_COANA_CLI_VERSION: Final = "15.10.
|
|
22
|
+
DEFAULT_COANA_CLI_VERSION: Final = "15.10.46"
|
|
23
23
|
|
|
24
24
|
# Resolved @coana-tech/cli script paths from the npm-install fallback, keyed by version.
|
|
25
25
|
# Lives for the process lifetime so repeated fallback invocations install only once
|
|
@@ -56,7 +56,7 @@ class ReachabilityAnalyzer:
|
|
|
56
56
|
|
|
57
57
|
def _resolve_coana_package_spec(self, version: Optional[str] = None) -> str:
|
|
58
58
|
"""
|
|
59
|
-
Resolve the @coana-tech/cli package spec to run (e.g. '@coana-tech/cli@15.10.
|
|
59
|
+
Resolve the @coana-tech/cli package spec to run (e.g. '@coana-tech/cli@15.10.46').
|
|
60
60
|
|
|
61
61
|
Args:
|
|
62
62
|
version: Coana CLI version to use.
|
|
@@ -65,7 +65,7 @@ class ReachabilityAnalyzer:
|
|
|
65
65
|
- '<semver>': that exact version.
|
|
66
66
|
|
|
67
67
|
Returns:
|
|
68
|
-
str: The package specifier to use with npx (e.g. '@coana-tech/cli@15.10.
|
|
68
|
+
str: The package specifier to use with npx (e.g. '@coana-tech/cli@15.10.46').
|
|
69
69
|
"""
|
|
70
70
|
return f"@coana-tech/cli@{self._resolve_coana_version(version)}"
|
|
71
71
|
|
|
@@ -575,14 +575,14 @@ wheels = [
|
|
|
575
575
|
|
|
576
576
|
[[package]]
|
|
577
577
|
name = "gitpython"
|
|
578
|
-
version = "3.1.
|
|
578
|
+
version = "3.1.62"
|
|
579
579
|
source = { registry = "https://pypi.org/simple" }
|
|
580
580
|
dependencies = [
|
|
581
581
|
{ name = "gitdb" },
|
|
582
582
|
]
|
|
583
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
583
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/db/3ca813cbacb23ab6fe46ff38a9b5ef8e73e970c8051f2ce903aacafe0446/gitpython-3.1.62.tar.gz", hash = "sha256:1791de66309bc0c7cfca40bf8d2e3de7ca091cbf94e6051be1ad0722c61062af", size = 231728, upload-time = "2026-09-07T02:57:21.155Z" }
|
|
584
584
|
wheels = [
|
|
585
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
585
|
+
{ url = "https://files.pythonhosted.org/packages/d6/0b/29d7965215f8ef830a7ca1f42997fe13e5693d85e9edb18f938d063ef5f2/gitpython-3.1.62-py3-none-any.whl", hash = "sha256:7002251225e10e29d2e1f49e6532613fe5d5d9f0b6f1f02997a52b38fe56899e", size = 222753, upload-time = "2026-09-07T02:57:19.762Z" },
|
|
586
586
|
]
|
|
587
587
|
|
|
588
588
|
[[package]]
|
|
@@ -1293,7 +1293,7 @@ wheels = [
|
|
|
1293
1293
|
|
|
1294
1294
|
[[package]]
|
|
1295
1295
|
name = "socketsecurity"
|
|
1296
|
-
version = "2.9.
|
|
1296
|
+
version = "2.9.5"
|
|
1297
1297
|
source = { editable = "." }
|
|
1298
1298
|
dependencies = [
|
|
1299
1299
|
{ name = "beautifulsoup4" },
|
|
@@ -1335,7 +1335,7 @@ requires-dist = [
|
|
|
1335
1335
|
{ name = "beautifulsoup4", specifier = "==4.15.0" },
|
|
1336
1336
|
{ name = "brotli", marker = "platform_python_implementation == 'CPython'", specifier = "==1.2.0" },
|
|
1337
1337
|
{ name = "brotlicffi", marker = "platform_python_implementation != 'CPython'", specifier = "==1.2.0.2" },
|
|
1338
|
-
{ name = "gitpython", specifier = "==3.1.
|
|
1338
|
+
{ name = "gitpython", specifier = "==3.1.62" },
|
|
1339
1339
|
{ name = "hatch", marker = "extra == 'dev'", specifier = "==1.18.0" },
|
|
1340
1340
|
{ name = "markdown", specifier = "==3.10.3" },
|
|
1341
1341
|
{ name = "mdutils", specifier = "==1.8.1" },
|
|
@@ -1361,11 +1361,11 @@ dev = [{ name = "pre-commit", specifier = ">=4.3.0" }]
|
|
|
1361
1361
|
|
|
1362
1362
|
[[package]]
|
|
1363
1363
|
name = "soupsieve"
|
|
1364
|
-
version = "2.
|
|
1364
|
+
version = "2.9.2"
|
|
1365
1365
|
source = { registry = "https://pypi.org/simple" }
|
|
1366
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1366
|
+
sdist = { url = "https://files.pythonhosted.org/packages/69/99/a6ca3beb3ccacb41fb3321d8a60e5566f9e6467601ef8eba6a17e1b89778/soupsieve-2.9.2.tar.gz", hash = "sha256:4a55d8cf158a9c2e587fa4922f1bbb91d68ac829e2d6f25403a85747c71daf74", size = 122445, upload-time = "2026-08-07T00:57:24.801Z" }
|
|
1367
1367
|
wheels = [
|
|
1368
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1368
|
+
{ url = "https://files.pythonhosted.org/packages/eb/dc/ad025c1ee131eba60c69f4dd5779b18fcf1e6b21a343e2162a84d5d133c7/soupsieve-2.9.2-py3-none-any.whl", hash = "sha256:8089a26fd974ca7a1f30276d3d8492ab266ab15af581642dfe8aa162e0c1c823", size = 37370, upload-time = "2026-08-07T00:57:23.524Z" },
|
|
1369
1369
|
]
|
|
1370
1370
|
|
|
1371
1371
|
[[package]]
|
|
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
|
|
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.9.3 → socketsecurity-2.9.5}/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
|
|
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.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/diff/stream_diff_full.json
RENAMED
|
File without changes
|
|
File without changes
|
{socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/head_scan/stream_scan.json
RENAMED
|
File without changes
|
{socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/data/fullscans/head_scan/stream_scan_full.json
RENAMED
|
File without changes
|
|
File without changes
|
{socketsecurity-2.9.3 → socketsecurity-2.9.5}/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.9.3 → socketsecurity-2.9.5}/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
|
|
File without changes
|
|
File without changes
|
{socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/fixtures/fossa/fossa-analyze-populated.json
RENAMED
|
File without changes
|
{socketsecurity-2.9.3 → socketsecurity-2.9.5}/tests/fixtures/fossa/fossa-sbom-empty-deep.json
RENAMED
|
File without changes
|
{socketsecurity-2.9.3 → socketsecurity-2.9.5}/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
|
|
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.9.3 → socketsecurity-2.9.5}/tests/unit/test_slack_severity_normalization.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
|