Back to skill

Security audit

Mindchart

Security checks for vulnerabilities and agentic risk

Overview

This skill coherently generates infographic files, with expected local rendering behavior and no evidence of hidden data access, persistence, or exfiltration.

Install only if you are comfortable with a skill that runs local Node rendering tools and creates .md, .svg, and .png files. Use explicit safe output paths, avoid untrusted oversized SVG inputs, and expect the bundled templates to use Chinese sample content unless you ask the agent to generate in another language.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/svg2png.js:148
Finding
Unbounded SVG Processing Enables Resource-Exhaustion Denial of Service<![CDATA[ ## Vulnerability Details **File Location**: `scripts/svg2png.js:148` **Vulnerability Type**: Unrestricted resource consumption during SVG rasterization **Risk Level**: Medium ### Vulnerable Code ```javascript sharp(Buffer.from(svgContent), { limit: 0, density: DPI }) ``` The surrounding implementation also processes every matched `foreignObject` and converts attacker-influenced text into font paths before rasterization: ```javascript while ((match = foreignObjectRegex.exec(svgContent)) !== null) { matches.push({ fullMatch: match[0], attrs: match[1], foreignObjectContent: match[2], index: match.index }); } ``` ### Technical Analysis The conversion script accepts an arbitrary SVG file path, reads the entire file into memory, processes all matching `foreignObject` elements, repeatedly measures text, converts text into SVG paths, and finally passes the resulting document to Sharp at 300 DPI. The Sharp constructor is configured with `limit: 0`, disabling its normal input pixel limit. The script does not impose limits on input file size, SVG dimensions, total pixel count, element count, number of `foreignObject` elements, or text length. Consequently, a malicious or excessively complex SVG can force unbounded CPU and memory consumption. This is an availability vulnerability rather than a privilege-escalation issue. Exploitation does not provide shell execution or access to additional system permissions. ### Attack Path 1. An attacker supplies infographic content or an SVG containing extremely large dimensions, substantial text, many `foreignObject` elements, or computationally expensive SVG structures. 2. The SVG is passed to the documented command: `node mindchart/scripts/svg2png.js input.svg output.png`. 3. The script loads the complete document and iterates through all matching text containers. 4. Attacker-controlled text is repeatedly measured and converted into path data, increasing CPU and memory use. 5. Sharp rasteri ...[truncated 702 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove `limit: 0` and configure a conservative Sharp input-pixel limit. 2. Validate SVG width, height, view box, and estimated rasterized pixel count before invoking Sharp. 3. Reject files exceeding defined limits for input bytes, element count, `foreignObject` count, and text length. 4. Restrict maximum output dimensions and rendering density. 5. Apply execution timeouts and operating-system or container limits for memory, CPU, process count, and output size. 6. Parse SVG with a hardened parser instead of relying solely on regular expressions for structural processing. 7. Reject malformed SVGs and unsupported resource-intensive features. 8. Run conversion in an isolated, unprivileged sandbox without network access or access to sensitive filesystem paths. 9. Add automated tests using oversized dimensions, deeply nested elements, long text, and large numbers of `foreignObject` elements to verify that processing terminates safely. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (230)

Ae5

High
Category
analysis-evasion
Confidence
100% confidence
Finding
Instruction-capable artifact exceeds whole-file semantic analysis limits

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly instructs the agent to write generated SVG and PNG files to disk or a project directory without requiring user confirmation, a declared output path, or any safety constraints on where files may be written. In an agent context, implicit filesystem writes can cause unintended data modification, overwrite existing files, or leave sensitive/generated artifacts on disk, especially when titles or directories are influenced by user input.

Ae2

Medium
Category
analysis-evasion
Confidence
90% confidence
Finding
Artifact content does not match its filename extension

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
This template hardcodes all user-facing content in Chinese, including the title, description, labels, and annotations. That creates a language/locale constraint without offering an explicit user choice, which matches the policy category for forced language behavior.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The template’s visible title, labels, and descriptions are entirely in Chinese, which implies the skill is constrained to a specific language. There is no indication that the user can choose another language or that the template is intentionally limited to a Chinese-only regional context.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The template’s user-facing title, labels, and descriptions are entirely in Chinese, which implies the skill output is constrained to a specific language. There is no accompanying instruction or note indicating that Chinese is optional, user-selected, or required for a justified region-specific use case.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This file’s natural-language content, including the title and all labels/descriptions, is fixed to a single language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is clearly documented and justified, which is not present here.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
This markdown template hard-codes all user-facing content in Chinese, including the title and comparison labels, with no indication that the skill is China-specific or that users can opt into another language. That creates a natural-language policy concern because it forces a specific language by default.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This markdown file contains all user-facing content in Chinese, including the title and descriptions, with no indication that the skill is region-specific or that users can opt into this language. That creates a natural-language policy concern because the skill effectively forces a specific language without documented justification or choice.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This file’s natural-language content is entirely Chinese, including the title, labels, and descriptions, but there is no indication that the skill is region-specific or that users can opt into this locale. Under the policy, forcing a specific language without user choice is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The natural-language content in the template is entirely in Chinese, including the title, labels, and descriptions, with no indication that language selection is optional or region-specific. This can violate language/locale policy because it implicitly constrains generated output to a specific language without user opt-in.

Natural-Language Policy Violations

Medium
Confidence
98% confidence
Finding
The template’s user-facing title, labels, and descriptions are entirely in Chinese, which encodes a specific language choice in the skill content. For this file, there is no indication that the locale is optional, user-selected, or justified as a region-specific template, so it constitutes a language/locale policy concern.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
The natural-language content in the template is entirely in Chinese, including the title and descriptive labels, with no indication that language selection is optional or that the skill is intended only for a Chinese-speaking locale. This can violate language/locale policy when a skill implicitly forces a specific language without user opt-in.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The user-facing title and descriptions are entirely in Chinese, and the template provides no indication that language selection is optional or that the skill is intended only for a Chinese-language context. This creates a natural-language policy concern because the skill effectively enforces a specific locale without user opt-in.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The template’s natural-language content is entirely in Chinese, including the title, labels, and descriptions, with no indication that the skill supports user language choice or that it is intentionally limited to a Chinese-only context. This can violate language/locale policy when a skill implicitly forces a specific language without opt-in.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The template hard-codes all visible content in Chinese, which can override or constrain the user's expected language and reduce transparency for non-Chinese speakers. While this is not a code-execution or data-exfiltration issue, it is a real policy and usability vulnerability because it can cause misleading output, limit accessibility, and create inconsistent behavior when the user did not request Chinese output.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
The file’s user-facing content is entirely in Chinese (for example, the title and all quadrant labels/descriptions), with no indication that the language is configurable or intended only for a Chinese-speaking context. This can violate language/locale policy when a skill implicitly forces one language without offering user choice or documenting a justified locale constraint.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The template hard-codes all user-visible content in Chinese, which can override or ignore the user's language preference and produce output the user did not request. In an infographic-generation skill, this is primarily a safety and quality problem rather than a direct exploit, but it can mislead users, reduce accessibility, and cause policy noncompliance where user choice or localization is expected.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This template is entirely authored with Chinese title, description, and labels, which indicates a fixed language/locale choice embedded in the skill content. Under the policy, forcing a specific language without user opt-in or clear justification is a natural-language policy concern.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
The file's user-facing content is entirely in Chinese, including the title, description, and all labels, with no indication that the skill offers a language choice or is explicitly limited to a Chinese-speaking context. Under the language/locale policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill content is entirely written in Chinese, including the title, description, and all labels, with no indication that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking context. This is a natural-language locale constraint that may violate organizational language/locale policy when presented without opt-in or justification.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
The natural-language content of the skill is entirely in Chinese, and there is no indication that the user can choose another language or that the locale restriction is intentional for a region-specific use case. Under the policy, language constraints should be opt-in or clearly justified.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill template content is entirely in Chinese, including the title, description, and all labels, with no indication that the language is optional or tied to a justified region-specific use case. This can violate language/locale policy when users are not given a choice or opt-in for the forced locale.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The template hard-codes Chinese labels and descriptions throughout the skill content, such as the title, description, and node labels. This imposes a specific language on outputs without any visible user opt-in or justification that the skill is intended only for a Chinese-language or region-specific context.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
The file’s user-facing content is entirely written in Chinese, with no indication that language selection is optional or that the skill is intended only for a Chinese-language context. Per the policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Static analysis

No suspicious patterns detected.