T08 · Insecure Dependencies
- Location
SKILL.md:8- Finding
Unpinned Global npm Dependency Creates a Supply-Chain Execution Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:8-11;skill.json:11-17
Vulnerability Type: Unpinned third-party package installed globally
Risk Level: MediumVulnerable code in
SKILL.md:bash npm install -g agent-content-pipeline content init . # Creates folders + global config (in current directory)Vulnerable code in
skill.json:json "install": [ { "id": "npm", "kind": "node", "package": "agent-content-pipeline", "bins": ["content", "content-pipeline"], "label": "Install content (npm)" } ]Technical Analysis
The installation instructions and manifest identify the npm package only by name, without an exact version, package-lock file, registry restriction, or integrity hash. Consequently, installation resolves whichever release the configured npm registry currently serves. The audited project contains only
SKILL.mdandskill.json; it does not contain the dependency's executable implementation, so the behavior and security properties of the installed CLI cannot be verified from this artifact.npm packages can run lifecycle scripts during installation. A global installation can therefore execute package-controlled code under the installing user's account and place executable commands in a globally accessible binary location. The documented workflow subsequently trusts those commands with local content, configuration, and social-platform authentication material.
This finding does not establish that the named package is currently malicious. The vulnerability is the absence of dependency pinning and integrity controls, which allows the effective executable implementation to change after this Skill has been reviewed.
Attack Path
- An attacker compromises the publisher account, npm package, package release process, or registry resolution path for
agent-content-pipeline. - The attacker publishes a malicious release under the sa ...[truncated 1385 chars]
- An attacker compromises the publisher account, npm package, package release process, or registry resolution path for
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to a reviewed exact version, for example
agent-content-pipeline@0.2.3, rather than resolving the latest release. - Record and verify the package's integrity digest through a lockfile or an equivalent immutable integrity mechanism.
- Restrict installation to the expected npm registry and document package provenance verification.
- Prefer a project-local installation over
npm install -gto reduce system-wide exposure and make dependency resolution reproducible. - Review the dependency's source, release artifact, transitive dependencies, and npm lifecycle scripts before approving a version.
- Disable lifecycle scripts during installation where operationally feasible, then explicitly run only reviewed setup steps.
- Execute the CLI with least privilege and isolate it from unrelated files and credentials.
- Keep social-platform credentials in a protected credential store and ensure they are disclosed only to a verified posting process.
- Add automated dependency monitoring and require renewed review whenever the pinned version or integrity digest changes.
- Pin the dependency to a reviewed exact version, for example
