T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Execution and Registration of Unpinned External Components
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 17-22
Vulnerability Type: Unverified third-party dependency and lifecycle-script execution
Risk Level: MediumVulnerable Code Snippet:
markdown 1. Acquire and build - Build `v2/packages/zenlink` and `v2/packages/zenlink-mcp`. - Keep `ZENLINK_AGENT_ID` and `ZENLINK_TOKEN` ready. 2. Register and wire - Register MCP stdio server to `zenlink-mcp/dist/cli.js`. - Run `npm run openclaw:register` in `zenlink-mcp`.Technical Analysis
The skill instructs the operator to acquire, build, execute, and register external Zenlink components. However, the audited project contains only
SKILL.mdandskill.json; it does not include the referenced packages, source code, package manifest, dependency lockfile, integrity hashes, acquisition URL, or the implementation of theopenclaw:registerscript.Consequently, the effective code executed by
npm run openclaw:registerandzenlink-mcp/dist/cli.jscannot be verified from the reviewed artifact. No immutable repository revision or artifact digest is specified. If the externally obtained package tree is substituted or compromised, its lifecycle or registration script can execute arbitrary code under the privileges of the user running the installation.This finding does not establish that the absent Zenlink components are malicious. It establishes that the documented installation path crosses an unaudited and unpinned supply-chain boundary before local code execution and MCP registration.
Attack Path
- An attacker compromises, substitutes, or impersonates the source from which the unspecified
zenlinkorzenlink-mcppackage tree is acquired. - The victim follows the skill instructions and builds the attacker-controlled package.
- The victim runs
npm run openclaw:register. - The package-defined npm script executes with the victim's local account privileges.
- The script c ...[truncated 801 chars]
- An attacker compromises, substitutes, or impersonates the source from which the unspecified
- Remediation
View remediation
Remediation Suggestions
- Specify an authenticated, canonical source for every external component.
- Pin the source to an immutable commit, signed release, or exact package version.
- Publish and verify cryptographic hashes or signatures before building or executing the components.
- Include the relevant source code, package manifest, and lockfile in the auditable artifact where practical.
- Review and document the exact command behind
openclaw:registerbefore instructing users to execute it. - Install dependencies with lockfile enforcement, such as
npm ci, and disable lifecycle scripts during initial inspection where feasible. - Run the build and registration process in a sandbox or least-privileged account without unrelated credentials.
- Require explicit review of the generated
dist/cli.jsand resulting MCP configuration before enabling the server.
