Skip to content
sscsb

p4gs/sscs-bootstrapper

https://github.com/p4gs/sscs-bootstrapper · scanned 2026-09-03 at c8a23493ec0c on main · sscsb 0.3.1 · methodology v1 · scan run · signed CI+ local 8

A+
Of the answered checks 100% passed
Answered at all 90.9% of the checks in scope
Every verdict 30003 unanswered checks are never counted
passed there, not working looked for, not found nobody could answer — never counted informational — never scored

evidence source — who ran the scan, and therefore how much of the project they could seehow that is checked.

Defences found, by attack group

This lists defences the scan found, not weaknesses it found. A missing defence is not a break-in, and a full set of checks is not safety: nine groups and 54 checks do not cover everything. What the nine groups are →

Where a group reads All passed: every sscsb check there that produced an answer passed. That is not the same as being safe from this group.

These checks do not stop an attack. They let an outsider tell what a project already does, and where to report a problem. They are not in the list above: best-practices-badgecompliance-maposps-baselinepublish-targetssecure-reposecurity-insights.

Every check, with its raw verdict

Raw sscsb verdicts and every reclassification are shown. Transparency about what was and wasn't verifiable is the product.

5 controls below runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist

8 controls below resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it

Commit integrity

8/8 passed1 unanswered

8 pass · 0 fail · 0 gap · 1 unanswered

  • secretsraw: degradedPASS

    runner-tool availability is the…

    evidence · 3
    • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
    • trufflehog not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 3.95.9. Install: brew install trufflehog (Linuxbrew) or see Release binaries: https://github.com/trufflesecurity/trufflehog/releases (https://github.com/trufflesecurity/trufflehog)
    • gitleaks not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 8.30.1. Install: brew install gitleaks (Linuxbrew) or see Release binaries: https://github.com/gitleaks/gitleaks/releases (https://github.com/gitleaks/gitleaks)
  • commit-signingraw: passPASS

    resolved by a signed local scan

    evidence · 6
    • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
    • 1 approved signer(s), 1 human
    • git config gpg.format = ssh
    • git config user.signingkey = /Users/p4gs/.ssh/github_signing_key.pub
    • signing key does not look hardware-backed (no `-sk`) — spec recommends YubiKey ed25519-sk; software keys weaken the human-accountability model
    • git config commit.gpgSign = true
  • agent-signingout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml
  • signing-modelraw: degradedUNVERIFIED

    requires the local development environment; not observable in a repository scanhow to answer this →

    evidence · 7
    • human-local: incomplete — run `sscsb signing setup human-local`
    • agent-claude-code: incomplete — run `sscsb signing setup agent-claude-code`
    • cloud-claude: repo-side attribution is probeable and is not in place — an attestation cannot stand in for it
    • cloud-claude: github_app_installed: not attested — `sscsb signing setup cloud-claude --confirm`
    • github-web: vigilant_mode: not attested — `sscsb signing setup github-web --confirm`
    • github-web: phishing_resistant_mfa: not attested — `sscsb signing setup github-web --confirm`
    • codespaces: gpg_verification: not attested — `sscsb signing setup codespaces --confirm`
  • branch-protectionPASS
    evidence · 8
    • main: required pull requests ✓
    • main: force-push blocking ✓
    • main: required signed commits ✓
    • main: required status checks ✓
    • main: deletion protection ✓
    • main: Scorecard — stale-review dismissal ✓
    • main: Scorecard gap — ≥1 required approving review off (needs a 2nd reviewer; a solo maintainer cannot self-approve — opt in with `sscsb harden branch-protection --require-reviews` once you have one)
    • main: Scorecard gap — code-owner review off (needs a 2nd reviewer; a solo maintainer cannot self-approve — opt in with `sscsb harden branch-protection --require-reviews` once you have one)
  • actions-auditPASS
    evidence · 1
    • [info] .github/workflows/release.yml: `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` is tag-pinned by design: slsa-github-generator must be referenced by @vX.Y.Z for slsa-verifier to verify the trusted builder
  • gittufout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml
  • ai-trailersraw: passPASS

    resolved by a signed local scan

    evidence · 2
    • enforced by the commit-msg hook
    • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • ai-dep-gateraw: passPASS

    resolved by a signed local scan

    evidence · 2
    • enforced by the commit-msg hook
    • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • pr-templatePASS
    evidence · 1
    • AI-provenance PR template installed (code/tests/deps/docs questions)
  • ai-receiptsraw: passPASS

    resolved by a signed local scan

    evidence · 2
    • receipts: `sscsb receipt create [commit]` → .sscsb/out/receipts/, `sscsb receipt verify <file>` recomputes the patch digest, re-reads the commit's AI trailers, and verifies any cosign bundle beside the receipt
    • cosign signing of receipts: enabled and cosign available

Dependencies

7/7 passed1 unanswered

