T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:16
- Finding
- Unpinned and Unauditable npm Package Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 16–24 **Vulnerability Type**: Supply-chain exposure through an unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code ```json "install": [ { "id": "npm-install", "kind": "node", "package": "common-fetcher", "bins": ["common-fetcher"], "label": "Install common-fetcher (npm)" } ] ``` ### Technical Analysis The skill directs OpenClaw to install the `common-fetcher` package from the npm registry without specifying an exact version, package integrity hash, lockfile, or immutable source revision. Consequently, the code installed in the future may differ from the code reviewed when the skill was published. The audited project contains only `SKILL.md`; it does not include the npm package implementation, package manifest, lockfile, or vendored source. The behavior of the installed executable and any npm lifecycle scripts therefore cannot be verified from the supplied artifact. This creates a supply-chain risk if the package is compromised through account takeover, malicious publication, package ownership transfer, or registry compromise. This finding does not establish that the current npm package is malicious; it establishes that the skill trusts mutable, externally hosted code without sufficient version or integrity controls. ### Attack Path 1. An attacker gains the ability to publish a malicious release of the `common-fetcher` npm package, such as through maintainer account compromise or package ownership takeover. 2. The malicious release adds an npm lifecycle script, modifies the `common-fetcher` executable, or introduces a malicious transitive dependency. 3. A user or automated OpenClaw installation process loads this skill and processes the declared npm installation instruction. 4. Because no exact version or integrity value is specified, the package manager resolves the attacker-controlled release. 5. Malicious lifecycle code may execute d ...[truncated 840 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the dependency to an exact, security-reviewed version rather than allowing mutable registry resolution. 2. Verify the downloaded package using a trusted integrity digest or lockfile committed with the skill. 3. Include the package source in the reviewed artifact, or reference an immutable, verified source revision so its implementation can be audited. 4. Review the package's direct and transitive dependencies, published files, executable entry points, and npm lifecycle scripts before installation. 5. Disable npm lifecycle scripts during installation where they are unnecessary, for example by using an installation mode equivalent to `--ignore-scripts`. 6. Run installation and execution under a dedicated least-privileged account with restricted filesystem access, minimal environment variables, and controlled network access. 7. Monitor package ownership and release changes, and require a new security review before updating the pinned version. ]]>
