T08 · Insecure Dependencies
- Location
SKILL.md:15- Finding
Mutable and Unpinned npm Packages Are Executed Locally
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:15-16, with additional unversioned execution references atSKILL.md:47,SKILL.md:64,SKILL.md:72,SKILL.md:105,SKILL.md:237, andSKILL.md:258; corresponding instructions appear atREADME.md:23,README.md:28,README.md:38, andREADME.md:62
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumVulnerable code:
yaml install: | npm install -g protect-mcp@latest @scopeblind/passport@latestOther unpinned package executions include:
bash npx @scopeblind/passport wrap --runtime openclaw --config ./openclaw.json --policy email-safe npx protect-mcp init npx @veritasacta/verify --self-testTechnical Analysis
The installation procedure explicitly selects the mutable
latestrelease of two npm packages. The documentednpxcommands also omit exact package versions. Consequently, the code executed by users is not fixed to the version that existed when this skill was audited.npm packages and their transitive dependencies can execute JavaScript through CLI entry points and installation lifecycle hooks. If a maintainer account, package release process, dependency, or registry resolution path is compromised, a later package version can execute arbitrary code without requiring any modification to this repository.
Global installation increases exposure because the package is installed into the user's global npm environment. No lockfile, integrity digest, vendored dependency, or reproducible verification procedure is supplied by this project.
Attack Path
- An attacker compromises one of the referenced npm packages, its maintainer account, publishing token, or a transitive dependency.
- The attacker publishes a malicious release under the version selected by
latest, or otherwise causes an unversionednpxcommand to resolve to malicious package content. - A user follows the documented installation, in ...[truncated 921 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace
@latestand every unversionednpxinvocation with exact, audited package versions. - Use project-local dependencies rather than global installation wherever possible.
- Commit a lockfile generated by a supported npm version and enforce deterministic installation with
npm ci. - Verify package tarball integrity and provenance before execution. Record expected integrity hashes and validate signed npm provenance where available.
- Disable lifecycle scripts during dependency retrieval when they are unnecessary, then invoke only reviewed entry points.
- Audit and pin transitive dependencies, not only the three direct packages.
- Establish a controlled dependency-upgrade process requiring security review before changing pinned versions or hashes.
- Document the exact reviewed package versions so users can distinguish audited releases from later mutable releases.
- Replace
