p4gs/sscs-bootstrapper
A+100% of the answered checks passed · 90.9% of the checks were answered at all
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 →
-
A1 Poisoned commit
All answered checks passed
Every answered check passed — 5 of 5. 2 more produced no answer.
No answer
signing-model,scorecard— 1 of these only a maintainer's own machine can answer Every sscsb check here that produced an answer passed. That is not the same as being safe from this group. -
A2 Stolen publisher identity
All answered checks passed
Every answered check passed — 6 of 6. 1 more produced no answer.
No answer
signing-model— all of these only a maintainer's own machine can answer Every sscsb check here that produced an answer passed. That is not the same as being safe from this group. - A3 Look-alike or invented package All answered checks passed Every check passed — 3 of 3. Every sscsb check here that produced an answer passed. That is not the same as being safe from this group.
-
A4 A real dependency turns hostile, or stays broken
All answered checks passed
Every answered check passed — 10 of 10. 2 more produced no answer.
No answer
scorecard,openvex— 1 of these only a maintainer's own machine can answer Every sscsb check here that produced an answer passed. That is not the same as being safe from this group. -
A5 Hijacked build pipeline
All answered checks passed
Every answered check passed — 9 of 9. 1 more produced no answer.
No answer
scorecardEvery sscsb check here that produced an answer passed. That is not the same as being safe from this group. -
A6 Compromised developer environment
All answered checks passed
Every answered check passed — 6 of 6. 1 more produced no answer.
No answer
signing-model— all of these only a maintainer's own machine can answer Every sscsb check here that produced an answer passed. That is not the same as being safe from this group. - A7 Leaked credential All answered checks passed Every check passed — 5 of 5. Every sscsb check here that produced an answer passed. That is not the same as being safe from this group.
- A8 A flaw in the code you wrote All answered checks passed Every check passed — 4 of 4. Every sscsb check here that produced an answer passed. That is not the same as being safe from this group.
- A9 Untrustworthy delivery All answered checks passed Every check passed — 7 of 7. Every sscsb check here 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-badge, compliance-map, osps-baseline, publish-targets, secure-repo, security-insights.
Raw sscsb verdicts and every reclassification are shown — transparency about what was and wasn't verifiable is the product.
Phase 1 — Commit integrity
8 pass · 0 fail/gap · 1 unverified-
Pass
secretsraw: degradedrunner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-existevidence
- 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)
-
Pass
commit-signingraw: passresolved 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 itevidence
- 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
-
Info
agent-signingout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
-
Unverified
signing-modelraw: degradedrequires the local development environment; not observable in a repository scanevidence
- 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`
-
Pass
branch-protectionevidence
- 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)
-
Pass
actions-auditevidence
- [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
-
Info
gittufout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
-
Pass
ai-trailersraw: passresolved 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 itevidence
- enforced by the commit-msg hook
- pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
-
Pass
ai-dep-gateraw: passresolved 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 itevidence
- enforced by the commit-msg hook
- pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
-
Pass
pr-templateevidence
- AI-provenance PR template installed (code/tests/deps/docs questions)
-
Pass
ai-receiptsraw: passresolved 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 itevidence
- 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
Phase 2 — Dependencies
7 pass · 0 fail/gap · 1 unverified-
Pass
sbomraw: degradedrunner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-existevidence
- 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)
-
Pass
vuln-scanraw: degradedrunner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-existevidence
- 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
-
Unverified
scorecardraw: degradedno lane produced a verdict for this control — an unperformed check is never a verdictevidence
- .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
-
Pass
renovateevidence
- renovate.json5 installed (7 key(s))
-
Pass
package-trustraw: passresolved 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 itevidence
- 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
-
Pass
bumblebeeraw: passresolved 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 itevidence
- 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
-
Pass
gryperaw: passresolved 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 itevidence
- grype 0.118.0 available — `sscsb scan --grype` runs SBOM-first scanning
-
Pass
socket-firewallraw: passresolved 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 itevidence
- Socket Firewall CLI (sfw) found at /Users/p4gs/.npm-global/bin/sfw
- socket-firewall blocks known-malicious packages at install time (optional layer)
Phase 3 — Build receipts
8 pass · 0 fail/gap · 0 unverified-
Pass
sigstore-signingevidence
- .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)
-
Pass
slsa-provenanceevidence
- .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)
-
Pass
github-attestationsevidence
- .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)
-
Pass
sbom-attestationevidence
- .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)
-
Info
model-signingout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
-
Pass
provenance-verifyraw: degradedrunner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-existevidence
- 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)
-
Pass
release-immutabilityevidence
- .github/workflows/release.yml installed (5 job(s))
-
Pass
octo-stsevidence
- .github/workflows/octo-sts-example.yml installed (1 job(s))
- .github/chainguard/sscsb-automation.sts.yaml installed (3 key(s))
-
Pass
harden-runnerevidence
- 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`
-
Info
witnessout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
Phase 4 — Code & build hardening
4 pass · 0 fail/gap · 0 unverified-
Pass
sastraw: degradedrunner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-existevidence
- 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)
-
Info
sighthoundout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
-
Pass
codeqlevidence
- .github/workflows/codeql.yml installed (1 job(s))
-
Pass
fuzzingevidence
- .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)
-
Pass
workflow-audit-extendedevidence
- [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
-
Info
secure-repoout of scopeinformational control — excluded from scoring -
Info
wait-for-secretsout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
Phase 5 — Ongoing posture
3 pass · 0 fail/gap · 1 unverified-
Info
dependency-trackout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
-
Info
guacout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
-
Unverified
openvexraw: inforequires the local development environment; not observable in a repository scanevidence
- 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
-
Info
orasout of scope raw: disabledoptional control not enabled by this repositoryevidence
- disabled in .sscsb/config.toml
-
Pass
security-insightsevidence
- structurally valid — run `si validate` for full schema conformance
-
Pass
best-practices-badgeevidence
- .sscsb/best-practices-badge.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
-
Pass
osps-baselineevidence
- .sscsb/osps-baseline.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
-
Info
compliance-mapout of scope raw: passinformational control — excluded from scoring
Phase 6 — Distribution & publishing
0 pass · 0 fail/gap · 0 unverifiedAuthenticated 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. Amber and hatched links 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 link, and a shorter chain than an authenticated scan, which proves the repository's own CI produced the record.
It forged 8 controls: commit-signing, ai-trailers, ai-dep-gate, ai-receipts, package-trust, bumblebee, grype, socket-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.