T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:17
- Finding
- Execution and Registration of Unpinned External Components## Vulnerability Details **File Location**: `SKILL.md`, lines 17-22 **Vulnerability Type**: Unverified third-party dependency and lifecycle-script execution **Risk Level**: Medium **Vulnerable 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.md` and `skill.json`; it does not include the referenced packages, source code, package manifest, dependency lockfile, integrity hashes, acquisition URL, or the implementation of the `openclaw:register` script. Consequently, the effective code executed by `npm run openclaw:register` and `zenlink-mcp/dist/cli.js` cannot 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 1. An attacker compromises, substitutes, or impersonates the source from which the unspecified `zenlink` or `zenlink-mcp` package tree is acquired. 2. The victim follows the skill instructions and builds the attacker-controlled package. 3. The victim runs `npm run openclaw:register`. 4. The package-defined npm script executes with the victim's local account privileges. 5. The script c ...[truncated 801 chars]
- 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:register` before 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.js` and resulting MCP configuration before enabling the server.
