T08 · Insecure Dependencies
Warning
- Location
- references/setup.md:30
- Finding
- Unpinned Third-Party Executables Handle Sensitive OAuth Credentials## Vulnerability Details **File Location**: `references/setup.md`, lines 30-54; related package declaration in `SKILL.md`, lines 18-21 **Vulnerability Type**: Supply-chain exposure through unpinned executable dependencies **Risk Level**: Medium ### Vulnerable 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@latest ``` ### Other platforms Download a prebuilt binary from the [releases page](https://github.com/eat-pray-ai/yutu/releases/latest) and place it in your PATH. ``` 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/latest` endpoint, 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 `yutu` binary is subsequently given access to OAuth client credentials and cached YouTube tokens through `client_secret.json`, `youtube.token.json`, `YUTU_CREDENTIAL`, and `YUTU_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 1. An attacker compromises an upstream package account, release pipeline, package- ...[truncated 1392 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the npm package to a specific audited version rather than resolving the current default version. 2. Replace `go install github.com/eat-pray-ai/yutu@latest` with an immutable release tag or, preferably, an audited commit digest. 3. Replace the mutable `/releases/latest` download with a version-specific artifact URL. 4. Publish SHA-256 checksums and cryptographic signatures for every binary, and document mandatory verification before installation. 5. Document the exact trusted Homebrew tap and Winget package identifier, including publisher verification. 6. Use lockfiles or equivalent integrity metadata where the installation mechanism supports them. 7. Run the CLI with least privilege and never require administrator rights unless strictly necessary. 8. Request only the minimum required Google OAuth scopes. 9. Store credential and token files with owner-only filesystem permissions, keep them outside shared directories, and exclude them from version control. 10. Establish a dependency-update review process that verifies source changes, release provenance, checksums, and signatures before changing the pinned version.
