T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned Third-Party npm CLI Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 13-25
Vulnerability Type: Unpinned third-party dependency
Risk Level: Mediumyaml dependencies: - name: "toliuweijing/draft-cli" type: "other" url: "https://clawhub.ai/toliuweijing/draft-cli" requires: bins: - "draft" install: - id: "npm" kind: "node" package: "@innosage/draft-cli" bins: - "draft" label: "Install draft-cli (npm)"Technical Analysis
The skill directs the environment to install and execute the external npm package
@innosage/draft-cli, but it does not pin the package to an exact audited version or specify an integrity hash. Consequently, a later installation may resolve to package content that differs from the version reviewed when this skill was published.This creates a supply-chain trust boundary: the effective executable behavior is controlled partly by the npm package publisher and package-distribution infrastructure rather than solely by the audited project. The separate dependency reference to
toliuweijing/draft-clialso provides no immutable revision or content digest.This finding does not establish that the current dependency is malicious. The vulnerability is the absence of controls ensuring that the installed dependency remains the exact artifact that was reviewed.
Attack Path
- An attacker compromises the npm publisher account, package repository, or another relevant package-distribution component.
- The attacker publishes a malicious release under the trusted
@innosage/draft-clipackage name. - A user installs the dependency according to the skill metadata, with no exact version or integrity constraint.
- Package resolution retrieves the attacker-controlled release.
- The malicious package may execute through installation lifecycle scripts or when the documented
draftcommands are invoked. - The payload runs with the permissions of ...[truncated 657 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
@innosage/draft-clito an exact, reviewed version rather than relying on unconstrained package resolution. - Enforce a lockfile and verified npm integrity digest for the selected package artifact.
- Pin the ClawHub dependency to an immutable release or commit and verify its content hash.
- Disable npm lifecycle scripts during installation when they are unnecessary, or explicitly audit every required lifecycle script.
- Verify publisher provenance and package signatures where supported.
- Run the CLI in a least-privileged isolated environment with access limited to the data and network destinations required for Draft operations.
- Establish an update process that re-audits dependency changes before advancing the pinned version.
- Pin
