T08 · Insecure Dependencies
- Location
SKILL.md:15- Finding
Unpinned Executable Tool Dependencies Use Mutable Latest Versions
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:15,SKILL.md:25,SKILL.md:126-128;references/auditing.md:78;references/visualization.md:26;references/visualization.md:42
Vulnerability Type: Supply-chain risk from unpinned executable dependencies
Risk Level: MediumVulnerable Code Snippets
SKILL.md:15:yaml package: golang.org/x/vuln/cmd/govulncheck@latestSKILL.md:25:markdown - govulncheck: `go install golang.org/x/vuln/cmd/govulncheck@latest`SKILL.md:126-128:bash go get -tool github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest go get -tool golang.org/x/vuln/cmd/govulncheck@latest go get -tool golang.org/x/perf/cmd/benchstat@latestreferences/auditing.md:78:bash go get -tool github.com/Zxilly/go-size-analyzer/cmd/gsa@latestreferences/visualization.md:26:bash go get -tool golang.org/x/exp/cmd/modgraphviz@latestreferences/visualization.md:42:bash go get -tool golang.org/x/tools/cmd/digraph@latestTechnical Analysis
The
@latestselector is mutable: it resolves to whichever release or pseudo-version is considered latest when the command runs. Consequently, the effective executable code installed by these commands can change after the Skill has been reviewed, without any corresponding modification to the Skill itself.Go module checksum verification helps detect inconsistent artifacts for an already recorded module version, but it does not establish that a newly resolved latest version is trusted or behaviorally safe. Where tool directives are added to a module and the resulting
go.modandgo.sumare committed, subsequent executions can be reproducible; however, the initialgo get -tool ...@latestoperation still selects an unreviewed version. The standalonego install ...@latestinstruction is also inherently unpinned.The referenced module paths belong to recognizab ...[truncated 1937 chars]
- Remediation
View remediation
Remediation Suggestions
-
Replace every
@latestselector with a reviewed, explicit semantic version, for example:bash go install golang.org/x/vuln/cmd/govulncheck@vX.Y.Z go get -tool golang.org/x/vuln/cmd/govulncheck@vX.Y.ZSubstitute an actual version that has been reviewed and approved; do not copy placeholder versions directly.
-
For projects using Go 1.24 or newer, pin tools through
go.modtool directives and commit bothgo.modandgo.sum. -
Update pinned versions only through explicit, reviewable dependency changes. Review release notes, source changes, provenance, maintainer activity, and security advisories before accepting an update.
-
Run tool installation in a restricted CI environment with least-privilege credentials, limited filesystem access, and controlled outbound network access.
-
Separate dependency-update jobs from release jobs so that newly selected tool versions cannot immediately access production or signing credentials.
-
Consider enforcing a policy check that rejects
go install ...@latestandgo get -tool ...@latestin Skill documentation and automation. -
Preserve Go checksum verification, but treat it as artifact-integrity protection rather than a substitute for version pinning and dependency review.
-
