Back to skill

Security audit

frontendslides

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent presentation-building helper, with some normal but privacy- and supply-chain-relevant behaviors users should understand before use.

Before installing, be aware that generated decks may load fonts from third-party CDNs, optional inline editing stores slide text in browser localStorage, and PPT/image workflows may require unpinned Python packages. Use a virtual environment for Python installs and avoid opening sensitive decks with remote fonts enabled if network privacy matters.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:192
Finding

Unpinned Third-Party Python Dependencies

Content
View full analysis
` (install python-pptx if needed: `pip install python-pptx`) ``` `html-template.md:259`: ```markdown **Dependency:** `pip install Pillow` ``` `scripts/extract-pptx.py:9`: ```python Requires: pip install python-pptx ``` ### Technical Analysis The skill directs the agent or user to install `python-pptx` and `Pillow` without specifying exact versions, package hashes, a lockfile, an approved package index, or other integrity controls. Consequently, the installed code depends on whichever package release and index configuration are active at execution time. This creates a supply-chain risk because the effective dependency code can change after the skill has been reviewed. A compromised package maintainer account, malicious future release, compromised package index, or attacker-controlled index configured through pip settings could cause an unsafe package to be installed. The risk is particularly relevant to `python-pptx`, because `scripts/extract-pptx.py` imports the package immediately: ```python from pptx import Presentation ``` Imported third-party modules execute initialization code with the privileges of the Python process. Pillow is likewise imported by the documented image-processing workflow. No evidence indicates that the currently named packages are malicious; the vulnerability is the absence of reproducible dependency and integrity controls. ### Attack Path 1. An attacker compromises a referenced package release, its publisher account, or a Python package index used by the environment. 2. The user requests PPTX conversion or image processing. 3. Follo ...[truncated 1205 chars]
Remediation
View remediation
Pillow== ``` 2. Record cryptographic hashes for every permitted distribution and require verification: ```bash python -m pip install --require-hashes -r requirements.txt ``` 3. Use an approved, explicitly configured package index rather than relying silently on the environment's active pip configuration. 4. Install dependencies in a dedicated virtual environment with no elevated privileges: ```bash python -m venv .venv . .venv/bin/activate python -m pip install --require-hashes -r requirements.txt ``` 5. Review and update pinned versions through a controlled dependency-update process that includes vulnerability scanning and package provenance checks. 6. Replace all inline `pip install python-pptx` and `pip install Pillow` instructions with references to the verified requirements file. 7. Document the tested Python version and dependency versions so PPT extraction and image processing are reproducible across environments. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (9)

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · html-template.md (reported line 15)May include surrounding context.

md
<meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Presentation Title</title>

    <!-- Fonts: use Fontshare or Google Fonts — never system fonts -->
    <link rel="stylesheet" href="https://api.fontshare.com/v2/css?f[]=...">

    <style>

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 7)May include surrounding context.

md
## What This Does

**Frontend Slides** helps non-designers create beautiful web presentations without knowing CSS or JavaScript. It uses a "show, don't tell" approach: instead of asking you to describe your aesthetic preferences in words, it generates visual previews and lets you pick what you like.

Here is a deck about the skill, made through the skill:

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 30)May include surrounding context.

bash
# Create the skill directory
mkdir -p ~/.claude/skills/frontend-slides/scripts

# Copy all files (or clone this repo directly)
cp SKILL.md STYLE_PRESETS.md viewport-base.css html-template.md animation-patterns.md ~/.claude/skills/frontend-slides/

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill instructs the agent to create and open files, save previews, and delete directories, but it does not declare an explicit tool scope such as allowed-tools or permissions. That mismatch weakens least-privilege controls and can let a broadly tooled agent perform filesystem actions the user did not clearly authorize in the skill manifest.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
4. **After ANY modification, verify:** `.slide` has `overflow: hidden`, new elements use `clamp()`, images have viewport-relative max-height, content fits at 1280x720
5. **Proactively reorganize:** If modifications will cause overflow, automatically split content and inform the user. Don't wait to be asked

**When adding images to existing slides:** Move image to new slide or reduce other content first. Never add images without checking if existing content already fills the viewport.

---

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The PPT conversion flow tells the agent to run local shell commands and install software with pip, which expands the skill from content generation into host modification and code execution. Even if intended for functionality, package installation and script execution introduce supply-chain and environment-risk paths that are broader than necessary for a presentation skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The base HTML template hard-codes <html lang="en">, which forces an English locale for every generated presentation. The file presents this as the required reference structure and does not offer a user language choice or explain a region-specific need.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The template instructs generated presentations to load remote font CSS from api.fontshare.com, which causes network requests to a third party whenever the file is opened. In a local/offline presentation workflow, this can leak IP address, user agent, referrer/file access context, and usage timing, and it also creates a supply-chain dependency on externally hosted assets.

Content

Scanner excerpt · html-template.md (reported line 16)May include surrounding context.

md
<title>Presentation Title</title>

    <!-- Fonts: use Fontshare or Google Fonts — never system fonts -->
    <link rel="stylesheet" href="https://api.fontshare.com/v2/css?f[]=...">

    <style>
        /* ===========================================

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill promotes inline editing with automatic localStorage persistence but does not clearly warn the user that presentation content will remain stored in the browser. This can expose sensitive slide text to other local users or future sessions and creates hidden data retention the user may not expect.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.