Back to skill

Security audit

Shadows MCP Forge

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed MCP server scaffolding guide with ordinary dependency and file-generation risks, not evidence of hidden or malicious behavior.

Install this only if you want help scaffolding MCP servers. Review generated code before running it, install dependencies in a virtual environment or project sandbox, and prefer pinned package versions or lockfiles for reproducible installs.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:29
Finding
Unpinned Third-Party Dependencies Installed from Public Registries## Vulnerability Details **File Location**: `SKILL.md`, lines 29-30 and 208 **Vulnerability Type**: Supply-chain exposure through unpinned dependencies **Risk Level**: Medium ### Vulnerable Code Snippet ```markdown - **Python path**: Requires `fastmcp` package (`pip install fastmcp`). Optional: `httpx` for HTTP clients, `pytest` for testing. - **TypeScript path**: Requires `@modelcontextprotocol/sdk` and `zod` packages (`npm install`). Optional: `tsx` for development. ``` ```markdown - **Commands suggested**: `pip install fastmcp`, `npm install @modelcontextprotocol/sdk` — these install packages from public registries. Review package names before running. ``` ### Technical Analysis The Skill recommends installing third-party packages without specifying reviewed versions, lockfiles, cryptographic hashes, or registry integrity controls. Commands such as `pip install fastmcp` and `npm install @modelcontextprotocol/sdk` resolve mutable package versions from public registries. Package installation may execute package build hooks or npm lifecycle scripts with the privileges of the user running the package manager. If a direct or transitive dependency is compromised, unexpectedly replaced, or resolves to a malicious release, following the documented instructions could result in local code execution. Installing these dependencies is relevant to the declared MCP server-building functionality. However, using unconstrained versions is not the minimum-risk method of obtaining them. The audit did not identify evidence that the named packages are currently malicious, so this finding concerns unsafe dependency acquisition rather than a confirmed malicious payload. ### Attack Path 1. An attacker compromises a recommended direct dependency, one of its transitive dependencies, or the associated registry publishing account. 2. The attacker publishes a malicious version that satisfies the unconstrained dependency request. 3. A user fol ...[truncated 1089 chars]
Remediation
## Remediation Suggestions 1. Pin every direct dependency to an explicitly reviewed version rather than resolving the latest available release. 2. Provide lockfiles for generated projects, such as `uv.lock`, a hash-locked Python requirements file, or `package-lock.json`. 3. For Python, use hash verification such as `pip install --require-hashes -r requirements.txt`. 4. For npm, use a committed lockfile and recommend `npm ci` for reproducible installation. 5. Document the expected package registry and avoid untrusted mirrors or alternate indexes. 6. Require explicit user approval before running installation commands; do not automatically install dependencies during scaffolding. 7. Recommend installation inside a dedicated virtual environment, container, or other non-privileged development sandbox. 8. Add dependency vulnerability and provenance checks, such as `pip-audit`, `npm audit`, registry signature verification where available, and periodic review of pinned versions. 9. Warn users not to execute package-manager commands as root or an administrator.
Vulnerability Patterns
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Unvalidated Output Injection

High
Category
Output Handling
Content
## SECURITY CONSIDERATIONS

This skill generates new source code files (scaffolding MCP servers). It does NOT execute the generated code during scaffolding.

- **Commands suggested**: `pip install fastmcp`, `npm install @modelcontextprotocol/sdk` — these install packages from public registries. Review package names before running.
- **Data read**: The skill reads the user's project structure to determine stack preferences. No sensitive files are accessed.
Confidence
80% confidence
Finding
Model output is used without validation or sanitization. Unvalidated output injected into downstream contexts (SQL, shell, HTML) enables injection attacks and arbitrary code execution.

Vague Triggers

Medium
Confidence
83% confidence
Finding
The trigger list includes broad conditions such as 'Integrating an external API/service with AI agents' and 'Connecting a database, API, or service to Claude/OpenClaw' without tighter constraints. These phrases could match many general integration tasks, making it unclear when this skill should activate versus other API or agent-building skills.

Rp1

Low
Category
MCP Rug Pull
Confidence
60% confidence
Finding
pip install without ==version installs the latest release, which could include malicious changes.

Rp1

Low
Category
MCP Rug Pull
Confidence
60% confidence
Finding
pip install without ==version installs the latest release, which could include malicious changes.

Static analysis

No suspicious patterns detected.