T08 · Insecure Dependencies
- Location
SKILL.md:3- Finding
Unpinned Third-Party npm Package Executes Unreviewed Code
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 3 and 13
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
yaml metadata: {"clawdbot":{"emoji":"🖼️","requires":{"bins":["clawvisual"]},"install":[{"id":"npm","kind":"npm","package":"clawvisual","bins":["clawvisual"],"label":"Install clawvisual (npm)"}]}}bash npm install -g clawvisualTechnical Analysis
The Skill installs the third-party
clawvisualnpm package without specifying an exact version or integrity hash. The package's source code, package manifest, and lockfile are not included in the audited project, so its installation hooks and runtime behavior cannot be verified from the available artifact.Running
npm install -g clawvisualresolves whichever package version is current under that npm package name. npm packages may execute package-controlled lifecycle scripts during installation and install executable commands. The global installation scope also makes the resulting command available outside this individual Skill invocation.This creates a supply-chain exposure: a compromised maintainer account, malicious package release, or unexpected future package update could alter the code executed by users without requiring any change to
SKILL.md. The documentation later directs users to provide API keys to this unaudited executable, increasing the potential sensitivity of a compromised dependency.The audit found no evidence that the current package is malicious. The issue is the Skill's unpinned and unverifiable trust in an externally maintained executable dependency.
Attack Path
- An attacker compromises the npm package, its maintainer account, or its release process and publishes a malicious version under the
clawvisualpackage name. - A user or Agent follows the installation instruction in
SKILL.md:bash npm install -g clawvisual - npm resolves ...[truncated 1159 chars]
- An attacker compromises the npm package, its maintainer account, or its release process and publishes a malicious version under the
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an exact, reviewed version rather than resolving the latest release:
bash npm install --global clawvisual@<reviewed-exact-version> - Record and verify the expected package integrity digest through a lockfile or an equivalent trusted verification mechanism.
- Prefer a project-local installation over a global installation to reduce command replacement and cross-project exposure.
- Review and retain the source code and package metadata corresponding to the pinned release.
- Disable npm lifecycle scripts during installation with
--ignore-scriptsunless they are demonstrably required. If scripts are required, audit each script before permitting execution. - Pin the package by immutable artifact or commit and establish a controlled update process requiring security review.
- Document the expected network endpoints, local credential-storage behavior, and file permissions used by the CLI.
- Store API keys using an operating-system credential manager or another protected secret store rather than plaintext configuration, if supported.
- Run the CLI with least privilege and restrict filesystem and network access where practical.
- Pin the dependency to an exact, reviewed version rather than resolving the latest release:
