Back to skill

Security audit

Slideshow Generator

Security checks for vulnerabilities and agentic risk

Overview

The skill is advertised as a Markdown slideshow generator with live preview, but the inspected artifacts mainly provide a persistent local plaintext logging, search, and export tool for user-entered content.

Review this carefully before installing. Use it only if you intend to keep searchable local plaintext records of slide drafts and related text, and avoid entering confidential presentation material unless that retention is acceptable. The advertised slideshow generation capability is not supported by the main script, and exported JSON/CSV should not be treated as safely encoded for downstream tools.

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/script.sh:63
Finding

Improper Escaping of User-Controlled Data in JSON and CSV Exports

Content
View full analysis
"$out" local first=1 for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local name=$(basename "$f" .log) while IFS='|' read -r ts val; do [ $first -eq 1 ] && first=0 || echo "," >> "$out" printf ' {"type":"%s","time":"%s","value":"%s"}' "$name" "$ts" "$val" >> "$out" done < "$f" done echo "\n]" >> "$out" ;; csv) echo "type,time,value" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local name=$(basename "$f" .log) while IFS='|' read -r ts val; do echo "$name,$ts,$val" >> "$out"; done < "$f" done ``` ### Technical Analysis The data commands store user-controlled input in log files. The export implementation subsequently inserts that data directly into JSON and CSV output without format-specific encoding. For JSON exports, quotation marks, backslashes, control characters, and embedded line breaks are not escaped. Crafted values can terminate the intended JSON string, add properties or records, or make the entire document invalid. For CSV exports, fields are neither quoted nor escaped. Commas, quotation marks, and line breaks can alter the output structure. In addition, values beginning with spreadsheet formula markers such as `=`, `+`, `-`, or `@` may be interpreted as formulas when an operator opens the exported file in spreadsheet software. Whether a formula executes automatically depends on the spreadsheet application and its security configuration. Shell command injection is not present in this code path because the variables are pass ...[truncated 1616 chars]
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill’s advertised purpose is Markdown-to-HTML slideshow generation with live preview, but the documented behavior is largely a local logging and content-storage utility with export, search, and history features. This mismatch is security-relevant because users may provide sensitive draft content, schedules, or internal presentation material under the assumption of a rendering tool, while the skill persistently stores and later exports that data without the core promised functionality.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The implemented behavior does not match the declared slideshow-generation purpose and instead provides a generic persistent content-logging utility. Capability mismatch is dangerous because users may supply slide drafts or sensitive notes expecting rendering/preview functionality, while the tool silently stores and indexes that content for later retrieval.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill explicitly stores all user inputs across multiple commands and provides bulk export capabilities, yet the documentation contains no warning that potentially sensitive content will be retained on disk. In this context, users may enter unreleased presentation content, internal plans, dates, or messaging, creating avoidable confidentiality and privacy risk if the local machine is shared, backed up, or later inspected.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script persistently stores arbitrary user input and exposes it through export, search, and recent-history features, creating a local plaintext data repository. In the context of a content-authoring skill, users are likely to submit drafts, plans, or proprietary material, so these convenience features materially increase the risk of unintended disclosure to other local users, processes, or support workflows.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The command set includes unrelated marketing/copywriting functions such as hashtags, hooks, CTA, tone, and headline, which are inconsistent with a slideshow generator. This broad, unjustified scope increases the chance of deceptive data collection and misuse because users are encouraged to enter free-form content unrelated to the advertised skill.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The status and recent commands display prior logged entries and the last history line in plain text, which can reveal sensitive past inputs during routine health checks or casual terminal use. This is particularly risky because the advertised skill context suggests drafting/editing content, making exposure of prior user material more likely and more harmful.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

User-provided content is written to persistent local logs without an explicit privacy notice, consent flow, or indication of retention. This is dangerous because users may enter confidential drafts, speaker notes, or internal messaging content unaware that it will be stored on disk in plaintext.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The embedded script writes a generated HTML file via with open("$out", "w") as fh: fh.write(html), but there is no nearby comment, docstring, or explicit warning that running generate will create or overwrite an output file. Although the command name suggests generation, the code itself lacks a direct disclosure at the point of the write.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.