T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:4
- Finding
- Unpinned Third-Party Packages Permit Unreviewed Supply-Chain Code Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:4` and `SKILL.md:261-270` **Vulnerability Type**: Unpinned npm dependencies and mutable package resolution **Risk Level**: Medium ### Vulnerable Code At `SKILL.md:4`, the globally installed plugin has no fixed version: ```yaml metadata: {"openclaw":{"emoji":"🧠","install":[{"id":"npm","kind":"node","package":"openclaw-penfield","global":true,"label":"Install Penfield plugin"}],"requires":{"config":["plugins.entries.openclaw-penfield.enabled"]}}} ``` At `SKILL.md:261-270`, the recommended MCP configuration explicitly uses the mutable `latest` version: ```json { "mcpServers": { "penfield": { "command": "npx", "args": [ "mcp-remote@latest", "https://mcp.penfield.app/" ] } } } ``` ### Technical Analysis The installation metadata identifies `openclaw-penfield` without an exact version or integrity hash and requests global installation. The alternative MCP configuration invokes `mcp-remote@latest` through `npx`. These references are mutable: the code downloaded and executed in a future installation may differ from the version available when this Skill was audited. The project contains only `SKILL.md`, so the executable implementations and their transitive dependencies cannot be reviewed from the supplied artifact. Global installation is broader than necessary for ordinary per-project execution. It places package-provided executables in a shared environment and can increase the number of projects or Agent sessions affected by a compromised release. ### Attack Path 1. An attacker compromises the publisher account, package registry entry, release pipeline, or a transitive dependency for `openclaw-penfield` or `mcp-remote`. 2. The attacker publishes a malicious version that becomes the version selected by the unpinned reference or the `latest` tag. 3. A user follows the Skill installation instructions or starts the configured MCP server. 4. npm or `npx ...[truncated 972 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `openclaw-penfield` and `mcp-remote` to exact, reviewed versions rather than relying on an omitted version or `@latest`. 2. Record and verify package integrity hashes using an npm lockfile or an equivalent reproducible dependency manifest. 3. Avoid global installation unless it is operationally required. Prefer a project-local dependency executed from a locked environment. 4. Replace `npx mcp-remote@latest` with a locally installed, pinned executable. 5. Review and audit the plugin implementation and its transitive dependency tree before deployment. 6. Enable package provenance verification, dependency vulnerability scanning, and controlled update review. 7. Run the plugin or MCP bridge in a sandbox with restricted filesystem, environment-variable, and network access. 8. Document a trusted update procedure so package upgrades require explicit review rather than silently changing the executed code. ]]>
