T08 · Insecure Dependencies
- Location
SKILL.md:191- Finding
Unpinned Third-Party Packages May Be Downloaded and Executed Through npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:191-196; related configuration examples inreferences/output-platforms.md:35-45,references/output-platforms.md:110-120,references/output-platforms.md:156-163, andreferences/output-platforms.md:185-192
Vulnerability Type: Unpinned runtime dependency execution
Risk Level: HighVulnerable Code
bash - **Feishu (MCP)** → Use mcporter to call Feishu MCP server ```bash node /path/to/mcporter/dist/cli.js call feishu doc.create '{"title":"...", "content":"..."}' # Note: mcporter path varies by installation, common paths: # - ~/.npm/_npx/*/node_modules/mcporter/dist/cli.js # - Or use: npx mcporter call feishu doc.create ... ```A related MCP configuration example downloads packages without a pinned version:
json { "mcpServers": { "feishu": { "command": "npx", "args": ["-y", "mcp-server-feishu"], "env": { "FEISHU_APP_ID": "your_app_id", "FEISHU_APP_SECRET": "your_app_secret" } } } }Equivalent unpinned
npx -ypatterns are documented for the GitHub, Notion, and Google MCP servers.Technical Analysis
The documented workflow allows
npxto retrieve and execute the currently published version of a package at runtime. Neither an exact package version nor an integrity hash is specified. The-yoption also suppresses the normal installation confirmation.Consequently, the code executed by the Agent is not fully represented by the audited project. Its behavior can change after review if a package is compromised, transferred to a malicious maintainer, replaced, or unexpectedly updated. npm package installation and runtime code execute with the privileges and environment of the invoking Agent process.
Attack Path
- A user selects an MCP-backed output platform.
- The Agent follows the documented configuration or invocation using
npxor ...[truncated 938 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every npm dependency to an exact reviewed version, such as
package-name@1.2.3. - Install dependencies during a controlled build step rather than retrieving them dynamically during skill execution.
- Commit and enforce a lockfile with npm integrity hashes.
- Use a trusted registry, package allowlist, and dependency provenance or signature verification.
- Remove
npx -yfrom operational instructions so package installation cannot occur silently. - Run MCP servers in a sandbox with minimal filesystem, environment, credential, and network access.
- Periodically scan pinned packages and require security review before upgrading them.
- Pin every npm dependency to an exact reviewed version, such as
