T08 · Insecure Dependencies
- Location
scripts/build.sh:3- Finding
Unverified External Project and Unsafe npm Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
scripts/build.sh:3-5andSKILL.md:8-13
Vulnerability Type: Supply-chain execution through an unaudited external project
Risk Level: MediumVulnerable Code
scripts/build.sh:3-5:bash cd /home/umbrel/.openclaw/workspace/deal-analyst/paragon-mls-mcp npm install npm run buildRelated MCP configuration in
SKILL.md:8-13:yaml mcp: paragon-mls: command: node args: - /home/umbrel/.openclaw/workspace/deal-analyst/paragon-mls-mcp/dist/index.jsTechnical Analysis
The build script changes into a fixed directory outside the audited project and runs
npm installfollowed by an externally defined npm build script. The external project's package manifest, lockfile, dependency sources, lifecycle scripts, source code, and build command are not included in the audited package.By default,
npm installcan execute dependency lifecycle hooks such aspreinstall,install, andpostinstall. The subsequentnpm run buildexecutes whatever command the external project's package manifest defines. The resultingdist/index.jsis then launched as the MCP server according toSKILL.md.This creates an unverified supply-chain boundary: the effective executable behavior can change when the external directory, package metadata, dependency resolution, or generated build artifact changes, without any modification to this Skill.
Attack Path
- An attacker compromises or replaces the external
paragon-mls-mcpproject, its package metadata, or one of its resolved npm dependencies. - The attacker adds malicious behavior to an npm lifecycle hook, the
buildscript, application source code, or a dependency. - A user or automation process invokes
scripts/build.sh. npm installexecutes the compromised lifecycle code, ornpm run buildexecutes the malicious build command.- The generated `/home/umbrel/.openclaw/work ...[truncated 862 chars]
- An attacker compromises or replaces the external
- Remediation
View remediation
Remediation Suggestions
- Include the MCP implementation,
package.json, and dependency lockfile within the reviewed and version-controlled project, or pin the external project to a verified immutable revision. - Replace
npm installwithnpm ciso installation strictly follows a committed lockfile. - Use
npm ci --ignore-scriptswhen dependency lifecycle scripts are not required. If scripts are necessary, audit and explicitly allow only the required scripts. - Pin dependency versions and integrity hashes, review transitive dependencies, and use automated dependency and provenance scanning.
- Avoid relying on a mutable absolute path outside the Skill package. Resolve the executable from a controlled, validated installation directory.
- Verify the integrity or signature of the external project and generated
dist/index.jsbefore execution. - Run installation, compilation, and the MCP server in a restricted environment with minimal filesystem, credential, and network access.
- Document the external trust boundary and ensure changes to the MCP implementation receive the same security review as changes to the Skill.
- Include the MCP implementation,
