T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:8
- Finding
- Unpinned npm Dependency Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:8-15` **Vulnerability Type**: Unpinned third-party package installation **Risk Level**: Medium **Vulnerable code snippet:** ```yaml metadata: openclaw: homepage: https://github.com/BuiltByEcho/vaultline requires: bins: - node - npm install: - id: vaultline-sdk kind: node package: "@builtbyecho/vaultline-sdk" bins: [] label: Install Vaultline SDK from npm ``` ### Technical Analysis The installation configuration identifies `@builtbyecho/vaultline-sdk` without an exact version or package integrity hash. Consequently, the package version installed may vary over time according to registry state and package-manager resolution behavior. This creates a supply-chain trust boundary that is not fixed to the version reviewed with the Skill. If the npm account, package, organization namespace, publishing credentials, or registry resolution process is compromised, a modified release could be delivered during a later installation. Depending on npm configuration, package lifecycle scripts may execute during installation. The audit found no evidence that the named package is currently malicious. The vulnerability is the absence of controls that ensure installations reproduce a specifically reviewed artifact. ### Attack Path 1. An attacker compromises the package publisher, publishing credentials, organization namespace, or relevant package-distribution channel. 2. The attacker publishes a modified version of `@builtbyecho/vaultline-sdk`. 3. A user or agent installs the Skill dependency using the unversioned package declaration. 4. npm resolves the dependency to the attacker-controlled release rather than a previously reviewed version. 5. Malicious package code or an installation lifecycle script executes with the privileges of the account running npm. 6. The package may access files, e ...[truncated 558 chars]
- Remediation
- ## Remediation Suggestions - Pin the SDK to an exact, reviewed version rather than relying on a floating package reference. - Use a lockfile with package integrity metadata and verify it during installation. - Configure npm to use an explicitly trusted registry and reject unexpected registry substitutions. - Review the pinned package's source, transitive dependencies, and lifecycle scripts before release. - Disable lifecycle scripts during installation when they are not required, such as through an appropriate `ignore-scripts` policy. - Automate dependency vulnerability and provenance checks while requiring manual review before updating the pinned version. - Run installation and subsequent SDK operations in a least-privileged, isolated environment without unnecessary wallet secrets or host filesystem access.
