T09 · Insecure Skill Coding Practices
- Location
scripts/poetry_recitation.py:219- Finding
Unrestricted Output Path Allows Overwriting Arbitrary Writable Files
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly does what it advertises, but it needs Review because it can use cloned voices without a confirmation step and can write output videos to unrestricted file paths.
Install only if you are comfortable with a skill that may use an existing cloned voice automatically for poem recitations. Avoid supplying arbitrary --output paths, and prefer running it in a workspace where accidental file overwrites are contained. Review voice choice, poem text, and output path before sharing generated videos.
scripts/poetry_recitation.py:219Unrestricted Output Path Allows Overwriting Arbitrary Writable Files
The skill declares shell and file-read-like behavior in its documented workflow but does not scope or constrain those capabilities with explicit permissions or allowed tools. This increases the blast radius of prompt-injection or operator misuse, because a caller can trigger local command execution and access local paths such as the TTS pipeline and output directories without any declared guardrails.
The description states the skill generates recitation videos with Chinese subtitles, and the rest of the document does not indicate any user opt-in or language selection. This is a natural-language locale policy concern because the skill appears to force a specific output language by default.
The workflow says to send generated media to the user with no extra confirmation even though the skill supports cloned-voice generation and creates files for delivery. That removes an important consent and review checkpoint for a sensitive output type, increasing the risk of impersonation, misuse of a cloned voice, or accidental delivery of harmful or unauthorized content.
This code file includes usage examples, CLI defaults, and runtime messages exclusively in Chinese, which imposes a specific language/locale on users. The file does not offer a language option or explain that the skill is intentionally limited to a Chinese-speaking or region-specific context.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
"--model", model,
"--output", output_audio_path,
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
print(f"❌ TTS 合成失败: {result.stderr}", file=sys.stderr)
sys.exit(1)
No suspicious patterns detected.