Back to skill

Security audit

Video Edit Compare

Security checks for vulnerabilities and agentic risk

Overview

This is a purpose-built video comparison skill that runs disclosed media-processing commands and writes disclosed review artifacts, with no evidence of hidden data theft or system persistence.

Install only in a workspace where you are comfortable letting ffmpeg read the selected source and final videos and write review files. Confirm the local video-understand/projectlib dependency is trusted, and prefer running it on explicit project paths rather than a sensitive general-purpose directory.

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
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill instructs the agent to invoke Python/ffmpeg and to write outputs under work/, review/, and cache paths, but it does not declare any explicit tool scope such as allowed-tools or permissions. That creates an authorization gap where an orchestrator may grant broader shell and file-write access than is actually needed, increasing the blast radius if the skill is modified, misused, or run in a sensitive workspace.

Content

No source excerpt is available for this finding.

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_compare.py (reported line 64)May include surrounding context.

python
def _probe(path):
    result = subprocess.run(
        [
            "ffprobe", "-v", "error", "-select_streams", "v:0",
            "-show_entries", "stream=width,height:format=duration", "-of", "json", str(path),

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_compare.py (reported line 83)May include surrounding context.

python
def _audio_hash(path):
    result = subprocess.run(
        [
            "ffmpeg", "-hide_banner", "-loglevel", "error", "-i", str(path),
            "-map", "0:a:0", "-c", "copy", "-f", "hash", "-hash", "md5", "-",

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_compare.py (reported line 95)May include surrounding context.

python
def _crop_bytes(path, at_s, x, y, size):
    sample_size = min(16, size)
    result = subprocess.run(
        [
            "ffmpeg", "-hide_banner", "-loglevel", "error", "-ss", f"{at_s:.6f}",
            "-i", str(path), "-vf",

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_compare.py (reported line 336)May include surrounding context.

python
if args.filter_only:
        return
    Path(args.output).parent.mkdir(parents=True, exist_ok=True)
    subprocess.run(command, check=True)
    output = Path(args.output).resolve()
    verify_output(timeline, args.source, args.final, output)
    parts = source_time_parts(timeline)

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This Python file writes several artifacts to disk, including the filtergraph file, generated label images, a comparison summary markdown file, and updates project JSON metadata. While the script's purpose involves producing output, there is no confirmation prompt, visible warning comment/docstring, or user-facing disclosure in the file that it will also modify project state and create auxiliary files beyond the main output video.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
tests/test_make_compare.py:9