T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Third-Party CLI Installation Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:17-21;references/setup.md:36-53
Vulnerability Type: Unpinned and mutable third-party dependencies
Risk Level: MediumThe Skill installs and executes the third-party
yutuCLI without pinning an audited version, immutable commit, checksum, or cryptographic signature.Vulnerable Code
SKILL.md:17-21:yaml install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu]references/setup.md:36-53: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@latestmarkdown ### 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 and installation command omit an exact version. The Go installation explicitly uses the mutable
@latestreference, while the binary download points to a mutable latest-release URL. Package-manager installations likewise do not identify an audited release.Consequently, the artifact installed when a user follows these instructions can differ from the artifact that existed when the Skill was audited. If the package registry account, source repository, release pipeline, package-manager formula, or publisher credentials are compromised, an attacker could distribute a modified executable under the expected package name. A global npm installation may also run package lifecycle scripts with the installing user's privileges.
This finding does not establish that the current
yutupackage is malicious. It identifies the absence of controls that bind installation to a reviewed artifact.Attack Path
- An attacker compromises an upstream publisher account, package registry entry, source rep ...[truncated 1560 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the npm dependency to a specific audited version, such as
@eat-pray-ai/yutu@X.Y.Z, rather than allowing implicit latest-version resolution. - Replace
go install github.com/eat-pray-ai/yutu@latestwith an exact release tag or, preferably, an immutable commit. - Replace the mutable
/releases/latestdownload with a version-specific release URL. - Publish SHA-256 checksums for supported binaries and document checksum verification before execution.
- Verify signed release tags, package provenance, or cryptographic artifact signatures where supported.
- Lock package-manager installation instructions to reviewed versions when the relevant manager supports version pinning.
- Review npm lifecycle scripts and use
--ignore-scriptswhere compatible with installation requirements. - Perform installation and initial validation with a non-privileged account in an isolated environment.
- Restrict OAuth scopes to the minimum required for listing membership levels and protect token files with owner-only filesystem permissions.
- Maintain a documented update process in which each new dependency version is reviewed, checksummed, and explicitly approved before the pin is changed.
- Pin the npm dependency to a specific audited version, such as
