T08 · Insecure Dependencies
Warning
- Location
- references/setup.md:35
- Finding
- Unpinned Third-Party CLI Is Entrusted with YouTube OAuth Credentials## Vulnerability Details **File Location**: `SKILL.md:17-20`; `references/setup.md:35-48,53-56` **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium **Vulnerable code snippets:** `SKILL.md:17-20` ```yaml install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu] ``` `references/setup.md:35-48` ```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 ``` `references/setup.md:53-56` ```markdown | `YUTU_CREDENTIAL` | Path, base64, or JSON of OAuth client secret | `client_secret.json` | | `YUTU_CACHE_TOKEN` | Path, base64, or JSON of cached OAuth token | `youtube.token.json` | | `YUTU_ROOT` | Root directory for file resolution | Current working directory | | `YUTU_LOG_LEVEL` | Log level: `DEBUG`, `INFO`, `WARN`, `ERROR` | `INFO` | ``` ### Technical Analysis The installation instructions retrieve a third-party executable without pinning an audited version or verifying its integrity. The npm command implicitly selects the registry's current version, while the Go installation explicitly selects `@latest`. The Homebrew, Winget, and release-binary alternatives also do not document an immutable version, checksum, or signature verification procedure. This does not prove that the current `yutu` package is malicious. However, it creates a supply-chain trust boundary in which the code executed by users can change after the Skill itself has been reviewed. A compromised maintainer account, package registry entry, release artifact, or future package version could therefore introduce arbitrary code. The risk is increased because the installed CLI is instructed to process `YUTU_CREDENTIAL` and `YUTU_CACHE_TOKEN`, which may contain an OAuth client secret and a cached YouTube access or refresh token. Global installation also ...[truncated 1466 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `@eat-pray-ai/yutu` and the Go module to a specific, reviewed version rather than relying on the current registry version or `@latest`. 2. Where supported, enforce package integrity using lockfiles, registry integrity hashes, signed provenance, or equivalent package-manager verification. 3. Publish SHA-256 checksums and signature-verification instructions for prebuilt release binaries. 4. Document the verified publisher, repository, and expected package identifiers so users can detect dependency-confusion or impersonation attempts. 5. Test and approve dependency upgrades before changing the pinned version. 6. Request only the minimum OAuth scopes needed for listing video categories and clearly document those scopes before authorization. 7. Determine whether category listing can use an API key or unauthenticated public endpoint; if so, avoid exposing reusable OAuth tokens for this operation. 8. Store token files with restrictive filesystem permissions and avoid passing raw credential JSON or tokens through environments where unrelated processes may inspect them. 9. Recommend installation and execution from a non-privileged account, and warn users not to run the global installation or CLI with unnecessary administrative privileges.
