Skip to content

fix(obolup): fail closed on release-checksum verification failure#776

Merged
bussyjd merged 1 commit into
integration/v0.14.0-rc0from
fix/obolup-checksum-failclosed
Jul 16, 2026
Merged

fix(obolup): fail closed on release-checksum verification failure#776
bussyjd merged 1 commit into
integration/v0.14.0-rc0from
fix/obolup-checksum-failclosed

Conversation

@bussyjd

@bussyjd bussyjd commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Full-surface audit finding: self-update checksum fails open

Found by the 2026-07-16 whole-product-surface audit (PR #770), adversarially confirmed. obolup.sh's verify_release_checksum() — the only integrity check guarding the downloaded obol binary — return 0 (treated as verified) in three failure branches: SHA256SUMS unfetchable, no matching checksum entry, or no sha256sum/shasum on the host. A tampered binary installs whenever the attacker also suppresses/omits the checksum.

Fix

These now fail closed — a missing checksum entry or absent hashing tool aborts the install. The unfetchable-SHA256SUMS case defaults to abort, with an explicit OBOL_ALLOW_UNVERIFIED=1 opt-in for channels that legitimately don't publish sums. bash -n clean.

Note (separate, still open — see PR #770 triage): the other tools obolup.sh fetches (kubectl/helm/k3d/helmfile/k9s, Ollama's installer) are still downloaded with no checksum at all — a broader hardening this PR does not cover.

https://claude.ai/code/session_014YjPMViNrZ7zBVgUQzwEKk

verify_release_checksum() returned 0 (treated as verified) whenever the
SHA256SUMS fetch failed, no checksum entry matched the binary, or no local
sha256 tool was available — letting a tampered/corrupted obol binary install
silently in all three cases since download_release() only aborts on a
non-zero return.

Fail closed instead: a missing checksum entry or missing hashing tool now
returns 1 and aborts the install via the existing download_release() error
path. A failed SHA256SUMS fetch also fails closed by default, gated behind
an explicit OBOL_ALLOW_UNVERIFIED=1 opt-in for channels that legitimately
don't publish sums.

Confirmed Canary402 full-surface audit finding.

Claude-Session: https://claude.ai/code/session_014YjPMViNrZ7zBVgUQzwEKk
@bussyjd
bussyjd merged commit b3750be into integration/v0.14.0-rc0 Jul 16, 2026
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.

1 participant