T08 · Insecure Dependencies
- Location
SKILL.md:9- Finding
Unpinned Global Installation of a Third-Party npm Executable
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 9-18
Vulnerability Type: Unpinned third-party dependency installed globally
Risk Level: MediumVulnerable Code
yaml "openclaw": { "emoji": "🔧", "requires": { "bins": ["craftclose"], "nodePackages": ["craftclose"] }, "install": [ { "id": "node", "kind": "node", "package": "craftclose",The installation instructions at lines 49-53 also explicitly install the latest available package:
bash npm install -g craftcloseTechnical Analysis
The Skill installs
craftclosefrom npm without specifying an exact version or integrity value. Consequently, the executable installed during a future Skill setup may differ from the version originally reviewed. Global installation also makes the executable available throughout the user's environment and runs npm installation behavior with the permissions of the installing account.This repository contains only
SKILL.md; it does not include the package implementation, a lockfile, or integrity metadata. Therefore, the audit cannot verify the package's lifecycle scripts, credential handling, SSH behavior, or claimed security controls. This finding does not establish that the current npm package is malicious, but it creates a mutable supply-chain boundary that could deliver compromised code after review.Attack Path
- An attacker compromises the npm publisher account, package release process, or another component used by a future
craftcloserelease. - The attacker publishes a modified version under the same package name.
- A user follows the Skill instructions or the OpenClaw installer resolves the unversioned dependency.
- npm downloads and globally installs the attacker-controlled release.
- Package lifecycle scripts or subsequent CLI execution run with the installing user's permissions.
- The compromised ...[truncated 562 chars]
- An attacker compromises the npm publisher account, package release process, or another component used by a future
- Remediation
View remediation
Remediation Suggestions
- Pin
craftcloseto a specific, audited version in both the OpenClaw metadata and installation documentation. - Use npm integrity verification or a lockfile where the installation framework supports it.
- Avoid global installation when possible; install the package in an isolated project, container, or restricted service account.
- Review and publish the executable source corresponding to the pinned version so its SSH, secret-handling, and command-execution behavior can be audited.
- Disable npm lifecycle scripts during installation when they are unnecessary, then invoke only the reviewed executable.
- Establish an update process that requires security review before changing the pinned package version.
- Pin
