Back to skill

Security audit

Slide

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent local slide-deck tool, but its HTML export can turn slide text into executable browser script and it can write exports to any user-supplied path.

Install only if you are comfortable with slide data and speaker notes being stored locally in ~/.slide/data.jsonl. Avoid adding untrusted HTML or text from outside sources, review exported HTML before sharing or hosting it, and choose export paths carefully because existing user-writable files can be overwritten.

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:304
Finding

Stored HTML and JavaScript Injection in Exported Presentations

Content
View full analysis

{s.get('title','')}

{s.get('content','')}
{s.get('order',0)}
""") content = f""" {deck.get('title','Presentation')} ``` ### Technical Analysis The HTML export operation interpolates the deck title, slide title, and slide content directly into an HTML document without context-appropriate escaping or sanitization. These values originate from command-line input and are persisted in `~/.slide/data.jsonl`. Because they are treated as trusted markup during export, an attacker-controlled value can introduce arbitrary HTML elements and event-handler attributes. For example: ```html ``` When an exported presentation containing this payload is opened in a browser, the `onerror` handler executes as JavaScript. Escaping only quotation marks would not resolve the issue because the values are inserted into HTML text and title contexts; output encoding or a strict HTML sanitizer is required. ### Attack Path 1. An attacker supplies a malicious deck title, slide title, or slide body to a user or an agent operating the Skill. 2. The value is stored using a command such as: ```bash bash scripts/script.sh add deck_ID \ --title "Quarterly Report" \ --content '' ``` 3. The user exports the affected deck: ```bash bash scripts/script.sh export deck_ID --format ht ...[truncated 1241 chars]
Remediation
View remediation

{safe_slide_title}

{safe_slide_content}
{s.get('order', 0)}
""") ``` 3. If limited formatting is an intended feature, process slide content through a maintained allowlist sanitizer. Permit only necessary formatting tags and attributes, and reject: - `` - `` - `` - SVG event handlers - `javascript:` links - Malformed and nested HTML tags Tests should verify that these values appear as ...[truncated 54 chars]
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill documents capabilities that read environment state and read/write local files, but it does not declare any tool scope or permission boundaries. This is dangerous because users and hosting agents cannot clearly restrict or review what filesystem access the skill expects, increasing the risk of unintended local data access or persistence.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
77% confidence
Finding

The skill is explicitly designed around JSONL-backed storage, meaning slide and notes data persists across sessions rather than remaining ephemeral. Session persistence can be risky when users place confidential material in decks or speaker notes, because later sessions or local users may access retained content unexpectedly.

Content

Scanner excerpt · SKILL.md (reported line 4)May include surrounding context.

md
---
name: slide
version: "1.0.0"
description: "Create and manage presentation slides using JSONL storage. Use when building slide decks, applying themes, or exporting to HTML presentations."
author: BytesAgain
homepage: https://bytesagain.com
source: https://github.com/bytesagain/ai-skills

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script automatically creates ~/.slide and ~/.slide/data.jsonl on startup, and many commands later write updated deck and slide data to that file. While the file path is commented in code, there is no user-facing prompt, warning, or help text disclosing that invoking the skill will persist presentation content under the user's home directory.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The export command writes to any path supplied via --output with no path restrictions, confirmation, or safeguards. In an agentic context, untrusted prompts or indirect instruction could cause the skill to overwrite arbitrary user-accessible files, making this more dangerous than a normal local CLI because the write target may be attacker-influenced.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill states that data is stored in ~/.slide/data.jsonl and auto-created on first use, but it does not clearly warn users up front that invoking the skill will persist presentation content in their home directory. This can surprise users and lead to unintentional retention of sensitive slide content such as business plans, notes, or internal data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The HTML export feature writes a self-contained file containing slide content and embedded JavaScript, but the documentation does not warn users that exported content becomes a persistent artifact with active script content. This matters because sensitive slide material may be shared unintentionally, and consumers may open HTML files without understanding they contain executable browser-side code.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.