T08 · Insecure Dependencies
- Location
skill.json:44- Finding
Unpinned npm Package Is Downloaded and Executed Automatically
- Content
View full analysis
Vulnerability Details
File Location:
skill.json:35-51
Vulnerability Type: Unpinned executable dependency and supply-chain exposure
Risk Level: MediumVulnerable Code
json "permissions": { "network": true, "filesystem": false, "browser": false, "shell": false, "notifications": false }, "mcp": { "server": { "command": "npx", "args": ["-y", "uumuse-mcp"], "env": { "UUMUSE_API_KEY": "{{config.uumuse_api_key}}", "UUMUSE_API_URL": "{{config.uumuse_api_url}}" } },The same unpinned execution pattern is documented in
README.md:29-30,README.md:61-71, andREADME.md:86-87:bash npx -y uumuse-mcpTechnical Analysis
The MCP server is launched through
npx -y uumuse-mcpwithout an exact package version or integrity constraint. Consequently, npm can resolve and execute whichever release is current at installation or startup time. The Skill manifest has its own version (1.1.1), but that does not constrain the version of the executableuumuse-mcpdependency.The
-yoption suppresses interactive confirmation, making package retrieval and execution automatic. If the npm package, publisher account, registry resolution process, or a future release is compromised, attacker-controlled JavaScript can execute under the operating-system account running the Agent.This behavior also conflicts with the declared
"shell": falsepermission posture. Although the Skill does not directly invoke an interactive shell, it configures the host to start an externally retrieved executable throughnpx, creating a local code-execution capability not clearly represented by the declared permissions.No evidence establishes that the current
uumuse-mcppackage is malicious. The vulnerability is the absence of dependency pinning and reproducible integrity controls.Attack Path
- An attacker compromises the npm publisher account, ...[truncated 1234 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin the MCP package to an exact reviewed version, for example:
json "command": "npx", "args": ["-y", "uumuse-mcp@1.1.1"] -
Prefer installing dependencies from a lockfile with verified integrity hashes rather than resolving a package dynamically at every installation or startup.
-
Vendor or package the reviewed MCP implementation with the Skill when operationally feasible.
-
Establish an explicit dependency-update process that includes source review, provenance validation, and security testing.
-
Use npm provenance/signature verification and a trusted registry configuration where supported.
-
Run the MCP server in a sandbox with minimal filesystem and network access.
-
Provide the MCP process with a narrowly scoped API key rather than an unrestricted credential.
-
Update the permission declaration and documentation so that external process execution is accurately disclosed.
-
