T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Executable Security Tool Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 17, 40, 131, and 135
Vulnerability Type: Supply-chain risk from mutable dependency versions
Risk Level: MediumVulnerable Code
yaml install: - kind: go package: golang.org/x/vuln/cmd/govulncheck@latest bins: [govulncheck]markdown - govulncheck: `go install golang.org/x/vuln/cmd/govulncheck@latest`bash go get -tool github.com/securego/gosec/v2/cmd/gosec@latest go get -tool golang.org/x/vuln/cmd/govulncheck@latestTechnical Analysis
The Skill directs users or an automation harness to retrieve executable Go tools using the mutable
@latestversion selector. Consequently, the code installed during a future invocation may differ from the code reviewed during this audit.The named module paths are consistent with the Skill's declared Go security-auditing purpose, and no evidence shows that they are currently malicious. Nevertheless, using mutable versions weakens reproducibility and supply-chain controls. If an upstream repository, maintainer account, release process, or resolved dependency were compromised, following these instructions could build and execute altered code.
This behavior requires network access and local execution, but those capabilities are functionally relevant to installing and running security scanners. The issue is therefore unsafe dependency acquisition rather than an inherently unnecessary privilege request.
Attack Path
- An attacker compromises an upstream tool release, maintainer account, module source, or dependency in its build graph.
- The attacker publishes a version that becomes the target resolved by
@latest. - A user or automation harness loads the Skill and follows its installation instructions.
- The Go toolchain downloads and builds the mutable release.
- The resulting executable runs during a repository scan with the invoking user's permissions.
- Malicious code could access source files and other ...[truncated 883 chars]
- Remediation
View remediation
Remediation Suggestions
-
Replace every
@latestselector with a reviewed, explicit semantic version, for example:yaml package: golang.org/x/vuln/cmd/govulncheck@vX.Y.Zbash go get -tool github.com/securego/gosec/v2/cmd/gosec@vX.Y.Z go get -tool golang.org/x/vuln/cmd/govulncheck@vX.Y.Z -
Keep the declared installer and documentation commands synchronized so all installation paths resolve to the same approved versions.
-
Update pinned versions through a controlled review process that examines release notes, source changes, maintainership changes, and known vulnerabilities.
-
Retain and verify Go module checksums through
go.sumwhere the surrounding project supports tool dependencies. -
In higher-assurance environments, fetch dependencies through an approved module proxy or internal artifact mirror and verify release provenance.
-
Run downloaded scanners with minimum necessary privileges in a restricted environment without unrelated secrets, unnecessary write access, or unrestricted outbound networking.
-