7 pass · 0 fail · 0 gap · 1 unanswered

  • sbomraw: degradedPASS

    runner-tool availability is the…

    evidence · 1
    • syft not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 1.46.0. Install: brew install syft (Linuxbrew) or see Release binaries: https://github.com/anchore/syft/releases (https://github.com/anchore/syft)
  • vuln-scanraw: degradedPASS

    runner-tool availability is the…

    evidence · 3
    • trivy not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 0.72.0. Install: brew install trivy (Linuxbrew) or see Release binaries: https://github.com/aquasecurity/trivy/releases (https://github.com/aquasecurity/trivy)
    • osv-scanner not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 2.4.0. Install: brew install osv-scanner (Linuxbrew) or see Release binaries: https://github.com/google/osv-scanner/releases (https://github.com/google/osv-scanner)
    • scanner config: .trivyignore is present with 2 entr(ies): DS-0002, DS-0026 — suppressions it causes are listed individually as `suppressed:` rows
  • scorecardraw: degradedUNVERIFIED

    no lane produced a verdict for this control — an unperformed check is never a verdicthow to answer this →

    evidence · 2
    • .github/workflows/scorecard.yml installed
    • live Scorecard results could not be read (none published yet — the workflow runs on push to the default branch — or the code-scanning API refused) — posture unverified
  • renovatePASS
    evidence · 1
    • renovate.json5 installed (7 key(s))
  • package-trustraw: passPASS

    resolved by a signed local scan

    evidence · 5
    • new-package approval gate enforced in commit-msg hook
    • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
    • approved baseline present (18 package(s))
    • registry existence validation ON for `sscsb deps check` and approvals (anti-slopsquat)
    • typosquat proximity heuristic ON for `sscsb deps check`, approvals, and the commit gate
  • bumblebeeraw: passPASS

    resolved by a signed local scan

    evidence · 3
    • bumblebee 0.1.2: 17048 artifact(s) inventoried, no known-compromised packages found (profile baseline, catalog /opt/homebrew/opt/bumblebee/share/bumblebee/threat_intel)
    • endpoint classes covered: MCP server configs, editor extensions, browser extensions, agent skills
    • note: 4 informational diagnostic(s) from the scan
  • gryperaw: passPASS

    resolved by a signed local scan

    evidence · 1
    • grype 0.118.0 available — `sscsb scan --grype` runs SBOM-first scanning
  • socket-firewallraw: passPASS

    resolved by a signed local scan

    evidence · 2
    • Socket Firewall CLI (sfw) found at /Users/p4gs/.npm-global/bin/sfw
    • socket-firewall blocks known-malicious packages at install time (optional layer)

Build receipts

8/8 passed

8 pass · 0 fail · 0 gap · 0 unanswered

  • sigstore-signingPASS
    evidence · 2
    • .github/workflows/release-sign.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
    • .github/workflows/release.yml job `release`: keyless-signs with `cosign sign-blob --bundle` via `sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6` under `id-token: write`; fires on `push` (tags filter not evaluated)
  • slsa-provenancePASS
    evidence · 2
    • .github/workflows/release-slsa.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
    • .github/workflows/release.yml job `provenance`: generates SLSA L3 provenance via `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` under `actions: read` + `id-token: write` + `contents: write`; fires on `push` (tags filter not evaluated)
  • github-attestationsPASS
    evidence · 2
    • .github/workflows/release-attest.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
    • .github/workflows/release.yml job `release`: attests build provenance to GitHub's attestation store with `actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373` under `attestations: write` + `id-token: write`; fires on `push` (tags filter not evaluated)
  • sbom-attestationPASS
    evidence · 2
    • .github/workflows/release-attest-sbom.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
    • .github/workflows/release.yml job `release`: attests the SBOM (`sbom-path`) to the artifact digest with `actions/attest@a1948c3f048ba23858d222213b7c278aabede763` under `attestations: write` + `id-token: write`; fires on `push` (tags filter not evaluated)
  • model-signingout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml
  • provenance-verifyraw: degradedPASS

    runner-tool availability is the…

    evidence · 5
    • slsa-verifier not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 2.7.1. Install: brew install slsa-verifier (Linuxbrew) or see Release binaries: https://github.com/slsa-framework/slsa-verifier/releases (https://github.com/slsa-framework/slsa-verifier)
    • cosign: 3.0.6
    • gate: `sscsb provenance verify --artifact <f> --provenance <f>.intoto.jsonl --source-uri github.com/<owner>/<repo> --builder-id <trusted builder> [--source-tag vX.Y.Z]`
    • trusted builder pinned in config: https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v2.1.0
    • deploy-gate workflow present (verification before publish)
  • release-immutabilityPASS
    evidence · 1
    • .github/workflows/release.yml installed (5 job(s))
  • octo-stsPASS
    evidence · 2
    • .github/workflows/octo-sts-example.yml installed (1 job(s))
    • .github/chainguard/sscsb-automation.sts.yaml installed (3 key(s))
  • harden-runnerPASS
    evidence · 8
    • cflite-pr.yml: harden-runner present in job `Fuzzing`
    • ci.yml: harden-runner present in job `lint`
    • ci.yml: harden-runner present in job `test`
    • ci.yml: harden-runner present in job `coverage`
    • codeql.yml: harden-runner present in job `analyze`
    • deploy-gate.yml: harden-runner present in job `verify`
    • octo-sts-example.yml: harden-runner present in job `federated-call`
    • release.yml: harden-runner present in job `build`
  • witnessout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml

