Back to skill

Security audit

Clips Machine

Security checks across malware telemetry and agentic risk

Overview

This skill appears to be a coherent local video-clipping tool, but users should understand that it downloads/processes media, runs external video/transcription tools, and writes generated files locally.

Install only if you intend to process the provided media locally and create output files. Use trusted installations of ffmpeg, yt-dlp, and whisper-cpp, avoid sensitive/private videos unless local storage is acceptable, and review or set the output directory before running.

SkillSpector

By NVIDIA
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
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (9)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
whisper_cmd = str(whisper_cpp_dir / "main")
        whisper_model = str(whisper_cpp_dir / "models" / "ggml-base.en.bin")

    subprocess.run([
        whisper_cmd, "-m", whisper_model,
        "-f", audio_path, "-oj", "-of", output_base
    ], capture_output=True)
Confidence
83% confidence
Finding
subprocess.run([ whisper_cmd, "-m", whisper_model, "-f", audio_path, "-oj", "-of", output_base ], capture_output=True)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
with open(ass_file, "w") as f:
        f.write(header + events)

    subprocess.run([
        "ffmpeg", "-y", "-i", video_path,
        "-vf", f"ass={ass_file}",
        "-c:v", "libx264", "-preset", "fast", "-c:a", "aac",
Confidence
78% confidence
Finding
subprocess.run([ "ffmpeg", "-y", "-i", video_path, "-vf", f"ass={ass_file}", "-c:v", "libx264", "-preset", "fast", "-c:a", "aac", output_path ], capture_output=

Tainted flow: 'transcript_path' from os.getenv (line 422, credential/environment) → open (file write)

Medium
Category
Data Flow
Content
print("\nStep 2/5: Transcribing audio...")
    transcript = transcribe_with_timestamps(video_path)
    transcript_path = output_dir / "transcript.json"
    with open(transcript_path, "w") as f:
        json.dump(transcript, f, indent=2)
    results["transcript"] = str(transcript_path)
    print(f"   Done - Transcribed {len(transcript)} segments")
Confidence
89% confidence
Finding
with open(transcript_path, "w") as f:

Tainted flow: 'moments_path' from os.getenv (line 438, credential/environment) → open (file write)

Medium
Category
Data Flow
Content
moments = detect_viral_moments(transcript, num_clips=num_clips, min_score=min_score)
    moments_path = output_dir / "viral_moments.json"
    with open(moments_path, "w") as f:
        json.dump(moments, f, indent=2)
    results["viral_moments"] = str(moments_path)
    print(f"   Done - Found {len(moments)} viral moments")
Confidence
89% confidence
Finding
with open(moments_path, "w") as f:

Tainted flow: 'output_dir' from os.getenv (line 397, credential/environment) → open (file write)

Medium
Category
Data Flow
Content
summary += f"- Time: {moment['start_time']:.1f}s - {moment['end_time']:.1f}s\n"
        summary += f"- Hook: {moment['hook']}\n- File: clip_{i+1:03d}.mp4\n\n"

    with open(output_dir / "summary.md", "w") as f:
        f.write(summary)
    results["summary"] = str(output_dir / "summary.md")
Confidence
89% confidence
Finding
with open(output_dir / "summary.md", "w") as f:

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill clearly expects to use network access, shell execution, and file writes, but it does not declare those permissions. That creates a transparency and consent problem: a user or platform may invoke the skill without realizing it can download remote content, execute host binaries, and write multiple output files. In this context the behavior appears aligned with the stated video-processing workflow, so the issue is under-declaration rather than hidden malicious capability.

Missing User Warnings

Low
Confidence
88% confidence
Finding
The quick-start and description do not prominently warn that supplied URLs will be fetched/downloaded and that local files will be processed with multiple generated artifacts written to disk. That omission can lead to accidental processing of sensitive local media or unintended network retrieval and storage, especially in agentic environments where users may assume a dry analysis. The context makes this less severe than active exfiltration, but clear upfront disclosure is still important.

Unvalidated Output Injection

High
Category
Output Handling
Content
whisper_cmd = str(whisper_cpp_dir / "main")
        whisper_model = str(whisper_cpp_dir / "models" / "ggml-base.en.bin")

    subprocess.run([
        whisper_cmd, "-m", whisper_model,
        "-f", audio_path, "-oj", "-of", output_base
    ], capture_output=True)
Confidence
84% confidence
Finding
subprocess.run([ whisper_cmd, "-m", whisper_model, "-f", audio_path, "-oj", "-of", output_base ], capture_output

Unvalidated Output Injection

High
Category
Output Handling
Content
with open(ass_file, "w") as f:
        f.write(header + events)

    subprocess.run([
        "ffmpeg", "-y", "-i", video_path,
        "-vf", f"ass={ass_file}",
        "-c:v", "libx264", "-preset", "fast", "-c:a", "aac",
Confidence
79% confidence
Finding
subprocess.run([ "ffmpeg", "-y", "-i", video_path, "-vf", f"ass={ass_file}", "-c:v", "libx264", "-preset", "fast", "-c:a", "aac", output_path ], capture_output

VirusTotal

64/64 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.