T08 · Insecure Dependencies
Warning
- Location
- references/setup.md:38
- Finding
- Unpinned Third-Party CLI Installation Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `references/setup.md:38-52`; related package declaration at `SKILL.md:17-20` **Vulnerability Type**: Unpinned and unverifiable third-party dependencies **Risk Level**: Medium ### Vulnerable Code `references/setup.md:38-52`: ```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 ``` The same guide also recommends downloading an unverified prebuilt binary: ```markdown 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:17-20`: ```yaml install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu] ``` ### Technical Analysis The installation instructions resolve and execute mutable third-party artifacts without pinning an audited version, immutable commit, checksum, or cryptographic signature. The Go instruction explicitly uses `@latest`, while the npm, Homebrew, Winget, and release-page instructions similarly select whichever artifact is current when installation occurs. Consequently, the executable installed by a user can differ from the version that was reviewed. If the upstream repository, package registry account, release pipeline, package-manager manifest, or maintainer credentials are compromised, an attacker could publish a malicious version under the legitimate package identity. A dependency-confusion or typosquatting condition was not observed in the audited files; the confirmed weakness is the absence of immutable version and integrity controls. This risk is amplified because the CLI requires access to Google OAuth material through `YUTU_CREDENTIAL`, `YUTU_CACHE_TOKEN`, `client_secret.json`, and `youtube.token.json`. A compromised executable would run in the same user ...[truncated 1881 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `yutu` to a specifically reviewed version rather than relying on the current default or `@latest`. 2. For Go installation, use an explicit version such as `go install github.com/eat-pray-ai/yutu@vX.Y.Z`. 3. For npm installation, specify an exact version and avoid version ranges, for example `npm install --global @eat-pray-ai/yutu@X.Y.Z`. 4. Pin the package version in the `SKILL.md` installation metadata if the platform supports version constraints. 5. Publish SHA-256 checksums for prebuilt binaries and require users or automated installers to verify them before execution. 6. Prefer cryptographically signed releases and document signature verification using a trusted, separately distributed public key. 7. Pin package-manager formulas or manifests to reviewed versions where supported, and verify their provenance and integrity metadata. 8. Avoid global installation where practical. Run the CLI in a restricted environment with only the minimum filesystem and network access required. 9. Grant the narrowest possible Google OAuth scopes and protect token files with owner-only filesystem permissions. 10. Establish a controlled upgrade process in which new versions are reviewed, integrity-verified, and explicitly approved before the documented pin is changed.
