T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Global Installation of a Third-Party CLI## Vulnerability Details **File Location**: `SKILL.md`, lines 5 and 14–16 **Vulnerability Type**: Unpinned third-party dependency installed globally **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"openclaw":{"emoji":"🔴","homepage":"https://reddgrow.ai","requires":{"bins":["reddgrow"],"env":["REDDGROW_API_KEY"]},"install":[{"id":"npm","kind":"node","package":"@reddgrow/cli","bins":["reddgrow"],"label":"Install via npm"}],"primaryEnv":"REDDGROW_API_KEY"}} ``` ```bash # Install npm install -g @reddgrow/cli ``` ### Technical Analysis The Skill directs users or agents to install `@reddgrow/cli` globally without specifying an exact package version, lockfile, or integrity hash. Consequently, the code installed at execution time may differ from the code that existed when the Skill was reviewed. npm packages can define lifecycle scripts that execute during installation. The installed CLI also executes with the permissions of the invoking user. Because neither the package source nor a pinned package artifact is included in the audited project, the behavior of installation scripts and the resulting executable cannot be verified from this repository. Global installation increases exposure by placing the executable in a shared command path. This does not prove that the named package is malicious, but it creates a supply-chain trust boundary that is not controlled or reproducible by the Skill. ### Attack Path 1. An attacker compromises the npm package publisher account, the package release process, or another relevant supply-chain component. 2. The attacker publishes a modified version of `@reddgrow/cli` containing a malicious npm lifecycle script or CLI implementation. 3. A user or agent follows the Skill and runs `npm install -g @reddgrow/cli`. 4. npm resolves and installs the attacker-controlled release because no exact version or integrity value is required. 5. Malicious lifecycle code executes during inst ...[truncated 844 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `@reddgrow/cli` to a specific, reviewed version rather than resolving the latest release. 2. Use a project-local installation with a committed lockfile instead of a global installation. 3. Verify package integrity using trusted checksums, npm integrity metadata, signatures, or provenance attestations. 4. Review the package source and all npm lifecycle scripts before approving the dependency. 5. Disable lifecycle scripts during installation where compatible, for example by using npm's script-suppression controls. 6. Execute the CLI in a sandbox or container with minimal filesystem, environment, and network access. 7. Avoid elevated installation and execution. Use a dedicated, least-privileged account where practical. 8. Document an approved version-upgrade and security-review process so dependency changes do not occur silently.
