Summary
client_local_library_download.go currently verifies downloaded archives against SHA256SUMS fetched from the same release source.
If a release is compromised (repo/release token compromise, CDN or DNS tampering), an attacker can replace both the archive and checksums, bypassing integrity verification. Because the artifact is a native shared library (.so/.dylib/.dll) loaded in-process, this is a high-impact supply-chain risk.
Proposal
Add an independent trust root by signing release checksums/artifacts and verifying signatures in the downloader.
Use cosign to produce and verify signatures (GPG-compatible signing workflow where required).
Scope
- Sign
SHA256SUMS (or each archive blob) during release.
- Publish signature files (and certificate metadata if keyless mode is used).
- Pin trust in the client verifier (public key and/or identity constraints).
- Verify signature before trusting checksums.
- Fail closed on verification errors.
Acceptance Criteria
Notes
- This should be backward compatible, but default behavior should be secure-by-default for new releases.
- If keyless signing is selected, document required issuer/subject constraints and Rekor usage.
Summary
client_local_library_download.gocurrently verifies downloaded archives againstSHA256SUMSfetched from the same release source.If a release is compromised (repo/release token compromise, CDN or DNS tampering), an attacker can replace both the archive and checksums, bypassing integrity verification. Because the artifact is a native shared library (
.so/.dylib/.dll) loaded in-process, this is a high-impact supply-chain risk.Proposal
Add an independent trust root by signing release checksums/artifacts and verifying signatures in the downloader.
Use cosign to produce and verify signatures (GPG-compatible signing workflow where required).
Scope
SHA256SUMS(or each archive blob) during release.Acceptance Criteria
SHA256SUMS/artifacts.Notes