Back to skill

Security audit

remotion-bozo

Security checks for vulnerabilities and agentic risk

Overview

This Remotion video scaffolding skill is mostly coherent, but it needs review because it can write project files outside the intended folder and its AWS Lambda rendering guidance is under-scoped for credentials and deletion actions.

Install only if you are comfortable reviewing and controlling the generated project path and any AWS use. Use simple project names without slashes or special characters, run the scaffold only in a disposable or empty parent directory, and avoid Lambda rendering for sensitive media unless you use least-privilege or short-lived AWS credentials and understand what will be uploaded or deleted.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
create-video.sh:27
Finding

Unvalidated Project Name Allows Path Traversal and Generated-File Corruption

Content
View full analysis
" print_yellow "示例: remotion-bozo create my-video" exit 1 fi PROJECT_NAME=$1 PROJECT_DIR=$(pwd)/$PROJECT_NAME print_green "🎬 创建 Remotion 视频项目: $PROJECT_NAME" # 1. 创建项目目录 print_blue "📁 创建项目目录..." mkdir -p "$PROJECT_DIR" cd "$PROJECT_DIR" ``` The same untrusted value is subsequently inserted into `package.json`: ```bash # 替换项目名称 sed -i '' "s/PROJECT_NAME/$PROJECT_NAME/g" package.json ``` ### Technical Analysis The script accepts its first argument as a project name but only checks whether the argument is empty. It does not restrict path separators, parent-directory components, control characters, or characters significant to `sed`. Because `PROJECT_NAME` is appended directly to the current working directory, a value containing `../` can resolve outside the intended project workspace. Quoting `"$PROJECT_DIR"` prevents shell word splitting and glob expansion, but it does not prevent filesystem path traversal. After changing into the resulting directory, the script creates or overwrites files such as `package.json`, `tsconfig.json`, `README.md`, `src/index.tsx`, and `src/MyVideo.tsx`. The project name is also used as the replacement text in a double-quoted `sed` expression. Characters such as `/`, `&`, quotes, backslashes, or embedded newlines can alter the replacement operation or produce invalid JSON. This is not demonstrated as direct shell-command injection because the value remains within a quoted shell argument, but it can corrupt generated content and cause unintended substitutions. ### Attack Path 1. An attacker or untrusted caller supplies a crafted project name, for example: ```bash ./create-video.sh ../../target ``` 2. The script co ...[truncated 1460 chars]
Remediation
View remediation
&2 exit 1 fi ``` 2. Establish an explicit base directory, resolve the destination to a canonical path, and verify that it remains beneath that base directory before creating files. 3. Refuse to overwrite an existing non-empty destination unless the user explicitly confirms the operation. For automated use, fail closed rather than silently replacing files. 4. Avoid using `sed` to interpolate untrusted input into JSON. Generate or update `package.json` with a JSON-aware tool, such as Node.js: ```bash PROJECT_NAME="$PROJECT_NAME" node -e ' const fs = require("fs"); const path = "package.json"; const pkg = JSON.parse(fs.readFileSync(path, "utf8")); pkg.name = process.env.PROJECT_NAME; fs.writeFileSync(path, JSON.stringify(pkg, null, 2) + "\n"); ' ``` 5. Validate the normalized npm package name separately because npm package-name rules may be stricter than filesystem naming rules. 6. Test the hardened script against traversal and metacharacter inputs, including `../target`, `/tmp/target`, `.`, `..`, names containing slashes, ampersands, quotes, backslashes, and newline characters. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The entire skill description and usage guidance are presented in Chinese, with no indication that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest describes a skill for quickly creating Remotion video projects with templates, animation utilities, render scripts, and best practices. Adding a preconfigured render:lambda script introduces AWS/Lambda cloud rendering capability, which goes beyond local project scaffolding and is not otherwise declared in the skill description.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown skill forces a specific language for all instructions and examples, which can violate language/locale policy when no user opt-in or justification is provided. The file contains no indication that Chinese is optional, selectable, or required for a region-specific purpose.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · rules/chrome-reuse.md (reported line 62)May include surrounding context.

bash
# 1. 创建缓存目录
mkdir -p ~/Library/Caches/remotion

# 2. 从任意 Remotion 项目中复制 chrome-headless-shell
cp -r node_modules/.remotion/chrome-headless-shell ~/Library/Caches/remotion/

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The entire skill description is written in Chinese, which imposes a specific language/locale on users without offering a choice or documenting a region-specific requirement. This matches the policy category for language or locale constraints lacking user opt-in.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill documents Lambda rendering and direct AWS credential export without warning that project assets, props, and render outputs may be transmitted to AWS infrastructure and S3. Users may paste long-lived credentials into shells or use cloud rendering for sensitive media without understanding data exposure, retention, or least-privilege requirements.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The documentation includes a command to remove a Lambda function with no warning, confirmation guidance, or statement that it is destructive. A user may delete an active rendering function or shared environment by copy-pasting commands, causing service disruption or loss of deployment state.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The markdown advertises "Lambda 云端渲染支持" as a core feature, which implies sending project assets or rendering data to a cloud environment. The description does not include any warning about remote processing, possible data exposure, or the need to verify what content is uploaded before using this feature.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill content forces a single language presentation throughout the file, which can violate a language/locale policy when no user opt-in or justification is provided. There is no indication that the skill is region-specific or that alternate language support is intentionally out of scope.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.