T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:17
- Finding
- Unpinned Third-Party CLI Installation from Mutable Sources## Vulnerability Details **File Location**: `SKILL.md:17-21`; `references/setup.md:35-54` **Vulnerability Type**: Unpinned and unverifiable third-party executable dependency **Risk Level**: Medium The skill declares and recommends installation of the third-party `yutu` CLI without pinning an audited version or requiring artifact integrity verification. **Relevant code from `SKILL.md:17-21`:** ```yaml homepage: https://github.com/eat-pray-ai/yutu install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu] ``` **Relevant code from `references/setup.md:35-54`:** ```bash ```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. ``` ### Technical Analysis The npm package declaration has no version constraint, and the setup guide explicitly uses `@latest` and the mutable `releases/latest` endpoint. No checksum, digital signature, immutable commit, lockfile, or other integrity control is specified. Consequently, the executable installed by a user can differ from the version that existed when the skill was audited. The global npm command also installs package-controlled executable content in the user's environment. Package-manager formulae and release downloads similarly depend on mutable external repositories and their current state. This is a supply-chain weakness rather than evidence that the current `yutu` package is malicious. The documented GitHub organization and npm scope are consistent, and the reviewed files contain no direct evidence of typosquatting or intentional malicious behavior. ### Attack Path 1. An attacker compromises the upstream maintainer account, package re ...[truncated 1454 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `@eat-pray-ai/yutu` to a specific audited version rather than allowing automatic resolution to the newest release. 2. Replace `go install github.com/eat-pray-ai/yutu@latest` with a fixed semantic version or immutable commit hash. 3. Replace `releases/latest` with a version-specific release URL. 4. Publish SHA-256 checksums for downloaded binaries and require users to verify them before execution. 5. Prefer signed releases and document signature verification using a trusted maintainer key or a provenance framework such as Sigstore. 6. Pin package-manager formula versions where supported and document the expected package source. 7. Avoid global npm installation where practical; use a project-local, locked dependency or an isolated execution environment. 8. Record the audited dependency version and periodically review it before updating. 9. Restrict OAuth scopes to the minimum necessary and protect credential and token files with least-privilege filesystem permissions.
