T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Third-Party CLI Installation Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:17-21;references/setup.md:31-55
Vulnerability Type: Unpinned and unverifiable third-party executable dependency
Risk Level: MediumVulnerable Code
SKILL.md:17-21:yaml homepage: https://github.com/eat-pray-ai/yutu install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu]references/setup.md:31-55:markdown ## Installation Install `yutu` using one of these methods: ```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@latestOther platforms
Download a prebuilt binary from the releases page and place it in your PATH.
text ### Technical Analysis The skill installs and invokes the third-party `yutu` executable without pinning an immutable version or requiring checksum or signature verification. The Node.js package has no explicit version, the Go command explicitly uses `@latest`, package-manager commands rely on mutable repository state, and the binary download points to the mutable `releases/latest` endpoint. Consequently, the executable installed by a user can differ from the artifact that was available when the skill was audited. A compromise of the upstream source repository, package registry account, package-manager formula or manifest, release pipeline, or publisher credentials could cause a malicious version to be installed without any modification to this skill package. The dependency is especially sensitive because it is expected to process Google OAuth client credentials and cached OAuth tokens. The setup guide identifies `client_secret.json`, `youtube.token.json`, `YUTU_CREDENTIAL`, and `YUTU_CACHE_TOKEN` as credential sources. An attacker-controlled release could therefore read and transmit those secrets in addition to executing arbitrary act ...[truncated 1734 chars]- Remediation
View remediation
Remediation Suggestions
- Pin
@eat-pray-ai/yututo a specifically reviewed version rather than allowing the package manager to resolve the current release. - Replace
github.com/eat-pray-ai/yutu@latestwith an immutable, reviewed version or commit. - Link binary downloads to a specific release rather than
releases/latest. - Publish SHA-256 or stronger checksums for every supported binary and instruct users to verify them before execution.
- Prefer cryptographically signed releases and document signature verification using a trusted publisher key.
- Identify the expected package publisher and official package-manager repository so users can detect package substitution or similarly named packages.
- Review new dependency versions before updating the pinned release, including installation scripts, transitive dependencies, and release provenance.
- Recommend installation in an isolated, least-privileged environment instead of an elevated global context where practical.
- Document the minimum OAuth scopes required for activity listing and discourage granting broader YouTube permissions.
- Require restrictive filesystem permissions for
client_secret.jsonandyoutube.token.json, and advise users not to expose credential JSON through shell history, logs, or broadly inherited environment variables. - Provide token revocation and rotation instructions for users who suspect that an installed CLI release was compromised.
- Pin
