T08 · Insecure Dependencies
- Location
SKILL.md:124- Finding
Unpinned Third-Party CLI Installation and Execution
- Content
View full analysis
# drop-in, no install needed ``` ```text The npm package name is **`@wavespeed/cli`**, not `wavespeed`. If global install fails due to permissions, `npx @wavespeed/cli` works identically as a drop-in replacement for all subcommands (just prefix every call with `npx @wavespeed/cli` instead of `wavespeed`). ``` ### Technical Analysis The Skill directs the Agent to install or immediately execute `@wavespeed/cli` without specifying a reviewed version, integrity hash, lockfile, or other verification mechanism. Consequently, npm resolves the package version from the live registry at execution time. The `npx` workflow is especially sensitive because it may download and immediately run package code. A global npm installation can also execute installation lifecycle scripts and makes the package available outside the current project. The comment that global installation may require `sudo` could encourage execution with elevated privileges, although the Skill does not explicitly direct the Agent to use `sudo`. This creates a supply-chain trust boundary in which behavior can change after the Skill has been audited. ### Attack Path 1. An attacker compromises the upstream npm package, a maintainer account, or a subsequently published package version. 2. The attacker publishes malicious CLI code or an installation lifecycle script under the expected package name. 3. The Agent follows the Skill and invokes `npx @wavespeed/cli` or installs the unpinned package globally. 4. npm retrieves the compromised version and executes it with the current user's permissions. 5. The malicious package accesses local data, environment variables, authentication material, or performs ...[truncated 504 chars]- Remediation
View remediation
