Back to skill

Security audit

Pptx Master V1.2.3 20260507

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a coherent PPT-generation toolkit, but it includes high-impact update and networking behaviors that need review before installation.

Review this skill before installing. Use it only in a contained project environment, avoid running scripts/update_repo.py unless you inspect the pulled changes first, prefer --skip-pip for updates, keep API keys scoped and low-quota, and do not use custom image-provider base URLs unless you trust the endpoint. Be cautious converting sensitive HTTPS pages because one converter disables certificate verification.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/update_repo.py:84
Finding
Mutable Repository Update Followed by Automatic Dependency Installation<![CDATA[ ## Vulnerability Details **File Location**: `scripts/update_repo.py:84-128`; documented for users in `scripts/README.md:27-31` and `scripts/README.md:76-80` **Vulnerability Type**: Remote code and dependency supply-chain execution **Risk Level**: Critical ### Vulnerable Code ```python def sync_python_dependencies() -> None: if not REQUIREMENTS_FILE.exists(): print("requirements.txt not found; skipping Python dependency sync.") return print("requirements.txt changed. Syncing Python dependencies...") result = run_command([sys.executable, "-m", "pip", "install", "-r", str(REQUIREMENTS_FILE)]) if result.stdout.strip(): print(result.stdout.strip()) if result.stderr.strip(): print(result.stderr.strip()) def main() -> int: args = parse_args() try: ensure_git_available() ensure_clean_tracked_worktree() before_head = get_head_revision() before_requirements = file_digest(REQUIREMENTS_FILE) print(f"Repository: {REPO_ROOT}") pull_result = run_command(["git", "pull", "--ff-only"]) if pull_result.stdout.strip(): print(pull_result.stdout.strip()) if pull_result.stderr.strip(): print(pull_result.stderr.strip()) after_head = get_head_revision() after_requirements = file_digest(REQUIREMENTS_FILE) if before_head == after_head: print("Repository is already up to date.") else: print(f"Updated from {before_head[:7]} to {after_head[:7]}.") if args.skip_pip: print("Skipped Python dependency sync (--skip-pip).") elif before_requirements != after_requirements: sync_python_dependencies() else: print("requirements.txt unchanged. Skipping Python dependency sync.") ``` The operation is explicitly exposed as a normal repository-maintenance command: ```markdown Repository update: ```bash python3 scripts/update_ ...[truncated 2318 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Separate repository updates from dependency installation. An update command must not automatically install newly introduced dependencies. 2. Require an explicit second command or interactive approval after presenting the exact `requirements.txt` diff. 3. Update only from an allowlisted remote URL and verify the remote before pulling. 4. Retrieve signed release tags or commits and verify signatures against pinned maintainer keys. 5. Replace unconstrained requirements with a reviewed lock file containing exact versions and hashes. 6. Install with hash enforcement, for example `pip install --require-hashes -r requirements.lock`. 7. Reject direct URLs, editable installations, alternate indexes, and VCS dependencies unless individually approved. 8. Run installation in an isolated virtual environment with minimal filesystem and network privileges. 9. Default to `--skip-pip` behavior and make dependency synchronization an explicit opt-in operation. ]]>

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:42
Finding
Skill Instruction Precedence Hijacking<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:42-50` and `SKILL.md:66` **Vulnerability Type**: Agent instruction hierarchy manipulation **Risk Level**: High ### Vulnerable Skill Text ```markdown > ## 🚨 Global Execution Discipline (MANDATORY) > > **This workflow is a strict serial pipeline. The following rules have the highest priority — violating any one of them constitutes execution failure:** > > 1. **SERIAL EXECUTION** — Steps MUST be executed in order; the output of each step is the input for the next. Non-BLOCKING adjacent steps may proceed continuously once prerequisites are met, without waiting for the user to say "continue" > 2. **BLOCKING = HARD STOP** — Steps marked ⛔ BLOCKING require a full stop; the AI MUST wait for an explicit user response before proceeding and MUST NOT make any decisions on behalf of the user > 3. **NO CROSS-PHASE BUNDLING** — Cross-phase bundling is FORBIDDEN. (Note: the Eight Confirmations in Step 4 are ⛔ BLOCKING — the AI MUST present recommendations and wait for explicit user confirmation before proceeding. Once the user confirms, all subsequent non-BLOCKING steps — design spec output, SVG generation, speaker notes, and post-processing — may proceed automatically without further user confirmation) > 4. **GATE BEFORE ENTRY** — Each Step has prerequisites (🚧 GATE) listed at the top; these MUST be verified before starting that Step > 5. **NO SPECULATIVE EXECUTION** — "Pre-preparing" content for subsequent Steps is FORBIDDEN (e.g., writing SVG code during the Strategist phase) ``` A separate instruction extends this precedence claim to conflicts with other skills: ```markdown - If another generic coding skill suggests repository conventions that conflict with this workflow, follow this skill first unless the user explicitly asks otherwise ``` ### Technical Analysis A Skill may define its own operational workflow, but it must not claim global or highest instruction priority. The phrases “highest priority” ...[truncated 1330 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the statement that Skill rules have the “highest priority.” 2. Replace it with narrowly scoped wording such as: “Within the PPT-generation workflow, follow these phases unless a higher-priority platform, system, developer, safety, or user instruction requires otherwise.” 3. Remove the instruction to follow this Skill over other skills. 4. Resolve skill conflicts through the hosting platform's established precedence rules rather than Skill-authored hierarchy claims. 5. Retain legitimate serial-processing and confirmation requirements, but clearly limit them to presentation-generation behavior. 6. Add an explicit statement that the Skill cannot override system, developer, safety, access-control, or user-consent requirements. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/web_to_md.py:80
Finding
HTTPS Certificate Verification Disabled for Web and Image Downloads<![CDATA[ ## Vulnerability Details **File Location**: `scripts/web_to_md.py:80-103` and `scripts/web_to_md.py:188-204` **Vulnerability Type**: Improper certificate validation **Risk Level**: High ### Vulnerable Code ```python def fetch_url(url: str) -> 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)}") ``` The same insecure setting is used when retrieving embedded images: ```python 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 Passing `verify=False` disables validation of the server certificate and hostname for HTTPS requests. Encryption may still occur, but the client no longer establishes that it is communicating with the intended server. This affects both primary webpage retrieval and secondary image downloads. As a result, an attacker able to intercept traffic can present an arbitrary cer ...[truncated 1451 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove `verify=False` from all `requests.get` calls and rely on certificate verification by default. 2. Remove global suppression of `InsecureRequestWarning`. 3. If private certificate authorities must be supported, accept an explicit CA bundle path and pass it through `verify="/path/to/ca-bundle.pem"`. 4. Do not silently retry with certificate verification disabled. 5. Reject plain HTTP by default or require explicit user approval when secure HTTPS is unavailable. 6. Add tests confirming that expired, self-signed, hostname-mismatched, and untrusted certificates are rejected. 7. Apply response-size and content-type limits to downloaded pages and images to reduce downstream parser and resource-exhaustion risks. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/image_backends/backend_stability.py:62
Finding
Provider Credentials and Confidential Prompts Can Be Forwarded to Unrestricted Custom Endpoints<![CDATA[ ## Vulnerability Details **File Location**: `scripts/image_backends/backend_stability.py:62-92` and `scripts/image_backends/backend_stability.py:111-119` **Vulnerability Type**: Unvalidated credential-bearing outbound endpoint **Risk Level**: Medium The same design is present in the pre-scan-flagged backends at: - `scripts/image_backends/backend_bfl.py:147-165` - `scripts/image_backends/backend_ideogram.py:122-140` - `scripts/image_backends/backend_qwen.py:166-185` - `scripts/image_backends/backend_replicate.py:140-159` - `scripts/image_backends/backend_fal.py:97-115` - `scripts/image_backends/backend_zhipu.py:157-176` - `scripts/image_backends/backend_siliconflow.py:150-168` - `scripts/image_backends/backend_volcengine.py:156-175` ### Representative Vulnerable Code ```python def _generate_image(api_key: str, prompt: str, negative_prompt: str = None, aspect_ratio: str = "1:1", image_size: str = "1K", output_dir: str = None, filename: str = None, model: str = DEFAULT_MODEL, base_url: str = DEFAULT_BASE_URL) -> str: """Generate one image with the Stability backend.""" if aspect_ratio not in VALID_ASPECT_RATIOS: raise ValueError( f"Unsupported aspect ratio '{aspect_ratio}' for Stability backend. " f"Supported: {VALID_ASPECT_RATIOS}" ) resolved_model, url = _resolve_endpoint(model, image_size, base_url) headers = { "Authorization": f"Bearer {api_key}", "Accept": "image/*", } data = { "prompt": prompt, "aspect_ratio": aspect_ratio, "output_format": "png", } if negative_prompt: data["negative_prompt"] = negative_prompt print("[Stability AI]") print(f" Model: {resolved_model}") print(f" Prompt: {prompt[:120]}{'...' if len(prompt) > 120 else ''}") print(f" Aspect Ratio: {aspect_ratio}") print(f" Preset Size: {image_size}") print() p ...[truncated 2856 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Allowlist each provider's official HTTPS hostname and reject other destinations by default. 2. Require the endpoint scheme to be `https`; reject plain HTTP, embedded credentials, unexpected ports, and malformed hostnames. 3. Treat custom endpoints as an advanced opt-in feature requiring an explicit command-line flag and a clear warning that credentials and prompts will be disclosed to that host. 4. Do not automatically forward official provider credentials to custom endpoints. Introduce separate proxy-specific credentials. 5. Display the normalized destination hostname before the first credential-bearing request and request confirmation when it is nonstandard. 6. Prevent silent redirect-based credential disclosure by rejecting cross-origin redirects for authenticated requests. 7. Scope provider keys to minimum permissions and quota, and recommend rotation after suspected configuration compromise. 8. Restrict `.env` permissions and load configuration only from an explicitly identified project or Skill path. 9. Apply the same validation consistently to BFL, Ideogram, Qwen, Replicate, fal.ai, Zhipu, SiliconFlow, Volcengine, Gemini, and OpenAI-compatible endpoint overrides. ]]>
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 (632)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill description and workflow claim a broad PPTX-generation pipeline, but the findings indicate substantial undeclared behaviors in underlying code, including external API use, local file rewriting, image download/save, and unrelated utilities. This mismatch is dangerous because agents and users may grant trust and permissions based on the declared purpose while hidden or unrelated capabilities execute under that trust boundary.

Static analysis

Detected: suspicious.insecure_tls_verification

HTTPS certificate verification is disabled.

Warn
Code
suspicious.insecure_tls_verification
Location
scripts/web_to_md.py:98