T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned npm Dependencies Permit Unreviewed Supply-Chain Changes
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:10-35
Vulnerability Type: Unpinned third-party dependencies
Risk Level: MediumVulnerable Code
yaml metadata: { "openclaw": { "emoji": "\U0001F4B3", "requires": { "bins": ["node"], "env": ["STRIPE_SECRET_KEY"] }, "install": [ { "id": "npm", "kind": "node", "package": "cashclaw", "bins": ["cashclaw"], "label": "Install CashClaw via npm" } ] } }bash npm install stripeTechnical Analysis
Both documented installation paths resolve npm packages without exact versions or a committed lockfile. The OpenClaw metadata installs the separate
cashclawpackage, while the prerequisites instruct users to install the latest version ofstripe.Consequently, the code executed or imported by a future installation can differ from the components present at audit time. npm packages may also define lifecycle scripts that execute during installation. The implementation of the external
cashclawpackage is not included in this project and could not be reviewed as part of this audit.This is an insecure dependency-management practice rather than evidence that either current package is malicious.
Attack Path
- An attacker compromises the npm account, release process, or upstream repository of a referenced package.
- The attacker publishes a malicious version under the legitimate package name.
- A user or agent follows the installation metadata or runs
npm install stripe. - npm resolves the newly published, unreviewed version because no exact version or lockfile constrains dependency resolution.
- Malicious lifecycle or runtime code executes with the privileges of the installing or invoking user.
- If Stripe credentials are present in the process envi ...[truncated 631 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version rather than a version range or implicit latest release.
- Add and commit a package manifest and lockfile containing npm integrity hashes.
- Use
npm ciin automated installation paths so dependency resolution strictly follows the reviewed lockfile. - Remove the
cashclawpackage installation declaration if it is not required by this Skill. - If
cashclawis required, independently audit its source, transitive dependencies, and lifecycle scripts before pinning it. - Consider installing with lifecycle scripts disabled where compatible, then explicitly run only reviewed build steps.
- Use a restricted Stripe key with only the API permissions required by this Skill, and avoid exposing the key during package installation.
- Add dependency scanning and controlled update review to the release process.
