Repository navigation
feat(upgrade): verify the sigstore signature on checksums.txt - #158
Merged
Merged
Conversation
bodek upgrade now verifies checksums.txt.bundle (Fulcio chain, release.yml identity pinned to the exact tag, Rekor SET and inclusion proof) with the standard library before trusting any checksum; a release without a bundle is refused. --skip-signature falls back to checksum-only with a warning. Ported from odek's verifier. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A body past the 256 MiB cap was silently truncated and surfaced as a misleading checksum or signature failure. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
bodek | f5d4d98 | Commit Preview URL Branch Preview URL |
Oct 18 2026, 06:53 AM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
bodek upgradenow checks the release's Sigstore signature before it trusts any checksum, matching odek's signed upgrades (odek #325). A matching checksum proves nothing whenchecksums.txtcomes from the same, possibly tampered, release.cmd/bodek/upgrade_sigstore.go, standard library only, ported from odek): checkschecksums.txt.bundleagainst the embedded Sigstore root and Rekor key:https://github.com/BackendStack21/bodek/.github/workflows/release.yml@refs/tags/<exact tag>, the GitHub Actions OIDC issuer and this repository;checksums.txt;hashedrekordentry is bound to the same digest, signature and certificate, and its signed entry timestamp and inclusion proof (with checkpoint) verify.--skip-signaturefalls back to checksum-only with a warning, for when the embedded root goes stale after a Sigstore rotation.bodek upgrade --helpdocuments it, and unknown flags are now rejected.cosign verify-blobcommand), AGENTS.md, and a note next to the cosign pin inrelease.yml.The release workflow already signs
checksums.txt, so no pipeline change is needed.Limits
The signature pins the tag being installed, not freshness: a compromised feed can still offer an older genuine release that is newer than the installed one (a
devbuild accepts whatever signed release the feed names). This is documented, as in odek. CT and RFC 3161 timestamps are not checked; the Rekor signed entry timestamp supplies the verification time.Testing
checksums.txtand bundle pass under the production trust root, and are refused for another tag, after tampering, and under a different root.--skip-signature, a bundle from another release (refused), and a failed bundle download.make fmt,make vet,make lint(0 issues),make test(race) all pass.🤖 Generated with Claude Code