ebddc5e376
The auto-injected GITHUB_TOKEN defaulted to write-all in ci.yml, bench.yml and release.yml (no top-level permissions block), and codeql.yml declared its scopes only at job level. Add a top-level `permissions: contents: read` to all four so the token starts read-only and only the jobs that genuinely write through it raise the scope: - release.yml: github-release keeps contents: write; node-/wasm-publish and attestations keep their id-token / attestations: write blocks. The cargo/python/node publish jobs push to crates.io/PyPI/npm via their own registry secrets, not the GITHUB_TOKEN, so read-only is correct for them. - codeql.yml: analyze keeps security-events: write (job level). - ci.yml / bench.yml: no job writes back to the repo (coverage uploads via CODECOV_TOKEN; bench only uploads an artifact), so no job override is needed. sync-about.yml already had a top-level block but at contents: write; demote the top level to read and move contents: write down to the single `sync` job (the PR-head counter push is the only GITHUB_TOKEN write). The cross-repo About/docs/webpage/org writes are unaffected — they run through the fine-grained ABOUT_SYNC_TOKEN, which the permissions key does not govern. Raises OpenSSF Scorecard Token-Permissions from 0 toward 10.
55 lines
1.8 KiB
YAML
55 lines
1.8 KiB
YAML
name: CodeQL
|
|
|
|
# Static analysis security testing (findings P13.x). Analyses the Rust core and
|
|
# the Python / JavaScript binding surfaces with GitHub's CodeQL engine. Results
|
|
# appear under Security → Code scanning. `build-mode: none` analyses source
|
|
# directly — no compilation step — for every language here.
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
schedule:
|
|
- cron: '31 3 * * 0' # Sundays 03:31 UTC
|
|
|
|
# Least-privilege default for the auto-injected GITHUB_TOKEN. The analyze job
|
|
# raises exactly the scopes CodeQL needs (security-events: write to upload
|
|
# results) in its own job-level block below; this top-level read-only default
|
|
# covers any future job (OpenSSF Scorecard: Token-Permissions).
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
analyze:
|
|
name: Analyze (${{ matrix.language }})
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
security-events: write # upload CodeQL results to code-scanning
|
|
packages: read
|
|
actions: read
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- language: rust
|
|
build-mode: none
|
|
- language: python
|
|
build-mode: none
|
|
- language: javascript-typescript
|
|
build-mode: none
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
|
|
|
- name: Initialize CodeQL
|
|
uses: github/codeql-action/init@03e4368ac7daa2bd82b3e85262f3bf87ee112f57 # v3.36.0
|
|
with:
|
|
languages: ${{ matrix.language }}
|
|
build-mode: ${{ matrix.build-mode }}
|
|
|
|
- name: Perform CodeQL analysis
|
|
uses: github/codeql-action/analyze@03e4368ac7daa2bd82b3e85262f3bf87ee112f57 # v3.36.0
|
|
with:
|
|
category: "/language:${{ matrix.language }}"
|