You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(slsa): close the rejection fail-open — match gh's real rejection signatures (#65)
Follow-up to #62, from the adversarial review's **confirmed** high
finding (empirically reproduced by the verifier agent against cli/cli's
attested artifact with gh 2.92.0):
Genuine cryptographic rejections — certificate-identity mismatch,
subject-digest mismatch, signer-repo mismatch — all exit 1 with stderr
exactly `Error: verifying with issuer "sigstore.dev"`, which the shipped
`verif`+`fail` heuristic classified as *operational*. Result: a
rejected/forged artifact degraded to an advisory note instead of a hard
`{:error}` — the `verified: false` branch was effectively dead code on
current gh.
**Fix**: both classifiers (Elixir local-gh fallback and checky-monkey's
Rust endpoint) now match the empirically observed rejection signatures
(`verifying with issuer`, `no attestations found`) ahead of the generic
heuristic, with comments pinning them to the gh version for future
upgrades. Trust is still only ever *granted* on gh exit 0. Additionally,
"attestations exist but no verifier could check them" now surfaces as a
pipeline **warning** rather than info — the package claims provenance
nothing could confirm; still non-blocking per the advisory doctrine.
5 new signature tests (rejections definitive; operational/auth/empty
degrade fail-open; blocked CLI is unavailable). 23/23 Elixir + 4/4 Rust
tests green.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
0 commit comments