Skip to content

Commit 5e53264

Browse files
avrabeclaude
andauthored
release: v0.8.4 — Fulcio cert pin rotation hotfix (#120)
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>
1 parent fb747ac commit 5e53264

5 files changed

Lines changed: 59 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,58 @@
33
All notable changes to sigil are documented here. The project follows
44
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
55

6+
## [0.8.4] — 2026-05-19
7+
8+
Hotfix release. Single-commit content: rotate the pinned Fulcio leaf
9+
SPKI to the new Sigstore-issued cert.
10+
11+
### Why this exists
12+
13+
v0.8.3 tagged cleanly and shipped to crates.io, but the
14+
`release.yml::Build & Release WASM Component` job failed (and so the
15+
GitHub Release object for v0.8.3 was never created) because Sigstore
16+
rotated the `fulcio.sigstore.dev` leaf certificate between the pin
17+
set's last update (2026-04-14, leaf `6611c54b...`) and the v0.8.3
18+
release date (2026-05-16, observed leaf `e30da317...`). The keyless
19+
signing flow correctly fail-closed on the pin mismatch.
20+
21+
This release bumps the version, lands the pin fix from PR #119, and
22+
re-triggers `release.yml` at a tag (v0.8.4) whose code does contain
23+
the new pin. The crates.io packages already at 0.8.3 are unaffected;
24+
v0.8.4 will publish over them as the canonical version going forward.
25+
26+
### Changed
27+
28+
- `src/lib/src/signature/keyless/cert_pinning.rs`
29+
`FULCIO_PRODUCTION_PINS` adds the new leaf SPKI
30+
`e30da317897121cb8fba4b1285d4d51207dfbe6272c245bc1c19694317658275`.
31+
Verified by direct `openssl s_client` fetch; chain identity
32+
(subject CN, issuer `Google Trust Services WR3`) cross-checked.
33+
Previous leaf retained for transition / rollback safety. GTS WR3
34+
intermediate pin and Rekor leaf pin both unchanged and re-verified.
35+
36+
### Audit observation
37+
38+
The v0.8.3 release-blocking failure provided strong evidence that
39+
audit C-4 (issue #95) was partly mis-framed: cert pinning **is**
40+
enforced today on the keyless HTTP path (post-handshake check, fail-
41+
closed), even though it is not enforced at the rustls handshake
42+
layer. The right framing for #95 is "move enforcement to the
43+
handshake layer for defense-in-depth", not "enable enforcement".
44+
45+
### Operational follow-up (issue thread)
46+
47+
A scheduled "compare live SPKI vs pinned set" job would surface the
48+
next Sigstore rotation **before** it blocks a release rather than
49+
after. Tracked as a follow-up to #117 (already filed and closed by
50+
this PR), not blocking.
51+
52+
### Contributors
53+
54+
PRs in this release: #119 (Fulcio pin rotation).
55+
56+
[0.8.4]: https://github.com/pulseengine/sigil/compare/v0.8.3...v0.8.4
57+
658
## [0.8.3] — 2026-05-16
759

860
Audit-followup continuation. Closes the residual security-ignore-list

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ exclude = [
1111
]
1212

1313
[workspace.package]
14-
version = "0.8.3"
14+
version = "0.8.4"
1515
edition = "2024"
1616
authors = ["Frank Denis <github@pureftpd.org>", "Ralf Anton Beier <ralf_beier@me.com>"]
1717
license = "MIT"

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
module(
44
name = "wsc",
55
# Keep in sync with [workspace.package].version in Cargo.toml.
6-
version = "0.8.3",
6+
version = "0.8.4",
77
)
88

99
# Dependencies

src/cli/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ package(default_visibility = ["//visibility:public"])
1515

1616
# Version info - keep in sync with [workspace.package].version in Cargo.toml
1717
# and with the `version` field in MODULE.bazel.
18-
VERSION = "0.8.3"
18+
VERSION = "0.8.4"
1919

2020
rust_binary(
2121
name = "wasmsign_cli",

0 commit comments

Comments
 (0)