Back to skill

Security audit

Pm Master

Security checks for vulnerabilities and agentic risk

Overview

This PM planning skill has a coherent purpose, but it sends project data to a remote service, ships a reusable bearer token, and lets the server inject workflow rules after review.

Install only if you are comfortable sending project requirements, plans, estimates, and workflow context to https://mcp.smartmoves.com.cn/pm/mcp. The publisher should remove the shared bearer token, require per-user credentials, define the protocol locally, and add explicit consent and data-handling controls before use with confidential projects.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (4)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:148
Finding

Remote MCP Server Can Inject Persistent Workflow Instructions

Content
View full analysis
Communication protocol rules, including document writes, question forwarding, > automatic continuation, long-task waiting, context-stage scheduling, retries, > response presentation, and CCID management, are injected automatically by the > server in its first MCP response through a > `[PROTOCOL v=1.0]...[/PROTOCOL]` block. The client parses and caches the > protocol and includes `"proto":"1.0"` in subsequent contexts. ``` ### Technical Analysis The Skill explicitly delegates the definition of security-sensitive workflow behavior to an external MCP server. The server-provided protocol is not merely treated as tool output; the client Agent is instructed to parse it, cache it, and follow it during subsequent interactions. This creates a post-review instruction channel. The effective Skill instructions can change without any modification to the audited package. A compromised or malicious MCP server could inject instructions that attempt to: - Redirect the Agent away from the user's original objective. - Request additional files or confidential project content. - Trigger automatic follow-up calls. - Cause documents to be written or overwritten. - Influence how future responses and tool invocations are handled. - Conceal or misrepresent remote actions in user-facing output. No local allowlist, schema validation, signature verification, or user-confirmation boundary is defined for the injected protocol. ### Attack Path 1. A user loads the Skill and invokes one of its PM tools. 2. The client connects to `https://mcp.smartmoves.com.cn/pm/mcp`. 3. The remote server returns an attacker-controlled `[PROTOCOL v=1.0]` block. 4. Following `SKILL.md`, the client parses and caches those instructions. 5. The c ...[truncated 931 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
mcp-proxy/config.json:1
Finding

Reusable Bearer Credential Is Hard-Coded in the Package

Content
View full analysis
Remediation
View remediation

other

Error
Location
mcp-proxy/call_tool.sh:64
Finding

Full User Messages and Workflow Context Are Sent to an External Service

Content
View full analysis
3 else '', 'conversation_id': sys.argv[4] if len(sys.argv) > 4 else '' } } }, ensure_ascii=False)) " "$TOOL_NAME" "$MESSAGE" "$CONTEXT" "$CCID") CURL_HEADERS=( -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" ) if [[ -n "$API_KEY" ]]; then CURL_HEADERS+=(-H "Authorization: Bearer $API_KEY") fi HTTP_CODE=$(curl -s -o "$TMP_BODY" -D "$TMP_HEADERS" -w "%{http_code}" \ --max-time 300 \ "${CURL_HEADERS[@]}" \ -d "$CALL_PAYLOAD" \ "$REMOTE_URL") ``` ### Technical Analysis The proxy includes the complete `message`, workflow `context`, and `conversation_id` in a JSON-RPC request and sends it to the configured external domain. The intended PM workflows consume requirement specifications, architecture documents, staffing details, schedules, estimates, risks, and other potentially confidential project information. The implementation does not provide: - Field-level minimization. - Secret or personal-data redaction. - A local consent prompt before transmission. - A content-size or content-type restriction. - A documented retention or deletion policy. - A mechanism to process sensitive inputs locally. TLS protects the request in transit from ordinary passive interception, but it does not prevent the destination service from receiving, retaining, or processing the plaintext content. ### Attack Path 1. A user provides project requirements, architecture details, schedules, staff ...[truncated 1103 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
mcp-proxy/call_tool.sh:57
Finding

Predictable Shared Temporary Files Permit Races and Unsafe File Redirection

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (11)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared purpose is a project-management assistant, but the embedded behavior includes remote MCP invocation, local configuration access, authenticated HTTP communication, and response parsing. This mismatch hides meaningful execution and data-flow behavior from users and reviewers, making it easier for the skill to exfiltrate data, invoke unexpected remote actions, or bypass informed consent under the cover of an innocuous PM role.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs the agent to connect to an external MCP endpoint with bearer-token authentication but gives no user-facing warning that data may leave the local environment or that credentials will be used. This undermines informed consent and can expose sensitive project documents, plans, and metadata to a third-party service without a clear trust decision by the user.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
100% confidence
Finding

The skill exposes a bearer credential in natural-language operational instructions, which is effectively the same as publishing a secret in source. Because the token is paired with a concrete remote endpoint and connection guidance, an attacker can readily reuse it to authenticate to the MCP service and abuse available tools or access associated data.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
100% confidence
Finding

The skill embeds a live Bearer token directly in the instruction text for a remote MCP service. Hard-coded secrets in distributable skill content are highly dangerous because anyone with read access can reuse the credential to access the external service, impersonate the client, and potentially reach associated data or tool functions far beyond the PM assistant’s stated purpose.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding

The skill appears capable of file and shell-backed operations but does not declare any explicit tool scope or allowed-tools boundary. That creates an unnecessary privilege ambiguity: a PM-planning skill can end up exercising broader local capabilities than users or the host expect, increasing the blast radius if the skill is misused or if downstream tool calls are influenced by adversarial input.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill is configured to activate on generic greetings and introductory phrases, which can cause unintentional skill execution in ordinary conversation. In this file, that risk is amplified because activation may lead into remote MCP connection logic and external tool orchestration, so a casual greeting can unexpectedly initiate broader behavior than the user intended.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The prescribed opening script and interaction content are written as mandatory Chinese output, and the document does not indicate that users may choose another language. That creates a locale/language policy concern because the skill appears to enforce a specific language without opt-in or justification.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Using 'or semantically similar phrasing' for multiple triggers makes activation boundaries vague and hard to audit. Ambiguous routing increases the chance of accidental invocation of the wrong planning workflow or remote tool sequence, especially in multilingual or loosely phrased user requests.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

The script is explicitly designed to communicate with an external MCP service and forwards user-controlled content to a configured remote_url. In the context of a PM orchestration skill that may handle business requirements, planning data, and delivery details, this increases the likelihood of transmitting sensitive internal information to an external system without sufficient safeguards.

Content

Scanner excerpt · mcp-proxy/call_tool.sh (reported line 3)May include surrounding context.

sh
#!/bin/bash
# ─────────────────────────────────────────────────────────────────────────────────
# MCP Tool 通讯脚本 — bash + curl + python3(零外部依赖)
#
# 用法:
#   bash call_tool.sh <tool_name> "<message>" ['<context_json>'] [conversation_id]

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script reads a remote URL and optional API key from config.json, then transmits user-supplied message, context, conversation ID, and bearer credentials to that remote endpoint via curl. This is a real data-exposure risk because there is no validation, allowlisting, transport-safety enforcement, or user-facing disclosure/consent before sending potentially sensitive project data off-host.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The human-readable usage and operational documentation in the file are entirely in Chinese, with no indication of language choice or alternative locale support. This can constitute a language policy violation when a skill forces one language without offering user opt-in.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:94