-
Notifications
You must be signed in to change notification settings - Fork 144
add socket tier 1 reachability analysis #976
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,79 @@ | ||
| # Socket reachability scan for js-stellar-base. | ||
| # For general Socket reachability documentation, see https://docs.socket.dev/docs/full-application-reachability | ||
| # Node-only project (npm). | ||
| # | ||
| # Schedule: Sat 13:12 UTC weekly. Use workflow_dispatch to run on demand. | ||
| # | ||
| # ============================================================================ | ||
| # Socket scan — reading the job status. (The scan step below produces this: an | ||
| # exit code + an optional ::warning:: annotation, which GitHub Actions renders | ||
| # as the job's state.) | ||
| # ============================================================================ | ||
| # GREEN (exit 0, no warning): scan completed and every analyzed vulnerability | ||
| # got full Tier 1 reachability (precise, your-code-aware). Nothing to do. | ||
| # YELLOW (exit 0 + "::warning:: Socket scan completed with Tier 2 fallbacks"): | ||
| # scan completed, but Tier 1 could NOT be computed for some/all | ||
| # vulnerabilities, which fell back to Tier 2 (precomputed) reachability. | ||
| # You still get CVE detection + Tier 2 results, just reduced precision | ||
| # for the affected CVEs. The job is NOT failing. | ||
| # RED (non-zero exit): scan did not complete. Do not assume any part | ||
| # succeeded — could be reachability hard-failing, a missing language | ||
| # toolchain, the runner out of memory, a network/API error, or even the | ||
| # underlying CVE/SBOM detection failing. Check the logs and fix before | ||
| # relying on results. | ||
| # ============================================================================ | ||
|
|
||
| name: Socket reachability scan | ||
|
|
||
| on: | ||
| schedule: | ||
| - cron: '12 13 * * 6' | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| env: | ||
| # Force JS-based GitHub actions (actions/checkout, actions/setup-*, etc.) to | ||
| # use Node 24 instead of the soon-to-be-deprecated Node 20. Safe to remove | ||
| # after 2026-06-16 (when Node 24 becomes the default and this becomes a no-op). | ||
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | ||
|
|
||
| jobs: | ||
| socket-scan: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | ||
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: "24.18.0" | ||
| - name: Enable Corepack (yarn/pnpm per repo packageManager) | ||
| run: corepack enable | ||
|
|
||
| - name: Install Socket CLI | ||
| run: npm install -g socket | ||
|
|
||
|
Comment on lines
+53
to
+55
|
||
| - name: Run Socket reachability scan | ||
| env: | ||
| SOCKET_SECURITY_API_TOKEN: ${{ secrets.SOCKET_SECURITY_API_TOKEN }} | ||
| run: | | ||
| # Stream the scan output through tee so the run log captures it AND | ||
| # we can grep it for Tier-2-fallback markers; capture the scan's | ||
| # exit code via ${PIPESTATUS[0]} (tee always exits 0). If the scan | ||
| # succeeded but logged a Tier 2 fallback, emit a ::warning:: | ||
| # annotation that GitHub Actions renders as a yellow run-level | ||
| # warning without failing the job. | ||
| set +e | ||
| socket scan create --reach \ | ||
| --org=stellar \ | ||
|
Comment on lines
+67
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
In this workflow context there is no checked-in Socket config, and Socket's Useful? React with 👍 / 👎. |
||
| --no-interactive \ | ||
| --reach-continue-on-no-source-files \ | ||
| --reach-continue-on-analysis-errors \ | ||
| --reach-continue-on-install-errors \ | ||
| --reach-continue-on-missing-lock-files \ | ||
| . 2>&1 | tee /tmp/scan.log | ||
| rc=${PIPESTATUS[0]} | ||
| if [ $rc -eq 0 ] && grep -qE "Reachability falls back to Tier 2|fallback to the results from the pre-computed|Reachability falls back to precomputed" /tmp/scan.log; then | ||
| echo "::warning::Socket scan completed with Tier 2 fallbacks - some vulnerabilities used precomputed reachability instead of full Tier 1" | ||
| fi | ||
| exit $rc | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When this workflow runs for this repo,
package.jsonhas nopackageManagerfield and the checked-in lockfile is Yarn v1, socorepack enablemakes lateryarninvocations use Corepack’s default Yarn rather than the project’s Yarn Classic version (Node/Corepack docs say it selects the package manager version frompackageManager, otherwise uses its defaults). Socket reachability pre-installs dependencies and its--reach-continue-on-install-errorsoption falls back to precomputed Tier 2 results on install failures (seesocket scan create --help/https://docs.socket.dev/docs/socket-scan), so the scheduled scan can succeed without doing the intended Tier 1 analysis. Pin Yarn 1 here (or add apackageManagerbefore enabling Corepack) so Socket installs with the same package manager that producedyarn.lock.Useful? React with 👍 / 👎.