T08 · Insecure Dependencies
- Location
SKILL.md:37- Finding
Unpinned Go Dependency Uses a Mutable Latest Version
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 37
Vulnerability Type: Supply-chain risk caused by non-reproducible dependency resolution
Risk Level: LowVulnerable Code
bash go get github.com/spf13/viper@latestTechnical Analysis
The installation example instructs the agent or user to resolve
github.com/spf13/viperusing the mutable@latestselector. Although this is the official Viper module path and no malicious dependency was identified during the audit, the command does not constrain installation to a reviewed version.The effective dependency can therefore change after the Skill has been audited. Repeating the command at different times may install different source code and transitive dependency graphs. This weakens build reproducibility and makes it difficult to ensure that the installed release is the one that underwent security and compatibility review.
This is a supply-chain hardening issue rather than evidence that the current Viper package is malicious.
Attack Path
- A user invokes the Skill while adding Viper to a Go project.
- The agent follows the documented
go get ...@latestcommand. - The Go toolchain queries the configured module infrastructure and resolves whichever version is considered latest at that time.
- A newly released, compromised, or insufficiently reviewed version is downloaded.
- The selected package and its transitive dependencies become part of the target project's dependency graph.
- The dependency code executes when the resulting application or its tests are built and run.
Successful exploitation would require compromise of the upstream release process, module-delivery infrastructure, configured Go proxy, or a future release containing a vulnerability.
Impact Assessment
The impact is limited to projects whose users or agents execute the example. A compromised dependency could obtain the privileges of the build, test, or application process. Depending on where t ...[truncated 261 chars]
- Remediation
View remediation
Remediation Suggestions
Replace the mutable selector with a specific, reviewed release:
bash go get github.com/spf13/viper@vX.Y.ZAdditional hardening should include:
- Select and document a tested Viper version.
- Commit
go.modandgo.sumso dependency resolution can be verified. - Review transitive dependency changes before upgrading.
- Use automated vulnerability scanning, such as
govulncheck, in CI. - Apply dependency updates through an explicit review process rather than resolving
@latestduring routine Skill use. - If the documentation intentionally allows users to select a version, use a placeholder such as
@<reviewed-version>and explain the review requirement.
