Back to skill

Security audit

Slide Maker

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed slide-deck builder, but its mandatory validation can execute adjacent Python files from a deck folder, which is risky for decks received from others.

Install only if you are comfortable with a deck-building skill that runs Python tooling, installs dependencies, writes a preference registry, and performs network-backed asset/version operations. Do not use its validation directly on a deck folder from someone else unless you first move the PPTX into a clean folder or inspect and trust any adjacent surface_*.py or style.py files.

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

Error
Location
scripts/register_surface.py:969
Finding

Automatic Execution of Untrusted Deck Sidecar Files During Mandatory Validation

Content
View full analysis

Vulnerability Details

File Location: scripts/register_surface.py:969-995
Vulnerability Type: Untrusted Python module execution
Risk Level: High

Related call-chain evidence:

  • SKILL.md:2850-2852 requires the gate for every hand-off.
  • scripts/check_register_guard.py:182 loads kits from the directory containing the selected PPTX.
  • references/security-and-capabilities.md:65-69 explicitly acknowledges that checking an externally supplied deck executes adjacent surface_*.py files.

Vulnerable code:

python
KIT_GLOB = "surface_*.py"      # a deck's own kits live beside it, under this name


def load_kits(directory, *, quiet=False):
    """Import every `surface_*.py` beside a deck, so its INVENTED registers exist in this process.

    Registration happens at import time, which means a kit only exists where its file was imported.
    The gates do not run inside the build — they run afterwards, in a fresh process — so a bespoke
    register's declared prohibitions were being enforced exactly nowhere. Measured with a scaffolded
    kit that forbids gradients and a deck that draws one: caught in-process, and reported by the
    real gate as "a bespoke look has no FORBIDS to check". A capability that exists in the library
    and not at hand-off is the shape this repo keeps re-learning.

    Returns `(loaded, errors)`. It never raises: a kit that fails to import must produce a NOTE on
    the gate, not a traceback that reads like a broken deck.
    """
    import importlib.util
    directory = Path(os.path.expanduser(str(directory)))
    loaded, errors = [], []
    try:
        files = sorted(directory.glob(KIT_GLOB))
    except OSError as exc:
        return loaded, ["cannot list {}: {}".format(directory, exc)]
    for f in files:
        mod = "slide_maker_kit_" + re.sub(r"[^a-z0-9_]+", "_", f.stem.lower())
        try:
            spec = importlib.util.spec_from_file_locati
...[truncated 3414 chars]
Remediation
View remediation

Remediation Suggestions

  1. Disable automatic sidecar imports for external decks. Treat surface_*.py as executable plugins rather than presentation assets, and reject or ignore them by default during review and redesign workflows.
  2. Require explicit, enforceable authorization. Add an opt-in argument that names each exact kit to load. Do not rely only on prose instructing the Agent to inspect files.
  3. Bind trusted kits to the deck record. Store the approved relative path and a cryptographic hash in a generated manifest, then verify both immediately before loading.
  4. Restrict path resolution. Require plain filenames, reject symlinks, resolve the target path, and verify it remains in the intended deck directory.
  5. Separate validation from execution. Where possible, represent register constraints in a declarative format such as validated JSON instead of executable Python.
  6. Sandbox unavoidable plugin execution. Run approved kits in a separate process with no network access, a minimal environment, no inherited credentials, restricted filesystem access, resource limits, and a narrowly defined output protocol.
  7. Change the gate behavior. If unexpected surface_*.py files are present, fail safely and report their names rather than importing them.
  8. Add regression tests. Verify that a deck received from an untrusted folder cannot cause adjacent Python to execute unless the exact file and hash have been explicitly approved.
Vulnerability Patterns
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • 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 (370)

Dangerous chain: exec() wrapping compile

Critical
Category
Dangerous Code Execution
Confidence
99% confidence
Finding

The script dynamically compiles and executes code from _sigs.EXAMPLES via exec(compile(...)). If that example registry is modified by an attacker or sourced from untrusted content, running the smoke test gives that code arbitrary local code execution with the privileges of the user running the script.

Content

Scanner excerpt · scripts/smoke_deckkit.py (reported line 622)May include surrounding context.

python
# `prs` too: a real build script always has the presentation in scope, and a scaffold
            # that has to work around its absence stops looking like the code it is teaching (the
            # navigation forms create the slides they jump to).
            exec(compile(code, f"<scaffold:{name}>", "exec"),
                 {"dk": dk, "s": sl, "dc": dc, "prs": p})
        except Exception as e:
            bad.append(f"{name}: {type(e).__name__}: {e}")

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Environment setup behavior includes auto-installing packages, checking system tools, and probing writable directories, which materially exceeds ordinary slide authoring. Because these actions mutate the host environment, the description mismatch increases the chance of users granting trust to actions they did not anticipate.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/archetypes.py:42

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/assemble.py:84

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/codex_delivery_gate.py:621

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/palette_audit.py:86

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/register_surface.py:994

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/slide_index.py:41

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/vl_langs/__init__.py:32

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/vl_specs/__init__.py:39