Back to skill

Security audit

SVG PPT Generator

Security checks for vulnerabilities and agentic risk

Overview

This presentation skill mostly matches its stated purpose, but some included tools can fetch arbitrary URLs insecurely and embed local files from SVG references without enough containment.

Review before installing if you will process untrusted URLs, source documents, SVGs, or project assets. Use it only in a sandboxed workspace with restricted outbound network access, avoid untrusted SVG image references, and do not store unrelated secrets in the project .env.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
ppt-master-assets/scripts/web_to_md.py:82
Finding

Arbitrary URL Fetching with Disabled TLS Certificate Verification

Content
View full analysis
str: """Fetch a web page with explicit headers and encoding detection. Args: url: Target URL. Returns: The response body as text. """ headers = { "User-Agent": CONFIG["user_agent"], "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8" } try: response = requests.get(url, headers=headers, timeout=CONFIG["timeout"], verify=False) response.raise_for_status() # Enhanced encoding detection (requests handles this well usually, but we force apparent_encoding for Chinese) response.encoding = response.apparent_encoding return response.text except Exception as e: raise Exception(f"Failed to fetch {url}: {str(e)}") ``` Embedded image URLs derived from remote HTML are also fetched with TLS verification disabled: ```python abs_url = urljoin(page_url, src) if abs_url in downloaded: saved_name = downloaded[abs_url] else: try: resp = requests.get( abs_url, headers={"User-Agent": CONFIG["user_agent"]}, timeout=CONFIG["timeout"], verify=False, ) resp.raise_for_status() filename = build_image_filename( abs_url, idx, resp.headers.get("Content-Type")) ``` ### Technical Analysis The web conversion utility accepts arbitrary URLs and passes them directly to `requests.get()`. It does not validate: ...[truncated 2999 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
ppt-master-assets/scripts/svg_finalize/embed_images.py:78
Finding

Unrestricted Local-File Embedding Through SVG Image References

