Back to skill

Security audit

CC Video Creation

Security checks for vulnerabilities and agentic risk

Overview

This skill is a narrow FactSage video-production helper with expected local rendering behavior and one privacy consideration around cloud text-to-speech.

Install only if you are comfortable running local video-rendering scripts in the FactSage project. Do not use private or sensitive scripts for voiceover unless you accept sending that text to Edge TTS, and treat the project media/segment directories as trusted input.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
for seg in segment_files:
                f.write(f"file '{seg}'\n")
        
        subprocess.run([
            'ffmpeg', '-y', '-f', 'concat', '-safe', '0',
            '-i', concat_file, '-c', 'copy', concat_video
        ], capture_output=True, check=True)
Confidence
85% confidence
Finding
The concat demuxer is invoked with '-safe 0', and the concat file is populated with file paths written without escaping or strict validation. If an attacker can influence segment file names or the concat file contents, ffmpeg may be tricked into reading unintended files or misparsing entries, creating a file-handling injection issue in a privileged automation context.

subprocess module call

Medium
Category
Dangerous Code Execution
Content
with open(cf, 'w') as f:
        for s in seg_files:
            f.write(f"file '{s}'\n")
    subprocess.run(['ffmpeg','-y','-f','concat','-safe','0','-i',str(cf),'-c','copy',str(cv)],
                   capture_output=True, check=True)
    
    # 5. Audio
Confidence
76% confidence
Finding
The concat step writes an ffmpeg concat manifest using unescaped file paths and then invokes ffmpeg with -safe 0, which disables path safety checks. If an attacker can influence segment file paths or create crafted filenames containing quotes/newlines, ffmpeg may read unintended files or process attacker-controlled entries from the manifest.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script sends voiceover text to the external edge_tts service without any user-facing disclosure, consent flow, or data classification check. If scripts contain sensitive, private, or unpublished content, this can result in unintended data exfiltration to a third-party network service.

Unvalidated Output Injection

High
Category
Output Handling
Content
for seg in segment_files:
                f.write(f"file '{seg}'\n")
        
        subprocess.run([
            'ffmpeg', '-y', '-f', 'concat', '-safe', '0',
            '-i', concat_file, '-c', 'copy', concat_video
        ], capture_output=True, check=True)
Confidence
86% confidence
Finding
The concat manifest is written as plain text using unescaped file paths and then consumed by ffmpeg with '-safe 0'. In environments where an attacker can place crafted filenames or symlinks in the segments directory, this can lead to unintended file inclusion or path traversal-like behavior through ffmpeg's file-list parsing.

Static analysis

No suspicious patterns detected.