Back to skill

Security audit

AI skills for GitHub Copilot, Claude Code, and OpenClaw to generate professional mind maps via the EdrawMind API.

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly does what it claims, but its documented command pattern can let malicious Markdown execute local shell commands while also uploading content to EdrawMind's online API.

Review before installing. Use this only with content you are comfortable sending to EdrawMind's service, avoid secrets or confidential documents, and do not let an agent interpolate untrusted Markdown into the documented --text shell command. Prefer stdin or a safely created input file, and avoid --insecure, custom --api-url, or command-line API keys unless you fully trust the destination and environment.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:115
Finding

Command Injection Through Shell-Interpolated Markdown Input

Content
View full analysis
" [OPTIONS] ``` The documented example follows the same command-string construction pattern: ```bash python ./scripts/edrawmind_cli.py --text "# AI技术\n## 机器学习\n- 监督学习\n- 无监督学习\n## 深度学习\n- CNN\n- Transformer" --layout 1 --theme 2 ``` ### Technical Analysis The Skill instructs the Agent to place generated or user-controlled Markdown directly into a double-quoted shell argument. Double quotes do not suppress shell command substitution. Constructs such as `$(command)` and backticks are evaluated by the shell before `edrawmind_cli.py` starts. Embedded quotation marks can also terminate the intended argument and introduce additional shell syntax. This affects Markdown received directly from a user as well as content extracted from a document or repository. The Python script itself uses `argparse` and does not invoke a shell. The vulnerability arises from the execution method prescribed by the Skill documentation. ### Attack Path 1. An attacker supplies Markdown containing a shell substitution, such as a node whose text includes `$(attacker_command)`. 2. The Agent follows Step 6 of `SKILL.md` and interpolates the Markdown into the documented double-quoted command. 3. The command is submitted to a shell-based execution tool. 4. The shell evaluates the injected substitution before launching Python. 5. The attacker's command executes with the same operating-system permissions as the Agent process. 6. The Python CLI may subsequently receive only the output of that command, making the injection less apparent in the generated mind map. ### Impact Assessment Successful exploitation provides arbitrary command execution under the Agent's local user account. The attacker could: - Read files accessible to the Agent. - Exfiltrate local cr ...[truncated 464 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/edrawmind_cli.py:282
Finding

TLS Certificate Verification Can Be Disabled for Sensitive API Requests

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/edrawmind_cli.py:738
Finding

API Key and Document Content Can Be Forwarded to an Arbitrary Endpoint

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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (15)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill states that it uses an HTTP API to convert user-provided natural language or Markdown into a mind map, but it does not clearly warn that the supplied content will be transmitted to an external service. Users may provide proprietary documents, code architecture, or requirements without informed consent, creating a significant confidentiality and data-governance risk.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · references/tool-reference.md (reported line 53)May include surrounding context.

md
help="Open the mind map URL in the default browser.",
    )
    out.add_argument(
        "--no-validate",
        action="store_true",
        help="Skip Markdown input validation.",
    )

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · references/tool-reference.md (reported line 88)May include surrounding context.

md
help="Open the mind map URL in the default browser.",
    )
    out.add_argument(
        "--no-validate",
        action="store_true",
        help="Skip Markdown input validation.",
    )

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/edrawmind_cli.py (reported line 698)May include surrounding context.

python
help="Open the mind map URL in the default browser.",
    )
    out.add_argument(
        "--no-validate",
        action="store_true",
        help="Skip Markdown input validation.",
    )

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/edrawmind_cli.py (reported line 768)May include surrounding context.

python
help="Open the mind map URL in the default browser.",
    )
    out.add_argument(
        "--no-validate",
        action="store_true",
        help="Skip Markdown input validation.",
    )

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger description is very broad, matching common words like “思维导图”, “脑图”, “mindmap”, and even generic requests to visualize structured information. This can cause the skill to activate for loosely related tasks and pull user content into a workflow that sends data to an external service, increasing the chance of unintended disclosure or misuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The instruction to always display the online edit link and thumbnail implies generating externally accessible artifacts, but it does not warn users that these links and previews may expose their content outside the local environment. If the mind map contains sensitive business, code, or personal data, sharing or rendering those URLs can broaden exposure beyond the original request context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

The entire skill reference is written in Chinese and does not indicate that language selection is optional or that the skill is intentionally limited to a Chinese-speaking or region-specific audience. Under the policy, forcing a specific language without opt-in can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation explicitly states that Markdown content is sent to a remote HTTP API to generate a mind map, but it does not clearly warn users that their input leaves the local environment and may contain sensitive data. This can lead to accidental exfiltration of confidential notes, documents, or proprietary content when users assume the tool is local-only.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/edrawmind_cli.py (reported line 57)May include surrounding context.

python
__author__ = "EdrawMind AI Team"

_CN_API_URL = "https://mindapi.edrawsoft.cn/api/ai/mind_agent/skills/markdown_to_mindmap"
_GLOBAL_API_URL = "https://api.edrawmind.com/api/ai/mind_agent/skills/markdown_to_mindmap"
_REQUEST_TIMEOUT = 120  # seconds
_PROBE_TIMEOUT = 3     # TCP connect timeout for region detection
_REGION_CACHE_TTL = 86400  # 24 hours

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The tool sends user-supplied Markdown to a third-party EdrawMind API, but the CLI does not provide a clear, explicit warning at the point of use that document contents leave the local system. In a CLI context this can lead to inadvertent exfiltration of sensitive notes, plans, credentials, or proprietary text if users assume conversion is local.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · license.txt (reported line 15)May include surrounding context.

text
1. Ownership
   The Software is owned by and remains the exclusive property of
   Wondershare EdrawMind AI Team(万兴脑图 AI 团队). All intellectual property rights,
   including but not limited to copyrights, patents, trademarks, and
   trade secrets, are reserved by the EdrawMind AI Team.

2. Restrictions

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This plain-text file includes a natural-language locale/jurisdiction constraint stating that the license is governed by the laws of the People's Republic of China. Under the policy for natural-language violations, locale or regional constraints should be clearly documented and justified; this file does not explain why this jurisdiction is required or whether users have any alternative.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The entire skill documentation is written only in Chinese, with no indication that users can choose another language or that the skill is intentionally restricted to a Chinese-speaking context. This may conflict with language or locale policy requirements that prohibit forcing a specific language without opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill accepts an API key and sends it as an HTTP header, but the surrounding help text does not warn users about supplying credentials securely or avoiding shell history exposure. For a code file handling credentials, some disclosure is expected unless the behavior is clearly documented with cautionary guidance.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.