T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:21
- Finding
- Unpinned npm Package Is Downloaded and Executed Automatically<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 21–29 **Vulnerability Type**: Remote payload execution through an unpinned third-party package **Risk Level**: High ### Vulnerable Code ```json { "mcpServers": { "etix": { "command": "npx", "args": ["-y", "etix-mcp"] } } } ``` ### Technical Analysis The MCP configuration invokes `npx -y etix-mcp` without specifying an exact package version or integrity value. Consequently, the code executed by this configuration is selected from the npm registry at invocation time and may differ from the version originally reviewed. The `-y` argument automatically accepts installation prompts, reducing the opportunity for users to inspect the selected package version before execution. This creates a remote payload and supply-chain trust boundary: compromise of the npm package, its maintainer account, or its dependencies could cause arbitrary code to execute locally. The project contains only `SKILL.md`; therefore, the implementation and security properties of the downloaded package cannot be verified from the audited artifact. ### Attack Path 1. An attacker compromises the `etix-mcp` npm package, its publisher account, or a transitive dependency. 2. The attacker publishes a malicious release under the existing package name. 3. A user invokes the configured MCP server. 4. `npx` resolves and downloads the current package version from the registry. 5. The `-y` option permits installation without an interactive confirmation step. 6. Package installation hooks or runtime code execute with the operating-system privileges of the user running the MCP client. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the invoking user's account. Depending on that account's permissions, malicious package code could access project files, user-readable configuration and credentials, environment variables, local services, and network resources. It could al ...[truncated 289 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `etix-mcp` to an exact, reviewed version rather than allowing registry-time version resolution. 2. Record and verify package integrity hashes through a lockfile or equivalent trusted manifest. 3. Remove `-y` where practical so package installation is not silently approved. 4. Prefer a controlled local installation over downloading executable code during each invocation. 5. Audit the package and its transitive dependencies before deployment. 6. Run the MCP server in a sandbox with narrowly scoped filesystem and network permissions. 7. Use a dedicated, low-privilege operating-system account if the server does not require access to general user files. 8. Establish a controlled update process in which each new version is reviewed before the pin is changed. ]]>
