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(uat): bind helm-diff provenance to the requested version
Address review on #2267.
Gates 1-3 all reduce to "these bytes match the pin", so none of them can
detect a pin that was itself poisoned. tools/update-helm-diff-checksums
derives the pin from an unsigned checksums.txt, and the release asset
filename carries no version, so a compromised release or CDN can seed the
pin with an older release's hashes during a Renovate bump and then serve
that older tarball at install time. The older tarball is genuinely signed
by the maintainer, so gate 2 passes, and its .prov keys the same
helm-diff-<os>-<arch>.tgz filename with the hash now in the pin, so gate 3
passes too. Result is a downgrade despite the requested version.
Add gate 4: extract the version from the already-verified provenance body
and fail unless it equals the requested version. Confirmed against real
artifacts - v3.15.10's .prov yields VALIDSIG for the pinned fingerprint
and carries the identical files key, so only the signed version field
separates it from v3.15.11.
Also from the same review:
- Accept the pinned fingerprint in either VALIDSIG position, so signing
with a future subkey does not false-reject a legitimate signature.
- Preflight gpg alongside helmfile/helm/curl.
- Read testing_tools.helm_diff with a // "" fallback and an explicit
empty check, matching the checksum read, so an unpinned version fails
with a clear message instead of a 404 on a .../null/... URL.
- Note that --verify=false skips helm's provenance check but not
helm-diff's install hook, whose no-refetch behavior depends on upstream
continuing to bundle bin/diff.
- Correct the gate rationale: gate 1 is the control that blocks a replayed
older release, not gate 3.
- Record that a stale helm_diff pin has no PR-time gate, unlike its
helmfile/chainsaw siblings, since helm_diff_checksums is read only by
the nightly UAT.
Signed-off-by: Brian Lockwood <lockwobr@gmail.com>
0 commit comments