T09 · Insecure Skill Coding Practices
- Location
SKILL.md:122- Finding
Unreliable Reference Image Discovery Can Expose Unrelated Private Media
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This image-production skill is coherent overall, but it needs review because it can send image data to external AI services and has unsafe local file handling that could process or delete the wrong files.
Install only if you are comfortable with your generated images, briefs, and constraints being sent to Google Gemini and with the skill invoking local image-generation scripts. Prefer a version that obtains exact attachment paths from trusted session metadata, uses private temporary directories, pins or verifies the generator, and validates all cleanup paths before deletion.
SKILL.md:122Unreliable Reference Image Discovery Can Expose Unrelated Private Media
SKILL.md:261Predictable Shared Temporary Files Permit Symlink Attacks and Sensitive Data Retention
SKILL.md:207Untrusted Generator Output Is Later Used as Destructive Cleanup Authority
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.
**Question sequence:**
1. **What do you want changed?**
Examples: "Swap the outfit only — keep everything else identical" / "Change background to outdoor" / "Create entirely new composition"
2. **Where will this image be used? (determines aspect ratio)**
Examples: Instagram post (1:1) / Instagram Story or TikTok (9:16) / website banner (16:9) / e-commerce product page (4:5) / print / other
The skill sends a base64-encoded generated image plus the creative brief and constraints to an external Gemini API endpoint. This is an external data transmission vulnerability when users may not understand that their images and associated content are being exported to a third party, potentially including sensitive or proprietary material.
]}]}')
# Call Gemini API — capture HTTP status and body separately
HTTP_STATUS=$(curl -s -w "%{http_code}" -o /tmp/sd-critique.json \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H "Content-Type: application/json" \
-d "$PAYLOAD")
The skill instructs automatic deletion of generated files via rm without clearly warning the user beforehand or obtaining explicit confirmation for destructive cleanup. In an agent setting, silent file deletion can cause unexpected data loss, especially if iteration logs or file paths are wrong or broader than intended.
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.
**Default (Interactive):** Confirm every stage. Full output at each step.
**Fast Mode (user must explicitly request):**
User says "fast mode" → auto-advance through Stages 2–3 without confirmation.
Generation (Stage 4) and Critique (Stage 5) always require confirmation regardless of mode.
---
The manifest description states that every stage requires explicit user confirmation. Later instructions define a Fast Mode where stages 2–3 proceed automatically, which directly contradicts that blanket claim rather than merely adding implementation detail.
The termination instruction says to exit drip-director mode completely, but then says pipeline logic should not resume unless the user explicitly invokes 'shot-director' again. That contradicts the skill's own declared name 'drip-director' and creates intent ambiguity about how the mode is re-entered.
No suspicious patterns detected.