T08 · Insecure Dependencies
- Location
scripts/process_video.py:1- Finding
Unpinned Runtime Dependencies Create a Supply-Chain Execution Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s YouTube-editing purpose is coherent, but it needs Review because it runs unpinned dependencies, invokes another local skill, and can expose an optional image API key through a child-process command line.
Review before installing. Run it only in an isolated project directory, use narrowly scoped API keys, avoid enabling the optional image-generation path until the key handling is fixed, review any installed `nano-banana-pro` skill separately, and avoid untrusted avatar filenames or paths. Prefer a release with pinned dependencies, a lockfile, escaped thumbnail asset paths, and environment-based secret passing to child processes.
scripts/process_video.py:1Unpinned Runtime Dependencies Create a Supply-Chain Execution Risk
scripts/process_video.py:173NANO_BANANA_KEY Is Exposed in a Child Process Command Line
scripts/process_video.py:214Unescaped Avatar Path Allows Markup Injection into the Thumbnail Document
The markdown states that GPT-4 creates SEO-optimized titles, descriptions, and tags specifically in Korean. This is a natural-language locale constraint presented as a default behavior, with no indication that users can choose another language or opt in to Korean output.
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.
- **🎨 AI Thumbnails (Pro):**
- **Consistent Character:** Maintains the style of your avatar (or the default Pirate Lobster) while generating new poses! (Image-to-Image)
- **Custom Fonts:** Paperlogy ExtraBold included.
- **Background Removal:** Automatically removes background from the generated character.
- **Layout:** Professional Black & Gold design.
- **🛡️ Security Hardening (v1.0.11):**
- YouTube URL allowlist validation (blocks localhost/private-network targets)
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
output_audio
]
try:
subprocess.run(cmd, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, timeout=900)
except FileNotFoundError:
print("Error: FFmpeg not found. Please install ffmpeg.")
exit(1)
The prompt explicitly requires generated metadata to be in Korean and reiterates that all text output must be Korean. This is a natural-language locale policy constraint with no user opt-in or documented region-specific justification in the file.
This subprocess executes another local skill script via uv run, effectively creating a cross-skill trust boundary without validating the integrity or provenance of the target script. If an attacker can place or modify the referenced nano-banana-pro skill in one of the searched locations, running this script will execute attacker-controlled code with the current user's privileges and access to provided API keys.
try:
# SECURITY: Timeout prevents runaway processes
subprocess.run(cmd, check=True, timeout=900)
return True
except subprocess.CalledProcessError:
print("⚠️ Image generation failed.")
The description emphasizes full Korean support as a headline feature, and elsewhere the content generation is described as Korean-specific. Taken together, this suggests a locale policy constraint without user opt-in or a clearly documented regional-only purpose.
The generate_image docstring/documentation states that the API key is read from environment variable NANO_BANANA_KEY, which is true for that helper, but the overall script also depends on OPENAI_API_KEY for transcription and analysis. This creates intent/documentation divergence because the surrounding documentation can mislead a reviewer about what secrets the script actually uses.
No suspicious patterns detected.