Back to skill

Security audit

video-generation

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent video-generation purpose, but it sends credentials and user media to an undocumented API domain and includes unsafe sharing/opening behavior that users should review first.

Review before installing. Verify that api.heybossai.com is the intended and trusted recipient for SKILLBOSS_API_KEY and media uploads, avoid submitting sensitive prompts or images, replace the hard-coded Feishu recipient before using the sharing guide, and fix or disable the macOS auto-open os.system call before running downloads.

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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
seedance.py:27
Finding

API Credential and User Data Sent to an Undocumented Domain

Content
View full analysis
dict: """Call SkillBoss API Hub /v1/pilot and return parsed JSON response.""" api_key = get_api_key() headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } data = json.dumps(body).encode("utf-8") req = urllib.request.Request(PILOT_URL, data=data, headers=headers, method="POST") try: with urllib.request.urlopen(req, timeout=120) as resp: resp_body = resp.read().decode("utf-8") ``` Local images are also serialized into requests sent through this function: ```python def image_to_data_url(image_path): """Convert a local image file to a base64 data URL.""" p = Path(image_path) if not p.exists(): print(f"Error: Image file not found: {image_path}", file=sys.stderr) sys.exit(1) ext = p.suffix.lower().lstrip(".") mime_map = { "jpg": "jpeg", "jpeg": "jpeg", "png": "png", "webp": "webp", "bmp": "bmp", "tiff": "tiff", "tif": "tiff", "gif": "gif", "heic": "heic", "heif": "heif", } mime_ext = mime_map.get(ext, ext) file_size = p.stat().st_size if file_size > 30 * 1024 * 1024: print(f"Error: Image file too large ({file_size / 1024 / 1024:.1f} MB). Max 30 MB.", file=sys.stderr) sys.exit(1) with open(p, "rb") as f: b64 = base64.b64encode(f.read() ...[truncated 2090 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
seedance.py:178
Finding

Shell Command Injection Through the Download Directory on macOS

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
how_to_send_video_via_feishu_app.md:90
Finding

Hard-Coded Feishu Recipient Can Cause Unintended Video Disclosure

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Rogue AgentSelf-Modification, Session Persistence
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (29)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill's declared behavior does not fully match what it instructs the agent to do: it claims task management support and model-specific behavior that are not substantiated, while also omitting local file reads and downloads/opens from the description. That mismatch is security-relevant because reviewers and users may authorize the skill under incomplete assumptions, enabling unexpected local file access or persistence behavior.

Content

No source excerpt is available for this finding.

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · SKILL.md (reported line 40)May include surrounding context.

md
## Execution (Recommended: Python CLI Tool)

A Python CLI tool is provided at `~/.claude/skills/seedance-video/seedance.py` for robust execution with proper error handling and local image base64 conversion. **Prefer using this tool over raw curl commands.**

### Quick Examples with Python CLI

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · SKILL.md (reported line 101)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · SKILL.md (reported line 157)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · SKILL.md (reported line 183)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · SKILL.md (reported line 132)May include surrounding context.

md
IMG_BASE64=$(base64 < "$IMG_PATH" | tr -d '\n')
IMG_DATA_URL="data:image/${IMG_EXT_LOWER};base64,${IMG_BASE64}"

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d "{

os.system() or os exec-family call

High
Category
Dangerous Code Execution
Confidence
95% confidence
Finding

The code invokes a shell via os.system() using a path-derived string, which is unsafe because shell metacharacters inside the filename can alter command behavior. Although the path is quoted, shell command substitution and quoting edge cases can still make this exploitable on macOS if a crafted filename is downloaded or written locally.

Content

Scanner excerpt · seedance.py (reported line 194)May include surrounding context.

python
# Open on macOS
        if sys.platform == "darwin":
            os.system(f'open "{filepath}"')
    except Exception as e:
        print(f"Download failed: {e}", file=sys.stderr)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill declares shell, environment-variable, and network-dependent behavior but does not constrain tool scope with explicit permissions or allowed-tools metadata. In an agent environment, that omission can cause the skill to run with broader capabilities than users or orchestrators expect, increasing the chance of unintended command execution, data access, or outbound transmission.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 22)May include surrounding context.

export SKILLBOSS_API_KEY="your-api-key-here"

text

**Base URL**: `https://api.skillbossai.com/v1/pilot`

## Supported Models

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The skill explicitly directs the agent to transmit user prompts and media to an external service. In this context, outbound transmission is core functionality rather than inherently malicious, but it remains security-relevant because user content and possibly sensitive local files leave the local environment and are handled by a third party.

Content

Scanner excerpt · SKILL.md (reported line 40)May include surrounding context.

md
## Execution (Recommended: Python CLI Tool)

A Python CLI tool is provided at `~/.claude/skills/seedance-video/seedance.py` for robust execution with proper error handling and local image base64 conversion. **Prefer using this tool over raw curl commands.**

### Quick Examples with Python CLI

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The examples instruct users to send prompts and optionally local image contents to a third-party API, including base64-encoded local files, without any privacy or data-transmission warning. This can lead users to unintentionally exfiltrate sensitive personal, proprietary, or regulated data under the assumption that the skill is merely performing local media processing.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% confidence
Finding

The examples direct the agent to download generated videos into the user's Desktop, creating local persistence of externally generated content. This is not inherently malicious, but it can leave unreviewed files on disk, potentially causing privacy, storage, or trust issues if users did not explicitly request persistent output.

Content

Scanner excerpt · SKILL.md (reported line 45)May include surrounding context.

Quick Examples with Python CLI

bash
# Text-to-video (create + download)
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "小猫对着镜头打哈欠" --download ~/Desktop

# Image-to-video from local file

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

Multiple example prompts are written in Chinese, and the document includes a Chinese-only section heading and linked guidance, but it does not say that Chinese is optional or explain any locale-specific requirement. This can be read as steering or constraining usage to a specific language without user opt-in.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

This raw text-to-video example sends prompt data to a third-party API. The transmission is intentional and functionally necessary, but remains a real confidentiality concern if users submit sensitive or regulated content without clear notice.

Content

Scanner excerpt · SKILL.md (reported line 77)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This image-to-video URL example transmits prompt data and externally referenced media to a remote service. If those URLs point to nonpublic assets, use of the skill may disclose internal media or metadata to the provider.

Content

Scanner excerpt · SKILL.md (reported line 101)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This image-to-video URL example transmits prompt data and externally referenced media to a remote service. If those URLs point to nonpublic assets, use of the skill may disclose internal media or metadata to the provider.

Content

Scanner excerpt · SKILL.md (reported line 101)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

The local-file upload example causes direct outbound transfer of file contents from the user's machine to the vendor API. In a file-generation skill, that context makes the behavior plausible, but still dangerous because users may not expect full-content upload from a local path and may accidentally exfiltrate sensitive media.

Content

Scanner excerpt · SKILL.md (reported line 132)May include surrounding context.

md
IMG_BASE64=$(base64 < "$IMG_PATH" | tr -d '\n')
IMG_DATA_URL="data:image/${IMG_EXT_LOWER};base64,${IMG_BASE64}"

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d "{

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

The local-file upload example causes direct outbound transfer of file contents from the user's machine to the vendor API. In a file-generation skill, that context makes the behavior plausible, but still dangerous because users may not expect full-content upload from a local path and may accidentally exfiltrate sensitive media.

Content

Scanner excerpt · SKILL.md (reported line 132)May include surrounding context.

md
IMG_BASE64=$(base64 < "$IMG_PATH" | tr -d '\n')
IMG_DATA_URL="data:image/${IMG_EXT_LOWER};base64,${IMG_BASE64}"

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d "{

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

This first+last-frame example shares prompt data and image references with the external API. The risk is primarily confidentiality and policy compliance when users use private images or internal URLs.

Content

Scanner excerpt · SKILL.md (reported line 157)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

This first+last-frame example shares prompt data and image references with the external API. The risk is primarily confidentiality and policy compliance when users use private images or internal URLs.

Content

Scanner excerpt · SKILL.md (reported line 157)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

This reference-image example uploads content to an external service as part of generation. That is expected for the skill, but still a real data-sharing surface that should be disclosed and gated for user awareness.

Content

Scanner excerpt · SKILL.md (reported line 183)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

This reference-image example uploads content to an external service as part of generation. That is expected for the skill, but still a real data-sharing surface that should be disclosed and gated for user awareness.

Content

Scanner excerpt · SKILL.md (reported line 183)May include surrounding context.

bash
[ -z "$SKILLBOSS_API_KEY" ] && echo "Error: SKILLBOSS_API_KEY not set" && exit 1

RESULT=$(curl -s -X POST "https://api.skillbossai.com/v1/pilot" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -d '{

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document instructs users to send a locally generated video file through Feishu, explicitly describing upload to Feishu APIs and CDN storage, but it does not warn that local file contents will be transmitted to an external third party and retained outside the local environment. This creates a real risk of unintended data exfiltration or privacy/compliance violations if users assume the action is only local or do not realize the file will leave the host.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The module docstring presents status, wait, list, and delete as usable commands, but later implementations state that asynchronous task management is not applicable or not supported. This is an active contradiction between the file's own documentation and runtime behavior.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · seedance.py (reported line 27)May include surrounding context.

python
from pathlib import Path


PILOT_URL = "https://api.heybossai.com/v1/pilot"
DEFAULT_MODEL = "doubao-seedance-1-5-pro-251215"

Static analysis

No suspicious patterns detected.