T08 · Insecure Dependencies
- Location
references/setup.md:37- Finding
Unpinned Third-Party CLI Installation Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:16-19;references/setup.md:37-53
Vulnerability Type: Unpinned and mutable third-party executable installation
Risk Level: MediumThe skill directs users to install the external
yutuCLI without pinning an audited version or requiring artifact integrity verification.Relevant code from
SKILL.md:16-19:yaml install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu]Relevant code from
references/setup.md:37-53:bash # Node.js (all platforms) npm i -g @eat-pray-ai/yutu # macOS brew install yutu # Linux brew install yutu # Windows winget install yutu # Gopher go install github.com/eat-pray-ai/yutu@latesttext Download a prebuilt binary from the releases page and place it in your PATH.Technical Analysis
The installation declarations and setup instructions resolve mutable upstream package or release versions. In particular, the Go command explicitly requests
@latest, while the npm, Homebrew, WinGet, and release-page instructions do not specify an audited version or require checksum or signature validation.This creates a supply-chain trust boundary that is not controlled by the skill package. If an upstream publisher account, package registry entry, repository release, package-manager formula, or distribution artifact is compromised, users following these instructions may receive code different from the code originally reviewed.
The risk is elevated because the installed CLI is subsequently entrusted with OAuth client credentials and a cached YouTube OAuth token through
client_secret.json,youtube.token.json,YUTU_CREDENTIAL, andYUTU_CACHE_TOKEN. There is no evidence in the reviewed project that the current upstream package is malicious; exploitation depends on compromise or malicious replacement of a mutable upstream artifact.Attack Path
- An attacker c ...[truncated 1574 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every installation method to a specific, reviewed version rather than using implicit latest versions or
@latest. - For Go installations, use an explicit immutable version such as
github.com/eat-pray-ai/yutu@vX.Y.Z. - For npm, document an exact package version and consider using a project-local installation with a lockfile instead of an unrestricted global installation.
- Publish and verify cryptographic checksums for downloaded binaries. Prefer signed releases and document signature verification commands.
- Record the expected package publisher, repository, release version, and artifact digest so users can detect dependency confusion or substituted artifacts.
- Avoid administrative installation or execution unless strictly necessary; run the CLI with least privilege.
- Request only the minimum OAuth scopes needed for search operations, and document how users can inspect and revoke access.
- Store OAuth token and client-secret files with restrictive filesystem permissions and keep them outside shared or version-controlled directories.
- Establish a dependency update process in which new versions are reviewed and their pinned versions and hashes are updated deliberately.
- Pin every installation method to a specific, reviewed version rather than using implicit latest versions or
