T08 · Insecure Dependencies
Error
- Location
- SKILL.md:96
- Finding
- Unpinned Third-Party Package Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:4`, `SKILL.md:96-103` **Vulnerability Type**: Unpinned executable dependency and unsafe supply-chain trust **Risk Level**: High ### Evidence ```yaml metadata: {"openclaw":{"emoji":"🚀","install":[{"id":"node","kind":"node","package":"@chenish/zentao-mcp-agent","bins":["zentao-mcp","zentao-cli"],"label":"Install ZenTao AI Assistant"}]}} ``` ```bash # Global CLI installation npm install -g @chenish/zentao-mcp-agent # Install through npx npx skills add @chenish/zentao-mcp-agent ``` ### Technical Analysis The Skill instructs users and the hosting platform to install `@chenish/zentao-mcp-agent` without an exact version, lockfile, or integrity hash. Package resolution can therefore select whichever release is currently associated with the applicable npm distribution tag. The global installation method makes package-provided executables available system-wide for the current environment. Depending on npm configuration, package lifecycle scripts may also run during installation. The `npx` workflow similarly retrieves executable third-party content at installation time. The repository contains only `SKILL.md`; it does not contain the installed package's source code or a checksum that would allow the downloaded artifact to be verified against reviewed code. Consequently, the effective executable implementation can change after this Skill has been audited. ### Attack Path 1. An attacker compromises the npm publisher account, package repository, release workflow, or another part of the package supply chain. 2. The attacker publishes a malicious version under `@chenish/zentao-mcp-agent` or changes the version resolved by the default distribution tag. 3. A user or automation follows the Skill and runs the unpinned `npm install -g` or `npx skills add` command. 4. npm retrieves the attacker-controlled release. 5. Malicious lifecycle or runtime code executes with the privileges of the installing user. 6. ...[truncated 916 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the package to an audited exact version, for example: ```bash npm install --global @chenish/zentao-mcp-agent@X.Y.Z ``` 2. Publish and verify the expected npm integrity digest for the selected package artifact. 3. Use a lockfile where the installation mechanism supports one, and commit it to the reviewed project. 4. Avoid global installation where possible. Install into a dedicated, least-privileged project or isolated runtime. 5. Disable npm lifecycle scripts during installation when they are not required: ```bash npm install --ignore-scripts ``` 6. If lifecycle scripts are required, audit them and document why each script is necessary. 7. Verify that the npm package is produced reproducibly from the referenced source repository and signed through a trusted release process. 8. Run the MCP service with a dedicated operating-system identity and only the filesystem and network permissions required for ZenTao access. 9. Establish a controlled update process so new versions are reviewed before the pinned version is changed. ]]>
