p4gs/p4gs.github.io
evidence source — who ran the scan, and therefore how much of the project they could see — how 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.
-
A1 Poisoned commit
All passed
Every answered check passed — 5 of 5. 2 more produced no answer.
No answer
signing-modelscorecard— 1 of these only a maintainer's own machine can answer -
A2 Stolen publisher identity
All passed
Every answered check passed — 5 of 5. 1 more produced no answer.
No answer
signing-model— all of these only a maintainer's own machine can answer - A3 Look-alike or invented package All passed Every check passed — 3 of 3.
-
A4 A real dependency turns hostile, or stays broken
All passed
Every answered check passed — 9 of 9. 3 more produced no answer.
No answer
scorecardbumblebeeopenvex— 2 of these only a maintainer's own machine can answer -
A5 Hijacked build pipeline
All passed
Every answered check passed — 9 of 9. 1 more produced no answer.
No answer
scorecard -
A6 Compromised developer environment
All passed
Every answered check passed — 5 of 5. 2 more produced no answer.
No answer
signing-modelbumblebee— all of these only a maintainer's own machine can answer - A7 Leaked credential All passed Every check passed — 5 of 5.
- A8 A flaw in the code you wrote All passed Every check passed — 3 of 3.
- A9 Untrustworthy delivery All passed Every check passed — 6 of 6.
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
7 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-
secretsraw: degradedPASSrunner-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: passPASSresolved 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: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
signing-modelraw: degradedUNVERIFIEDrequires 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-protectionPASSevidence · 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-auditPASSevidence · 1
- [info] .github/workflows/pages.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: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
ai-trailersraw: passPASSresolved 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: passPASSresolved 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-templatePASSevidence · 1
- AI-provenance PR template installed (code/tests/deps/docs questions)
-
ai-receiptsraw: passPASSresolved 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
6/6 passed2 unanswered-
sbomraw: degradedPASSrunner-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: degradedPASSrunner-tool availability is the…
evidence · 2
- 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)
-
scorecardraw: degradedUNVERIFIEDno 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
-
renovatePASSevidence · 1
- renovate.json5 installed (7 key(s))
-
package-trustraw: passPASSresolved 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 (2 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: degradedUNVERIFIEDrequires the local development environment; not observable in a repository scanhow to answer this →
evidence · 1
- bumblebee not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 0.1.2. Install: brew install bumblebee (Linuxbrew) or see Read-only endpoint inventory scanner (Go, zero dependencies). Release binaries: https://github.com/perplexityai/bumblebee/releases — exposur…
-
gryperaw: passPASSresolved by a signed local scan
evidence · 1
- grype 0.118.0 available — `sscsb scan --grype` runs SBOM-first scanning
-
socket-firewallraw: passPASSresolved 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
7/7 passed-
sigstore-signingPASSevidence · 2
- .github/workflows/release-sign.yml not installed — verified by consolidated evidence in .github/workflows/pages.yml instead
- .github/workflows/pages.yml job `attest`: keyless-signs with `cosign sign-blob --bundle` via `sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6` under `id-token: write`; fires on `push` (branches, paths filters not evaluated)
-
slsa-provenancePASSevidence · 2
- .github/workflows/release-slsa.yml not installed — verified by consolidated evidence in .github/workflows/pages.yml instead
- .github/workflows/pages.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` (branches, paths filters not evaluated)
-
github-attestationsPASSevidence · 2
- .github/workflows/release-attest.yml not installed — verified by consolidated evidence in .github/workflows/pages.yml instead
- .github/workflows/pages.yml job `attest`: attests build provenance to GitHub's attestation store with `actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373` under `attestations: write` + `id-token: write`; fires on `push` (branches, paths filters not evaluated)
-
sbom-attestationPASSevidence · 2
- .github/workflows/release-attest-sbom.yml not installed — verified by consolidated evidence in .github/workflows/pages.yml instead
- .github/workflows/pages.yml job `attest`: attests the SBOM (`sbom-path`) to the artifact digest with `actions/attest@a1948c3f048ba23858d222213b7c278aabede763` under `attestations: write` + `id-token: write`; fires on `push` (branches, paths filters not evaluated)
-
model-signingout of scoperaw: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
provenance-verifyraw: degradedPASSrunner-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-immutabilityout of scoperaw: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
octo-stsPASSevidence · 2
- .github/workflows/octo-sts-example.yml installed (1 job(s))
- .github/chainguard/sscsb-automation.sts.yaml installed (4 key(s))
-
harden-runnerPASSevidence · 8
- ci.yml: harden-runner present in job `site`
- ci.yml: harden-runner present in job `relay`
- codeql.yml: harden-runner present in job `analyze`
- deploy-gate.yml: harden-runner present in job `verify`
- directory-autopublish.yml: harden-runner present in job `gate`
- directory-collect.yml: harden-runner present in job `collect`
- directory-ingest.yml: harden-runner present in job `ingest`
- directory-ingest.yml: harden-runner present in job `comment`
-
witnessout of scoperaw: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
Code & build hardening
3/3 passed-
sastraw: degradedPASSrunner-tool availability is the…
evidence · 3
- engine: opengrep (rules: /home/runner/work/p4gs.github.io/p4gs.github.io/.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: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
codeqlPASSevidence · 1
- .github/workflows/codeql.yml installed (1 job(s))
-
fuzzingout of scoperaw: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
workflow-audit-extendedPASSevidence · 1
- [info] .github/workflows/pages.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 scopeINFOinformational control — excluded from scoring
-
wait-for-secretsout of scoperaw: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
Ongoing posture
3/3 passed1 unanswered-
dependency-trackout of scoperaw: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
guacout of scoperaw: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
openvexraw: infoUNVERIFIEDrequires 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: disabledINFOoptional control not enabled by this repository
evidence · 1
- disabled in .sscsb/config.toml
-
security-insightsPASSevidence · 1
- structurally valid — run `si validate` for full schema conformance
-
best-practices-badgePASSevidence · 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-baselinePASSevidence · 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: passINFOinformational 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/p4gs.github.io/.github/workflows/sscsb-scan.yml@refs/heads/main bound to commit 3ab6bf98504b 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
710cf8e461f2 — 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 7 controls: commit-signingai-trailersai-dep-gateai-receiptspackage-trustgrypesocket-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 710cf8e461f2, while the repository scan on this listing describes 3ab6bf98504b. 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 87.1% — 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 86.1%): 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.