T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Mutable @latest Go Tool Dependencies Permit Supply-Chain Code Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:17-18, 32;references/benchstat.md:7-9;references/ci-regression.md:9-10, 45-46, 82-83
Vulnerability Type: Unpinned executable dependencies
Risk Level: MediumVulnerable Code
SKILL.md:yaml install: - kind: go package: golang.org/x/perf/cmd/benchstat@latest bins: [benchstat]markdown - benchstat: `go install golang.org/x/perf/cmd/benchstat@latest`references/benchstat.md:bash go install golang.org/x/perf/cmd/benchstat@latestreferences/ci-regression.md:bash go install filippo.io/mostly-harmless/benchdiff@latestbash go install github.com/knqyf263/cob@latestbash go install go.bobheadxi.dev/gobenchdata@latestTechnical Analysis
Each command resolves the mutable
@latestversion at installation time and compiles it into a locally executable binary. The effective code executed by the Skill can therefore change after the Skill package has been reviewed.benchstatcomes from an official Go module, but it is still not pinned to an immutable version. The CI regression tools are separate third-party projects and increase the supply-chain attack surface. A compromised upstream account, malicious release, or newly introduced dependency vulnerability could cause arbitrary code to run during installation or when the resulting binary is invoked.Because these tools may run inside repository workspaces or CI jobs, they can inherit access to source code, build artifacts, environment variables, repository credentials, and any permissions granted to the CI job.
Attack Path
- An upstream module, maintainer account, release process, or transitive dependency is compromised.
- A malicious version becomes the version resolved by
@latest. - An agent or CI workflow follows the Skill instructions and runs
go install. - Go downloads and compiles the ch ...[truncated 788 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace every
@latestreference with a reviewed, explicit version such as@vX.Y.Z. - Maintain approved tool versions in a checked-in tool manifest or dedicated
tools.gomodule. - Record and verify module checksums through
go.sumand the expected Go checksum database or an organization-controlled proxy. - Upgrade tools through reviewed dependency-update pull requests rather than resolving mutable versions during Skill execution.
- Run third-party benchmark tools in isolated CI jobs with read-only repository access whenever possible.
- Grant CI tokens only the minimum required permissions and avoid exposing unrelated secrets to benchmark jobs.
- Consider prebuilding and signing approved tool binaries in a controlled build pipeline.
- Replace every
