Back to skill

Security audit

Video Clip Assistant

Security checks for vulnerabilities and agentic risk

Overview

This video-editing skill is purpose-aligned, but it can overwrite local files and has insufficient safeguards around user media, transcripts, and subtitle rendering inputs.

Review output paths carefully before running this skill, avoid using it on sensitive meetings or private videos unless you are comfortable with transcripts and edit files being written locally, and do not process untrusted subtitle filenames or style files. Prefer using a separate output directory and keep backups of important files because existing outputs may be overwritten.

Vulnerability Patterns
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (7)

Lp3

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding
The skill documents shell execution, file read/write, and environment-dependent tooling, but declares no permissions or trust boundaries. That mismatch is dangerous because an agent may invoke powerful local operations on arbitrary user-supplied paths or media files without explicit consent controls, making unintended file access, overwrites, or command execution more likely.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The invocation description is broad enough to match many generic video-editing requests, which can cause the skill to activate in situations the user did not specifically intend. Because this skill can drive transcription, editing, and rendering workflows with file and shell capabilities, over-triggering increases the chance of unnecessary access to local media and accidental destructive operations.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill encourages automated transcription and AI analysis of user videos but provides no privacy notice about processing potentially sensitive audio, faces, speakers, or embedded personal data. In this context, transcripts and derived EDL/subtitle artifacts can persist on disk and expose confidential meeting content or personal information beyond the user's expectations.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The script invokes ffmpeg with -y, which forces overwrite of existing output files without user confirmation. Because output paths are fully user-controllable in this skill, a mistaken or maliciously chosen path can silently replace existing files, causing data loss or destructive overwrites in automated workflows.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The code forces ffmpeg overwrite mode with '-y' and deterministically names output files, so existing files in the target directory can be silently replaced. In an automated agent skill, this can cause unintended data loss or destructive overwrites when users reuse an output directory.

Unvalidated Output Injection

High
Category
Output Handling
Content
"-c:a", "aac",
        output
    ]
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode != 0 and "Unable to parse option" in result.stderr:
        # fallback: 简化滤镜
        cmd = [
Confidence
88% confidence
Finding
The code builds an ffmpeg subtitles filter string by directly interpolating user-controlled values such as srt_file, font, color, and style-derived properties into a single filter expression. Even though shell injection is mitigated by subprocess.run([...]), ffmpeg/libass filter parsing has its own escaping rules, so crafted filenames or style values containing quotes, colons, commas, or filter metacharacters can break parsing, alter filter behavior, or cause writes to unintended paths via the temporary '.utf8.srt' conversion flow.

Unvalidated Output Injection

High
Category
Output Handling
Content
"-c:a", "aac",
            output
        ]
        result = subprocess.run(cmd, capture_output=True, text=True)
    return result.returncode == 0

if __name__ == "__main__":
Confidence
85% confidence
Finding
The fallback command still embeds the user-controlled subtitle filename directly into an ffmpeg filter expression: subtitles='...'. A maliciously crafted subtitle path can exploit ffmpeg filter parsing semantics even without shell execution, leading to malformed processing, unexpected file access behavior, or denial of service in an automation pipeline that handles untrusted media inputs.

Static analysis

No suspicious patterns detected.