Code & build hardening

4/4 passed

4 pass · 0 fail · 0 gap · 0 unanswered

  • sastraw: degradedPASS

    runner-tool availability is the…

    evidence · 3
    • engine: opengrep (rules: /home/runner/work/sscs-bootstrapper/sscs-bootstrapper/.sscsb/rules)
    • local ruleset present (1 file(s))
    • opengrep not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 1.25.0. Install: No Homebrew formula; install a pinned release binary: https://github.com/opengrep/opengrep/releases (https://github.com/opengrep/opengrep)
  • sighthoundout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml
  • codeqlPASS
    evidence · 1
    • .github/workflows/codeql.yml installed (1 job(s))
  • fuzzingPASS
    evidence · 4
    • .github/workflows/cflite-pr.yml installed (1 job(s))
    • .clusterfuzzlite/Dockerfile installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
    • .clusterfuzzlite/build.sh installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
    • .trivyignore installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
  • workflow-audit-extendedPASS
    evidence · 1
    • [info] .github/workflows/release.yml: `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` is tag-pinned by design: slsa-github-generator must be referenced by @vX.Y.Z for slsa-verifier to verify the trusted builder
  • secure-repoout of scopeINFO

    informational control — excluded from scoring

  • wait-for-secretsout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml

Ongoing posture

3/3 passed1 unanswered

3 pass · 0 fail · 0 gap · 1 unanswered

  • dependency-trackout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml
  • guacout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml
  • openvexraw: infoUNVERIFIED

    requires the local development environment; not observable in a repository scanhow to answer this →

    evidence · 3
    • no OpenVEX documents in .sscsb/out — N/A for this repo until one is generated
    • generate: `sscsb vex create --vuln CVE-… --product pkg:… --status not_affected --justification …`
    • ingest: `sscsb scan --vex <file>` suppresses not_affected/fixed findings visibly
  • orasout of scoperaw: disabledINFO

    optional control not enabled by this repository

    evidence · 1
    • disabled in .sscsb/config.toml
  • security-insightsPASS
    evidence · 1
    • structurally valid — run `si validate` for full schema conformance
  • best-practices-badgePASS
    evidence · 1
    • .sscsb/best-practices-badge.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
  • osps-baselinePASS
    evidence · 1
    • .sscsb/osps-baseline.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
  • compliance-mapout of scoperaw: passINFO

    informational control — excluded from scoring

Authenticated scan — signature verified

This record was produced in the repository's own CI and keyless-signed there. Before listing it, the directory verified the Sigstore bundle against the certificate identity https://github.com/p4gs/sscs-bootstrapper/.github/workflows/sscsb-scan.yml@refs/heads/main bound to commit c8a23493ec0c on 2026-09-03. The repository, workflow path and default branch are burned into that certificate by GitHub's OIDC issuer, not asserted by the record. The marks above are the work list: adopt the flagged controls, re-run the action, and the next record replaces this one.

Local scan — signature verified

A maintainer ran sscsb on their own machine and signed the record with their git signing key. The directory verified that detached SSH signature with ssh-keygen -Y verify against .sscsb/policy/allowed_signers fetched from this repository at commit 3cb129084db2 — committed content the submitter does not supply. Verifying principal 10093271+p4gs@users.noreply.github.com (SHA256:prXatGO56nl8Or4JdDSzIIcj8hZE1jBxnFaXZOnAPDQ) on 2026-09-11.

What that proves, exactly: a holder of a key this repository commits as an approved signer asserts this result at that commit. Nothing further. It is a real signature, and it is weaker than an authenticated scan, which proves the repository's own CI produced the record.

It settled 8 controls: commit-signingai-trailersai-dep-gateai-receiptspackage-trustbumblebeegrypesocket-firewall. Every other class comes from the repository-observable record above. A local scan never overturns one, and never widens the scope it is measured against.

ssh-keygen -Y verify -f allowed_signers \
  -I "10093271+p4gs@users.noreply.github.com" -n sscsb-scan-record \
  -s scan-record.local.json.sig < scan-record.local.json

What the evidence merge found

The local record describes commit 3cb129084db2, while the repository scan on this listing describes c8a23493ec0c. Its local-environment rows may predate the code above them.

Two scores are on this page and only one of them is ours. The grade and coverage shown here — A+, 100%, coverage 90.9% — are the DIRECTORY's, computed from every evidence source it holds under the published methodology. The signed local record linked below carries its own score block (A+, 100%, coverage 89.5%): that is the SUBMITTER's self-report, computed on their machine over the controls that machine had in scope. It is republished byte-identically because the signature covers those exact bytes, not because the directory endorses the number.