T08 · Insecure Dependencies
Error
- Location
- SKILL.md:15
- Finding
- Unpinned External Runtime Creates a Mutable Supply-Chain Boundary<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:15-16`; also documented in `README.md:14-24` **Vulnerability Type**: Unpinned third-party package and repository installation **Risk Level**: High ### Vulnerable Code Snippet From `SKILL.md:15-16`: ```markdown - **npm:** `npm install @letsping/openclaw-skill` (then register the skill in your OpenClaw workspace so it loads `letsping_ask`). - **Clone:** `git clone https://github.com/CordiaLabs/openclaw-skill ~/.openclaw/workspace/skills/letsping && cd ~/.openclaw/workspace/skills/letsping && npm install`. ``` The corresponding installation instructions in `README.md:14-24` are: ```markdown **Option A — npm (recommended):** ```bash npm install @letsping/openclaw-skill ``` Then register the skill in your OpenClaw workspace so the gateway loads the `letsping_ask` tool. **Option B — clone into workspace:** ```bash git clone https://github.com/CordiaLabs/openclaw-skill ~/.openclaw/workspace/skills/letsping cd ~/.openclaw/workspace/skills/letsping npm install ``` ``` ### Technical Analysis Both supported installation methods retrieve mutable external content: - The npm command does not specify an exact package version or integrity value, so it normally resolves to the package version currently selected by the registry and dependency resolver. - The Git command clones the repository's current default branch rather than an audited commit or signed release tag. - The subsequent `npm install` may retrieve additional transitive dependencies and may execute package lifecycle scripts. The audited artifact contains only documentation and does not include the runtime implementation of `letsping_ask`. Consequently, the effective runtime behavior cannot be verified from this project. Code installed later may differ from the code that existed when these instructions were reviewed. This is a supply-chain vulnerability because the security of the resulting OpenClaw environment depends on mutable package-reg ...[truncated 1467 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the npm package to an explicitly reviewed version, for example: ```bash npm install --save-exact @letsping/openclaw-skill@X.Y.Z ``` 2. Publish and verify package integrity hashes or signed provenance before installation. 3. For Git installations, pin an audited immutable commit rather than cloning the current default branch: ```bash git clone https://github.com/CordiaLabs/openclaw-skill.git cd openclaw-skill git checkout --detach <audited-commit-sha> ``` 4. Include a lockfile that pins all transitive dependencies and enforce lockfile integrity with `npm ci`. 5. Disable lifecycle scripts during dependency acquisition when they are not required: ```bash npm ci --ignore-scripts ``` 6. Document any lifecycle scripts that are required and review them before enabling execution. 7. Include the runtime source in the auditable artifact or link the documentation to a specific source commit corresponding to the pinned package release. 8. Run the skill with a dedicated low-privilege operating-system account and expose only the environment variables and filesystem paths it requires. ]]>
