Back to skill

Security audit

RoughCut

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent video-editing purpose, but it runs an unpinned external local repository script and may ask for a raw Gemini API key without enough handling guidance.

Install only if you trust and control the referenced RoughCut checkout. Before running, verify the repository origin and commit yourself, avoid running from an arbitrary modified `repo_root`, and provide `GEMINI_API_KEY` through a local environment variable only when fluff removal is explicitly enabled. Treat direct download URLs and generated debug bundles as potentially sensitive because they may contain or derive from your video content.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (1)

T08 · Insecure Dependencies

Error
Location
SKILL.md:35
Finding
Execution of Unpinned Code from an External Repository<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 35-36 and 52-57 **Vulnerability Type**: Unpinned external dependency execution **Risk Level**: High ### Vulnerable Code ```markdown 2. Confirm RoughCut repo is present on the same Mac. - Repo: https://github.com/samerGMTM22/OpenClaw-RoughCut ``` ```bash bash "$REPO_ROOT/scripts/openclaw/roughcut.sh" \ --video "$VIDEO_ABS_PATH" \ --out "$OUTPUT_ROOT" \ --remove-bad-takes true \ --remove-fluff false ``` ### Technical Analysis The skill instructs the agent to execute `scripts/openclaw/roughcut.sh` from a separately obtained GitHub repository. It does not require a specific commit, immutable release, cryptographic checksum, digital signature, or other integrity verification before execution. The executable behavior of this skill is therefore not fully represented by the audited package. The external repository can change independently after this skill has been reviewed. In addition, the configured `repo_root` could refer to a modified or substituted local checkout. Although the documented shell variables are quoted, which reduces direct shell-injection risk through those arguments, quoting does not establish the trustworthiness or integrity of the external script itself. ### Attack Path 1. An attacker compromises the referenced repository, distributes a modified checkout, or causes `repo_root` to point to an attacker-controlled directory. 2. The malicious checkout supplies a modified `scripts/openclaw/roughcut.sh`. 3. The agent follows the skill instructions and invokes the script using Bash. 4. The modified script executes arbitrary commands with the privileges of the OpenClaw process. 5. Those commands can access resources available to that process, including local input videos, configured output locations, and environment variables such as `GEMINI_API_KEY` when present. This path requires compromise, substitution, or unsafe selection of the external repository; the review ...[truncated 879 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Bundle the reviewed runner and its required implementation inside the skill package so its executable behavior is included in security review. 2. If the external repository must remain separate, require an immutable, audited commit hash rather than a branch or mutable release reference. 3. Before execution, verify: - The repository's expected remote origin. - The exact checked-out commit. - A published SHA-256 checksum or a cryptographically verified signature. - That the working tree contains no unreviewed modifications. 4. Refuse execution when the repository path, commit, signature, checksum, or working-tree state does not match the approved values. 5. Run the script with least privilege and restrict access to only the required input and output directories. 6. Provide `GEMINI_API_KEY` only when fluff removal is explicitly enabled, avoid exporting it globally, and use a narrowly scoped or dedicated key where supported. 7. Document whether transcripts or other derived media content are transmitted to Gemini, including the relevant privacy and retention implications. 8. Pin and verify the runner's downstream package dependencies and external tools to reduce transitive supply-chain exposure. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill explicitly instructs the agent to ask the user for a GEMINI_API_KEY and use it for fluff removal, but it does not provide clear guidance on secure handling, storage, scope limitation, or warnings about sharing secrets with the agent runtime. In an agent setting, requesting credentials can expose users to unnecessary secret disclosure, accidental logging, reuse in unintended contexts, or persistence in transcripts and environment configuration.

Static analysis

No suspicious patterns detected.