Back to skill

Security audit

Film Production Assistant

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent film pre-production assistant, but its optional DOCX export instructions use unsafe shell commands and its call-sheet workflow handles sensitive people and location details with limited privacy guidance.

Review this skill before installing. It appears useful for film pre-production, but do not run the provided DOCX export shell commands as written; export through safer tooling that avoids shell interpolation and uses unique temporary files. Treat generated call sheets as confidential because they may include phone numbers, addresses, access instructions, transport details, and safety-sensitive notes.

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
SKILL.md:80
Finding
Shell Command Injection and Unsafe Temporary-File Handling in DOCX Export## Vulnerability Details **File Location**: `SKILL.md`, lines 80–81 **Vulnerability Type**: Shell command injection and insecure predictable temporary file **Risk Level**: High ### Vulnerable Code ```bash echo "{{output}}" > /tmp/film-output.md pandoc /tmp/film-output.md -o "{{user-specified-path}}/{{ProjectTitle}}-{{DocumentType}}.docx" ``` ### Technical Analysis The documented export workflow interpolates generated or user-controlled values directly into shell commands. The `output`, `user-specified-path`, `ProjectTitle`, and `DocumentType` placeholders may contain quotes, command substitutions, shell metacharacters, or control operators. If the agent constructs and executes this command through a shell without strict escaping, crafted input can terminate the quoted value and introduce arbitrary commands. The workflow also uses the fixed, globally predictable path `/tmp/film-output.md`. An attacker with local access may create a symbolic link at that location before export. The shell redirection could then overwrite another file writable by the agent. Concurrent exports can also collide, overwrite one another, or expose residual production data to other local users. ### Attack Path 1. An attacker supplies crafted scene content, project metadata, document type, or an export destination containing shell syntax. 2. The attacker asks the agent to export the generated document to DOCX. 3. The untrusted value is substituted into the documented shell command. 4. When the command is evaluated by a shell, the crafted syntax escapes the intended argument and executes an attacker-selected local command. 5. The injected command runs with the operating-system privileges of the agent process. A local symlink attack is also possible: 1. A local attacker predicts the fixed path `/tmp/film-output.md`. 2. The attacker creates that path as a symbolic link to another file writable by the agent. 3. The export operation executes th ...[truncated 736 chars]
Remediation
## Remediation Suggestions 1. Do not build export commands by interpolating values into shell command strings. 2. Write generated Markdown through a filesystem API rather than `echo`. 3. Create a unique temporary file using a secure facility such as `mktemp` or the host language's temporary-file API. 4. Set restrictive permissions on the temporary file and directory, such as owner-only access. 5. Invoke `pandoc` through a process API with an argument array and shell evaluation disabled. 6. Validate `ProjectTitle` and `DocumentType` against a conservative filename allowlist, rejecting path separators, control characters, shell metacharacters, and traversal sequences. 7. Canonicalize the requested destination and verify that it remains inside the exact directory approved by the user. 8. Avoid overwriting existing output files unless the user explicitly confirms it. 9. Remove temporary files in guaranteed cleanup logic, including failure and cancellation paths. 10. If a shell is unavoidable, pass data through positional parameters and apply robust platform-specific escaping; however, direct process and filesystem APIs remain the preferred solution.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (10)

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The skill's trigger section explicitly references 'David (or any user),' indicating tailoring to a named individual without opt-in. Personalized routing rules can bias behavior, expose assumptions about user identity, and make the skill behave differently for one person in ways other users did not request.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger guidance ends with a broad catch-all for 'Any film pre-production planning request,' which can cause the skill to activate on loosely related requests without clear user intent. Over-broad activation increases the chance of inappropriate routing, unexpected data handling, or applying this skill when a different workflow would be safer or more appropriate.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**Requires:** `pandoc` must be installed on the host (`brew install pandoc` on Mac). If not available, deliver the output as text only.

**Only export when the user asks.** Do not automatically save files without confirmation.

```bash
# Only run this when user explicitly requests a file export
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.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- Production Schedule: `ProjectTitle-Schedule.docx`
- Budget: `ProjectTitle-Budget.docx`

**Ask the user for save location.** Do not default to `~/Desktop` without asking first.
Always confirm the file was saved and provide the full path.

---
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.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The 'David's Film Background Note' instructs the agent to alter behavior for a specific named individual by skipping basics and assuming professional expertise. This can lead to undisclosed profiling, inappropriate assumptions, and reduced safety/usability if the identity or expertise is wrong or if similar treatment leaks into interactions with other users.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The document recommends including precise addresses, GPS, access codes, parking instructions, and alternate routes without any warning that these details are sensitive or should be restricted. For active filming locations, broad distribution of site-access information could enable unauthorized access, theft, stalking, or disruption of production operations.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The reference explicitly instructs inclusion of sensitive contact categories such as key phone numbers, cast/crew names, emergency contacts, and hospital/police details, but provides no guidance on limiting circulation, redacting fields, or handling the document as confidential. In a film-production context, call sheets are commonly distributed broadly to cast and crew, so omission of privacy and need-to-know controls increases the risk of unnecessary exposure of personal and operational information.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
This output exposes sensitive operational details including full names, phone numbers, a residential filming address, hotel pickup location, building access instructions, and emergency contact information. In a generative skill context, emitting realistic call sheets without privacy controls can enable stalking, harassment, doxxing, social engineering, or unauthorized access to people and locations if the output is based on real productions or reused as a template.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
┌─────────────────────────────────────────────────────────────────────┐
│ SPECIAL NOTES — READ BEFORE ARRIVING ON SET                          │
├─────────────────────────────────────────────────────────────────────┤
│ 1. DO NOT MOVE FURNITURE without checking with Set Decorator first   │
│                                                                       │
│ 2. ESPRESSO MACHINE is a HERO PROP — handle only through Props Dept. │
│    Do not operate, move, or touch without Props Master present.      │
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.

Missing User Warnings

Low
Confidence
77% confidence
Finding
The file includes stunt activity involving breakaway mugs and operational instructions around potential hazards. Although there are inline notes for crew, the markdown as a skill output does not provide a user-facing warning that the generated document may contain safety-critical production instructions requiring qualified supervision.

Static analysis

No suspicious patterns detected.