Back to skill

Security audit

Supplier Video Ad Builder

Security checks for vulnerabilities and agentic risk

Overview

The skill largely matches its video-ad purpose, but one script can delete a local directory path influenced by the product config, so untrusted configs need review.

Only run this skill with configs you created or trust. Before running, make sure output_name is a plain filename such as product-ad.mp4 with no slashes or .. path segments, and consider running it in a dedicated working directory or container until the temp-directory cleanup is hardened.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/detect_clean_zones.py (reported line 33)May include surrounding context.

python
out_dir.mkdir(parents=True, exist_ok=True)

    # Get video duration
    r = subprocess.run(
        ['ffprobe', '-v', 'quiet', '-show_entries', 'format=duration',
         '-of', 'csv=p=0', str(video)],
        capture_output=True, text=True

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/detect_clean_zones.py (reported line 43)May include surrounding context.

python
print(f'📹 {video.name} — {duration:.1f}s → extracting {n_frames} frames at 1fps...')

    subprocess.run([
        'ffmpeg', '-y', '-i', str(video),
        '-vf', 'fps=1,scale=480:-1',
        str(out_dir / 'f_%02d.jpg'),

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/make_product_ad.py (reported line 32)May include surrounding context.

python
def run(cmd, label=''):
    r = subprocess.run(cmd, capture_output=True, text=True)
    if r.returncode != 0:
        print(f'ERROR [{label}]:\n{r.stderr[-800:]}')
        raise SystemExit(1)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/make_product_ad.py (reported line 42)May include surrounding context.

python
def get_duration(path):
    r = subprocess.run(
        ['ffprobe', '-v', 'quiet', '-show_entries', 'format=duration', '-of', 'csv=p=0', str(path)],
        capture_output=True, text=True
    )

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script recursively deletes a path derived in part from untrusted configuration data via cfg['output_name'], with no path canonicalization or boundary check before shutil.rmtree(tmp). If a crafted output_name contains path traversal sequences, tmp may resolve outside the intended output directory, allowing deletion of unintended directories writable by the user running the script.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

This code creates output directories, writes multiple temporary files, and generates concat list files, but the only disclosure is generic progress output rather than an explicit warning that the script will create and later delete working files. Under the code-file criteria, file writes should have some visible disclosure, comment, or warning; here the behavior is only implicitly described in the module docstring and progress logs.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.