T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:24
- Finding
- Globally Installed Third-Party MCP Package Executes Outside the Audited Codebase## Vulnerability Details **File Location**: `SKILL.md`, lines 24-28 **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium **Complete Code Snippet**: ```bash npm install -g vestige-mcp-server@2.8.0 which vestige-mcp # macOS / Linux where vestige-mcp # Windows ``` The same installation instruction is repeated in `README.md`, lines 18-23. The helper also recommends this installation when the executable is unavailable in `vmem`, lines 13-14: ```bash echo "vestige-mcp not on PATH. Install with: npm install -g vestige-mcp-server@2.8.0" >&2 echo "Then re-open this shell so command -v vestige-mcp resolves." >&2 ``` ### Technical Analysis The Skill directs users to install `vestige-mcp-server@2.8.0` globally from the npm registry and subsequently execute the package-provided `vestige-mcp` binary. Although the dependency version is pinned, the project does not include the package source, a dependency lockfile, an integrity hash, a signature, or a vendored executable that would allow the installed implementation to be verified as part of this audit. npm packages can execute lifecycle scripts during installation. A global installation also exposes the package-provided executable to the user's environment. The installed binary is then launched as an MCP server by OpenClaw or by the included `vmem` helper. Consequently, the effective executable behavior depends on an external supply-chain component that is outside the reviewed project. No evidence was found that the included project files themselves are malicious, and the audit did not establish that the referenced npm release is compromised. The risk arises from trusting and globally executing an external package without project-supplied integrity verification or isolation. ### Attack Path 1. An attacker compromises the referenced npm package release, its publishing account, registry delivery path, or an unresolved transitiv ...[truncated 1300 chars]
- Remediation
- ## Remediation Suggestions 1. Avoid recommending an unrestricted global installation. Prefer a project-local installation with a committed lockfile and deterministic dependency resolution. 2. Publish and verify cryptographic checksums or signed provenance for the expected package archive and executable before running them. 3. Vendor the reviewed executable or source when feasible so that the implementation executed by the Skill matches the audited artifact. 4. Install with lifecycle scripts disabled where compatible, such as `npm install --ignore-scripts`, and explicitly perform only required build steps after review. 5. Pin the complete transitive dependency graph rather than only the top-level package version. 6. Run the MCP server under a dedicated, least-privileged account or sandbox with narrowly scoped filesystem access and no unnecessary network access. 7. Provide the server only the environment variables it requires; do not inherit credentials or unrelated secrets. 8. Add an update process that requires source review, integrity verification, and regression testing before changing the pinned release.
