T08 · Insecure Dependencies
- Location
references/setup.md:30- Finding
Unpinned Third-Party Executables Handle Sensitive OAuth Credentials
- Content
View full analysis
Vulnerability Details
File Location:
references/setup.md, lines 30-54; related package declaration inSKILL.md, lines 18-21
Vulnerability Type: Supply-chain exposure through unpinned executable dependencies
Risk Level: MediumVulnerable Code
From
references/setup.md, lines 30-54:bash ## 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 Related declaration in `SKILL.md`, lines 18-21: ```yaml install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu]Technical Analysis
The installation instructions do not pin an audited package version, immutable source commit, or release artifact. The Go instruction explicitly uses
@latest, the binary link resolves through the mutable/releases/latestendpoint, and the npm declaration has no version constraint. No checksum or cryptographic-signature verification is documented.This creates a supply-chain trust boundary in which the executable installed at audit time can differ from the executable installed later. The risk is amplified because the installed
yutubinary is subsequently given access to OAuth client credentials and cached YouTube tokens throughclient_secret.json,youtube.token.json,YUTU_CREDENTIAL, andYUTU_CACHE_TOKEN.The audit did not establish that the current upstream package is malicious. The vulnerability is the unsafe, mutable dependency acquisition process and the absence of artifact verification.
Attack Path
- An attacker compromises an upstream package account, release pipeline, package- ...[truncated 1392 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the npm package to a specific audited version rather than resolving the current default version.
- Replace
go install github.com/eat-pray-ai/yutu@latestwith an immutable release tag or, preferably, an audited commit digest. - Replace the mutable
/releases/latestdownload with a version-specific artifact URL. - Publish SHA-256 checksums and cryptographic signatures for every binary, and document mandatory verification before installation.
- Document the exact trusted Homebrew tap and Winget package identifier, including publisher verification.
- Use lockfiles or equivalent integrity metadata where the installation mechanism supports them.
- Run the CLI with least privilege and never require administrator rights unless strictly necessary.
- Request only the minimum required Google OAuth scopes.
- Store credential and token files with owner-only filesystem permissions, keep them outside shared directories, and exclude them from version control.
- Establish a dependency-update review process that verifies source changes, release provenance, checksums, and signatures before changing the pinned version.
