T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:75
- Finding
- Unnecessary and Unpinned Third-Party SDK Dependency Expands the Supply-Chain Attack Surface## Vulnerability Details **File Location**: `SKILL.md:75-77`, `clawhub-manifest.json:27-29`, `skill.json:10-12` **Vulnerability Type**: Unnecessary third-party dependency with a mutable version range **Risk Level**: Medium ### Vulnerable Code `SKILL.md:75-77` ```bash # Install dependencies npm install @openclaw/sdk ``` `clawhub-manifest.json:27-29` ```json "dependencies": { "@openclaw/sdk": "^2026.3.2" }, ``` `skill.json:10-12` ```json "dependencies": { "@openclaw/sdk": "^2026.3.2" } ``` ### Technical Analysis The project instructs users to install `@openclaw/sdk` and declares it with the caret range `^2026.3.2`. However, the executable implementation never imports this package. Instead, `index.js:1-8` defines a local SDK simulation, and its only actual imports at `index.js:10-11` are the built-in Node.js `fs` and `path` modules. The unused dependency unnecessarily enlarges the package's software supply chain. The caret range permits npm to resolve later semantically compatible releases that were not necessarily included in the reviewed artifact. It may also resolve transitive dependencies. If the package, a permitted future version, or one of its transitive dependencies becomes compromised, package installation could introduce attacker-controlled code. This audit found no evidence that the currently declared SDK is malicious. The risk arises from requiring an unnecessary, externally maintained, and non-exact dependency. ### Attack Path 1. A user follows the installation instructions in `SKILL.md` or installs the skill through tooling that processes its dependency manifest. 2. npm resolves `@openclaw/sdk` using the mutable `^2026.3.2` range, together with any transitive dependencies. 3. A compromised compatible release or transitive package is selected. 4. If the compromised package defines an installation lifecycle script, npm may execute it with the privileges of the user performing t ...[truncated 728 chars]
- Remediation
- ## Remediation Suggestions 1. Remove `@openclaw/sdk` from `clawhub-manifest.json` and `skill.json`, and remove the corresponding `npm install` instruction, because the current implementation does not use the package. 2. If SDK integration is required, import and use only the necessary API rather than retaining both a local simulation and an external dependency. 3. Pin the dependency to an audited exact version instead of using a caret range. 4. Commit a valid npm lockfile containing resolved versions and integrity hashes. 5. Review direct and transitive dependencies with automated vulnerability and provenance checks before publication. 6. Where operationally appropriate, install dependencies with lifecycle scripts disabled and explicitly allow only reviewed packages that require installation scripts. 7. Correct the missing comma after the version field in `skill.json` so security and installation tooling can parse the manifest reliably.