Content
View full analysis
&) import html img_path_decoded = html.unescape(img_path) # Handle relative paths if not os.path.isabs(img_path_decoded): full_path = os.path.join(svg_dir, img_path_decoded) else: full_path = img_path_decoded if not os.path.exists(full_path): print(f" [WARN] Image not found: {img_path}") images_found.append((img_path, "NOT FOUND", 0)) return match.group(0) img_size = os.path.getsize(full_path) if dry_run: images_found.append((img_path, "WILL EMBED", img_size)) return match.group(0) with open(full_path, 'rb') as img_file: img_bytes = img_file.read() b64_data = base64.b64encode(img_bytes).decode('utf-8') mime_type = get_mime_type(img_path, img_bytes) images_embedded += 1 images_found.append((img_path, "EMBEDDED", img_size)) return f'href="data:{mime_type};base64,{b64_data}"' ``` The native SVG-to-PPTX converter similarly reads an external path without restricting it to the SVG asset directory: ```python def convert_image(elem: ET.Element, ctx: ConvertContext) -> str: """Convert SVG to DrawingML picture element.""" href = elem.get('href') or elem.get(f'{{{XLINK_NS}}}href') if not href: return '' x = ctx_x(_f(elem.get('x')), ctx) y = ctx_y(_f(elem.get('y')), ctx) w = ctx_w(_f(elem.get('width' ...[truncated 4183 chars]
Remediation
View remediation
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (552)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The code chunk’s primary purpose is analyzing existing image files and recommending how they might fit into PPT layouts. It does not generate presentations, SVG content, charts, themes, or icons as claimed by the description. While the report includes PPT-oriented recommendations, that is only ancillary to image analysis and does not substantiate the declared core functionality of an SVG-based PPT generator. Therefore the description does not accurately represent this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description presents a content-generation skill for creating PPTs from SVG assets with themes, layouts, charts, and icons. The supplied code does not generate presentations or provide themes/layouts/charts/icons functionality. Instead, it validates existing projects in directories, checks structural integrity and SVG formatting, prints summaries, and optionally writes a validation report. This is a materially different primary purpose, so the description does not accurately represent the code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The supplied code does relate to a PPT/SVG presentation project, but this specific chunk does not implement the declared end-user capability of a 'SVG-based PPT generator with 9 themes, 8 layouts, 30+ charts, and 600+ icons.' Instead, it serves as a centralized config module: storing predefined formats, colors, fonts, margins, and SVG compatibility constraints; exposing getters; validating allowed SVG elements; printing config via CLI; and exporting config as JSON. While these are supporting pieces for such a generator, the actual behavior of this code chunk is materially narrower and different in primary purpose from the declared description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description suggests a presentation-generation skill focused on SVG-based PPT creation with themes, layouts, charts, and icons. The supplied code does not generate presentations or SVG assets at all. Instead, it is a standalone command-line utility that invokes Pandoc to convert various document formats into GitHub-Flavored Markdown, extracts embedded media, rewrites media paths, and normalizes image tags. This is a materially different primary purpose, so the description does not accurately represent the code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a content-generation skill for creating SVG-based PPTs with themes, layouts, charts, and icons. The supplied code does not generate presentations or assets. Instead, it is an error-message helper that stores predefined error categories, formats terminal output, customizes messages with context like file names and paths, and exposes a CLI for looking up fixes. This is a materially different primary purpose from PPT generation. While such a helper could support a PPT generation system, this code chunk itself implements troubleshooting/documentation functionality rather than the declared generator capability.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents the skill as a presentation-generation tool centered on SVG-based PPT creation with themes, layouts, charts, and icons. However, this code chunk does not generate presentations, SVG assets, themes, layouts, charts, or icons. Its primary function is to scan the examples directory, collect project info through helper utilities, and write an examples README index file. While this may be a supporting repository script, the behavior of this supplied code chunk is materially different from the declared end-user purpose, so this chunk should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about generating PowerPoint content with SVG assets, themes, layouts, charts, and icons. The supplied code does not implement PPT generation or SVG/theme/layout/chart/icon handling. Instead, it is an image-generation backend for Black Forest Labs FLUX: it submits prompts to a remote service, polls job status, retrieves a generated image URL, and downloads a PNG file. This is a materially different primary purpose and includes undeclared external-network and API-key-based image generation capabilities.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description presents a presentation-generation skill focused on SVG/PPT creation, themes, layouts, charts, and icons. The supplied code chunk instead implements generic image-backend helper functions: downloading images from URLs, saving/transcoding image bytes, checking rate limits, retrieving API keys from environment variables, and polling remote APIs for generation status. These are materially different capabilities from the declared PPT generator functionality and include undeclared external network and credential-related behavior. While such utilities could support a larger media pipeline, this chunk does not substantiate the claimed SVG-based PPT generation purpose and exposes additional behavior not reflected in the description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description focuses on creating SVG-based PowerPoint content and presentation assets. However, the code chunk does something materially different: it calls the fal.ai image generation service, submits a text prompt, retrieves an image URL from the API response, and downloads a PNG file locally. This is an undeclared capability and does not align with the stated primary purpose of PPT/SVG generation, themes, layouts, charts, or icons. While this backend could conceivably support a broader presentation workflow, the code shown is specifically an AI image generation component rather than presentation generation logic.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description says the skill is a PPT generator focused on SVG slides, themes, layouts, charts, and icons. This code chunk instead provides a backend for AI image generation via the Ideogram API: it requires an API key, posts prompts to a remote endpoint, processes the response, and downloads a PNG image. That is a materially different primary purpose and introduces undeclared external network/service interaction. While such functionality could theoretically support a presentation tool, this specific code does not implement the declared PPT/SVG generation features and instead performs a separate image-generation capability.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description focuses on a PPT generator based on SVG assets, themes, layouts, charts, and icons. The supplied code chunk does not generate PowerPoint files, SVG content, themes, layouts, charts, or icons. Instead, it acts as a backend for AI image generation using an OpenAI-compatible API. This is a materially different primary purpose and introduces undeclared capabilities: remote API access using an API key, optional proxy/custom endpoint usage, prompt submission to an external model, and local image file output. These behaviors are not merely implementation details of an SVG PPT generator; they represent separate functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says the skill is a PPT generator focused on SVG slides, themes, layouts, charts, and icons. The supplied code does not generate PowerPoint presentations, SVGs, charts, layouts, or icon libraries. Instead, it is a backend module for calling Alibaba Cloud's Qwen image-generation service, handling prompt payloads, retries, and downloading a generated image from a returned URL. This is a materially different primary purpose and includes undeclared external API/network behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says the skill is a PPT generator focused on SVG assets, themes, layouts, charts, and icons. The supplied code chunk does something materially different: it is an image-generation backend for Replicate that submits prompts to a remote model, polls for completion, and downloads a PNG file. This is not just an implementation detail of PPT generation as shown here; its primary function is external AI image generation, which is undeclared in the description. No evidence in this chunk supports the claimed PPT/theme/chart/icon functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description focuses on generating PPT content from SVG assets with themes, layouts, charts, and icons. The supplied code instead is an image-generation backend for SiliconFlow: it requires an API key, makes HTTP POST requests to a remote image-generation endpoint, accepts text prompts and aspect ratios, processes API responses, and downloads generated images. This is a materially different primary purpose and introduces undeclared capabilities/resources such as external network communication, remote AI image generation, and file output.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about generating PPT content with SVG assets, themes, layouts, charts, and icons. This code instead provides an AI image generation backend for Stability AI. Its primary function is to call a remote image-generation API with a prompt, handle retries/rate limits, and save the returned PNG file. That is a materially different purpose and introduces undeclared external network access and API-key usage not reflected in the stated description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about generating PPTs/SVG presentation assets with themes, layouts, charts, and icons. The supplied code chunk does not implement presentation generation, SVG rendering, chart/layout logic, or icon/theme handling. Instead, it is a standalone backend for remote AI image generation via the Volcengine API, including authentication, request construction, retry logic, and image download. These are materially different capabilities and involve undeclared external network access and API-key-based service usage, so the description does not accurately represent this code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is for a presentation generator centered on SVG/PPT assets, themes, layouts, charts, and icons. The supplied code instead provides a backend for text-to-image generation using Zhipu's remote API, including API key usage, HTTP requests, retry logic, and image download/storage. That is a materially different primary purpose and introduces undeclared networked image-generation capability not reflected in the description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says this skill is an SVG-based PPT generator with themes, layouts, charts, and icons. However, the supplied code does not generate PowerPoint content, SVG slides, themes, chart layouts, or icon libraries. Instead, it is a unified image generation CLI that reads provider configuration from environment variables or a .env file, resolves one of several AI image backends (OpenAI, Stability, Qwen, Zhipu, etc.), and sends text prompts to generate images. This is a materially different primary purpose and introduces undeclared external-provider/image-generation capabilities.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says this skill generates PPT content from SVG assets with themes, layouts, charts, and icons. The supplied code does not generate PowerPoint presentations or handle SVG theme/layout/chart/icon generation. Instead, it is a PDF-to-Markdown converter with document-structure inference, header/footer removal, table extraction, code block detection, image filtering/deduplication, and batch directory processing. This is a materially different primary purpose and includes undeclared document-processing and file-conversion capabilities.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description focuses on presentation generation features (SVG-based PPT generation with themes, layouts, charts, and icons). The supplied code does not implement slide generation, theming, charting, layouts, or icon handling. Instead, it provides project-management helpers: creating project directory structures, importing source files and URLs, invoking conversion tools to normalize content into markdown, validating project structure/SVG metadata, and printing project info. This is a materially different primary purpose and includes undeclared capabilities such as web import and document conversion.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description presents the skill as a presentation generator with design assets and output capabilities. This code chunk does not generate slides, PPTs, SVGs, charts, or icons. Instead, it provides supporting utilities: normalizing canvas formats, parsing project names, checking for README/spec/source/svg_output files, validating SVG file naming and viewBox values, finding project folders, and calculating file statistics. While these utilities may belong to a larger PPT-generation project, this supplied code chunk’s actual behavior is materially different from the declared primary purpose, so this is a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says this skill is a PPT generator centered on SVG themes, layouts, charts, and icons. The supplied code does not generate PowerPoint content, SVG slides, themes, charts, layouts, or icon libraries. Instead, it is a maintenance utility for image orientation: it reads image metadata, rotates images, writes them back to disk, and produces a local HTML interface for selecting rotation fixes. That is a materially different primary purpose and includes undeclared file-modification capabilities unrelated to the stated PPT-generation functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied code does not implement a PPT generator, themes, layouts, charts, or icon handling. Its concrete behavior is narrowly focused on post-processing SVG image elements: parsing SVG files, opening referenced image files with Pillow, cropping them based on preserveAspectRatio alignment/mode, saving new image files, and updating SVG hrefs. While this could be a supporting internal utility within a larger PPT-generation project, the declared description for the skill itself does not accurately represent this code chunk's primary purpose or capabilities.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a high-level SVG-based PPT generator with rich presentation features. The supplied code does not generate PowerPoint content or expose theme/layout/chart/icon capabilities. Instead, it is a narrow SVG-finalization tool that reads SVG XML, detects certain / patterns, and writes modified SVG output with flattened text lines. This is a materially different primary purpose, so the description does not accurately represent the code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents the skill as a broad SVG-based PPT generator with themes, layouts, charts, and icons. The supplied code does not generate presentations or provide theme/layout/chart/icon functionality. Instead, it is a specialized command-line post-processing script that parses SVG XML and rewrites rounded rectangle elements as path elements, reading from and writing to SVG files on disk. This is a materially different primary purpose from the declared description, so the description does not accurately represent the code chunk.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.