T03 · Remote Payload Retrieval and Execution
- Location
references/INSTALL.md:14- Finding
Unpinned Remote Repository and Dependencies Are Installed and Executed as an MCP Server
- Content
View full analysis
Vulnerability Details
File Location:
references/INSTALL.md:7, 14-25;references/OPENHANDS_MCP_CONFIG.json:4-9;references/OPENCLAW_MCP_CONFIG.json:5-10
Vulnerability Type: Mutable remote payload retrieval and insecure dependency installation
Risk Level: MediumVulnerable Code
references/INSTALL.md:7markdown - a local clone of `https://github.com/xiaojiou176-open/multi-ai-sidepanel`references/INSTALL.md:14-17bash git clone https://github.com/xiaojiou176-open/multi-ai-sidepanel.git cd multi-ai-sidepanel npm installreferences/INSTALL.md:24-25bash npm --prefix /absolute/path/to/multi-ai-sidepanel run mcp:serverreferences/OPENHANDS_MCP_CONFIG.json:4-9json "command": "npm", "args": [ "--prefix", "/absolute/path/to/multi-ai-sidepanel", "run", "mcp:server" ]references/OPENCLAW_MCP_CONFIG.json:5-10json "command": "npm", "args": [ "--prefix", "/absolute/path/to/multi-ai-sidepanel", "run", "mcp:server" ]Technical Analysis
The installation procedure clones the default branch of an external Git repository without selecting an immutable commit or verifying a cryptographic digest or signed release. Consequently, the code installed by a user can differ from the code reviewed when this Skill package was audited.
The subsequent
npm installoperation installs dependencies defined by that external repository and may execute npm lifecycle scripts. The external repository, its lockfile, dependency graph, and lifecycle scripts are not included in the audited package, so their integrity and behavior cannot be verified from this artifact.Finally, the supplied host configurations launch the repository-owned
mcp:serverscript usingnpm. This gives the remotely obtained code an ongoing MCP trust relationship with OpenHands or OpenClaw. The documented workflow also connects the server to ...[truncated 2006 chars]- Remediation
View remediation
Remediation Suggestions
-
Pin the repository to immutable source
- Document a reviewed commit SHA or cryptographically signed release tag.
- Clone and check out that exact revision rather than using the mutable default branch.
- Verify that the checked-out commit equals the documented value before installation.
bash git clone https://github.com/xiaojiou176-open/multi-ai-sidepanel.git cd multi-ai-sidepanel git checkout --detach EXPECTED_COMMIT_SHA test "$(git rev-parse HEAD)" = "EXPECTED_COMMIT_SHA" -
Add integrity and provenance verification
- Publish the expected commit SHA and release-artifact checksum in the Skill package.
- Prefer signed releases and document the trusted signing identity.
- Fail installation if signature or checksum verification does not succeed.
-
Use deterministic dependency installation
- Require a reviewed lockfile from the pinned revision.
- Replace
npm installwithnpm ciso dependency versions cannot be rewritten during installation. - Run dependency audits and review all direct and transitive packages before approving a new pinned revision.
-
Control npm lifecycle scripts
- Inspect
package.jsonand dependency lifecycle scripts before execution. - Where compatible, initially install using
npm ci --ignore-scripts. - Explicitly execute only scripts that have been reviewed and are required for operation.
- Inspect
-
Apply least privilege to the MCP process
- Run the server under a dedicated low-privilege account or sandbox.
- Restrict filesystem access, inherited environment variables, and outbound network destinations.
- Do not expose unrelated credentials or secrets to the MCP host process.
-
Document and constrain browser-bridge permissions
- Specify which tabs, session records, and browser data the bridge can access.
- Require explicit user confirmation before transmit ...[truncated 477 chars]
-
