ci: pin govulncheck install to v1.1.4 (#41)#71
Merged
Merged
Conversation
Replaces `go install …/govulncheck@latest` in the `security` job with the explicit `@v1.1.4` tag, plus a `# Tracks:` comment matching the convention used by the Trivy action pin in `image-scan` (#68) and the Dockerfile base-image digest pins (#32). `@latest` resolves at workflow-run time against proxy.golang.org, so a compromised or buggy upstream release would silently land in CI on the next trigger with no code change. For a tool whose job is to flag supply-chain risk on an internet-exposed service, that is the exact anti-pattern the tool is meant to guard against. A semver tag is materially equivalent to a SHA here because go.sum / sum.golang.org verify module contents and `GOSUMDB` is not disabled; Renovate tracks explicit-version `go install` lines and will surface future bumps as ordinary PRs. `v1.1.4` confirmed at implementation time as the current latest non-prerelease tag on github.com/golang/vuln. `gosec@latest` on the line above is explicitly out of scope per the ticket (one concern per ticket). Refs: #41
Contributor
Author
Code Review: #41Decision: PASS FindingsNone. SummarySingle-line pin of Security-sensitive checks:
AC verification:
Optional follow-ups noted in the spec (already deferred, not blockers): (a) pin |
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.
What
Replaces
go install golang.org/x/vuln/cmd/govulncheck@latestin thesecurityjob of.github/workflows/ci.ymlwith an explicit@v1.1.4pin, plus a# Tracks:comment matching the pinning convention already used by the Trivy action inimage-scan(#68) and the Dockerfile base-image digests (#32).Single-line change (with surrounding comment block); no Go source touched.
Issue
Closes #41.
Version chosen
v1.1.4— re-verified at implementation time againsthttps://api.github.com/repos/golang/vuln/releasesas the current latest non-prerelease tag (matches the spec-time selection). No newer stable tag is available, so no bump from the spec's value was needed.Testing
go vet ./...— clean.go test -race ./...— pass.securityjob will resolve@v1.1.4throughproxy.golang.org, install the pinned binary, and rungovulncheck ./...against the currentgo.mod. If the pin exists and is functionally compatible, the job goes green.Architecture compliance
Follows
docs/specs/architecture/41-pin-govulncheck-version.mdverbatim:ci.yml(with a# Tracks:comment block above the step, mirroring theimage-scanjob's structure).§ Why a semver tag, not a commit SHA or pseudo-versionrationale applies (Go'ssum.golang.orgchecksum DB provides immutability forgo installthatuses:references in GitHub Actions lack).gosec@lateston the line above untouched (explicitly out of scope per ticket and spec)..renovatercchange required — Renovate already tracks explicit-versiongo installlines via itsgomodTagsmanager.Security-sensitive
This ticket carries the
security-sensitivelabel and the spec includes a## Security reviewsection (verdict: PASS). The change tightens a trust boundary by replacing a moving reference with a checksum-verified immutable one; no new trust surface introduced.