Skip to content

fix(security): rotate Fulcio leaf SPKI pin (closes #117)#119

Merged
avrabe merged 1 commit into
mainfrom
fix/fulcio-cert-pin-rotation-2026-05
May 19, 2026
Merged

fix(security): rotate Fulcio leaf SPKI pin (closes #117)#119
avrabe merged 1 commit into
mainfrom
fix/fulcio-cert-pin-rotation-2026-05

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 19, 2026

Sigstore rotated their fulcio.sigstore.dev leaf certificate. Pin set updated; previous leaf kept for transition. New pin verified via direct openssl fetch — SPKI sha256 = e30da317897121cb8fba4b1285d4d51207dfbe6272c245bc1c19694317658275. Cert chain identity: subject=CN=fulcio.sigstore.dev, issuer=Google Trust Services WR3, validity May 13 → Aug 11 2026. GTS WR3 intermediate SPKI and Rekor leaf SPKI both unchanged. 11 cert-pinning unit tests pass. Unblocks v0.8.3 release.yml WASM Component publish. Fixes #117.

Sigstore rotated their `fulcio.sigstore.dev` leaf certificate sometime
between 2026-04-14 (when the pin set was last updated) and 2026-05-16
(when v0.8.3's release.yml `Build & Release WASM Component` job failed
with `Certificate pin mismatch for fulcio.sigstore.dev: got
e30da317897121cb..., expected one of 2 configured pins`).

Verification of the new pin:

  $ echo | openssl s_client \
      -connect fulcio.sigstore.dev:443 \
      -servername fulcio.sigstore.dev 2>/dev/null \
    | openssl x509 -pubkey -noout \
    | openssl pkey -pubin -outform DER \
    | openssl dgst -sha256 -binary \
    | xxd -p -c 256
  e30da317897121cb8fba4b1285d4d51207dfbe6272c245bc1c19694317658275

  Cert chain identity:
    subject = CN=fulcio.sigstore.dev
    issuer  = C=US, O=Google Trust Services, CN=WR3
    notBefore = May 13 04:21:37 2026 GMT
    notAfter  = Aug 11 05:14:30 2026 GMT

  Cross-checks:
  - GTS WR3 intermediate SPKI matches the existing pinned
    `39d4a59900fd356261e046dc387071921ca03f0352c00f50f757a8ba77db7281`
  - Rekor leaf SPKI unchanged, still matches the existing Rekor pin

The previous Fulcio leaf SPKI is retained in the pin set for
transition / rollback safety. It can be removed on the next rotation
once we're confident Sigstore won't roll back.

Observational note for audit C-4 (issue #95): the v0.8.3 release CI
failure proves cert pinning IS being enforced today, at least on the
keyless-signing HTTP path. The audit's "warn-only" framing reflected
the `ureq` API limitation, but the failure mode in practice is
fail-closed. This is the right posture; #95 is about *making* this
the case at the TLS layer (rustls verifier) rather than at the
post-handshake response layer where it currently sits.

Unblocks v0.8.3 release.yml's WASM-component publish — a re-run after
this lands should complete the GitHub Release object.

Fixes: #117

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@temper-pulseengine
Copy link
Copy Markdown

Automated review for PR #119

pulseengine/sigil:fix/fulcio-cert-pin-rotation-2026-05 → pulseengine/sigil:main

Verdict: 💬 Comment

Summary: Updates Fulcio leaf SPKI pin and adds new test.

Findings: 0 mechanical (rivet) · 1 from local AI model.

Findings (1):

  1. src/lib/src/signature/keyless/cert_pinning.rs:85
    +    // fulcio.sigstore.dev leaf SPKI (added 2026-05-19 after Sigstore
    
No new test asserts that a 4xx status survives wrap_full_page; serve_integration tests check 200 paths only.

---
*Generated by a local AI model and post-validated against a strict JSON contract. Each finding includes the verbatim line being criticised — verify by reading the file at the cited location.*

*Reviewed at `7e3f3bf`*

@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit fb747ac into main May 19, 2026
17 checks passed
@avrabe avrabe deleted the fix/fulcio-cert-pin-rotation-2026-05 branch May 19, 2026 05:25
avrabe added a commit that referenced this pull request May 19, 2026
Single-commit-content release: v0.8.3 tagged cleanly and shipped to
crates.io, but the release.yml::Build & Release WASM Component job
failed (so the GitHub Release object never created) because Sigstore
rotated the fulcio.sigstore.dev leaf cert. PR #119 landed the new
pin on main; this release re-cuts a tag where the code does contain
the fix.

Trace: skip

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sigstore Fulcio cert rotation invalidated pinned fingerprints

1 participant