Back to skill

Security audit

Video analyze by doubao2.0

Security checks for vulnerabilities and agentic risk

Overview

The skill is a mostly coherent video-analysis integration, but it asks agents to install an unpinned SDK into the active Python environment and has under-scoped handling for downloaded remote videos.

Install only if you are comfortable sending selected videos or video URLs to Volcengine Ark and exposing ARK_API_KEY to this script. Use an isolated virtual environment with a pinned, reviewed SDK version, and manually delete any downloaded workspace/video files after use.

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

Warning
Location
SKILL.md:27
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 27–31
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Vulnerable Code

markdown
2. Directly run the following bash command to ensure that the current Python environment has the OpenAI dependency:

```bash
pip install 'volcengine-python-sdk[ark]'
text

### Technical Analysis

The Skill instructs the agent to install the latest available release of `volcengine-python-sdk[ark]` directly into the active Python environment. It does not pin an audited version, verify package hashes, use a lockfile, or require an isolated virtual environment.

Installing a Python package may execute package-controlled installation logic and introduces transitive dependencies whose versions can change independently. Consequently, the code that runs during future Skill invocations is not fully represented by the audited project. This creates a supply-chain risk if the named package, one of its dependencies, or the configured package index is compromised.

This finding does not establish that the named package is malicious. The vulnerability is the uncontrolled and non-reproducible dependency installation procedure.

### Attack Path

1. An attacker compromises a future release of the dependency, one of its transitive dependencies, or the package-index delivery path.
2. The agent follows `SKILL.md` and executes the unpinned `pip install` command.
3. The package manager downloads the attacker-controlled release and may execute its installation logic.
4. Malicious code runs with the privileges of the account invoking the Skill.
5. That code could access files and environment variables available to the process, including `ARK_API_KEY`, alter the Python environment, or modify subsequent video-analysis behavior.

### Impact Assessment

Successful exploitation could provide arbitrary code execution under the invoking user's privileges. The accessible sc
...[truncated 311 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin the SDK and all transitive dependencies to reviewed versions in a lockfile.
  • Require package hashes, such as with pip install --require-hashes -r requirements.txt.
  • Install dependencies in a dedicated, non-privileged virtual environment rather than the active global environment.
  • Use a trusted package index and retain provenance or integrity metadata for approved artifacts.
  • Periodically scan and deliberately update locked dependencies after security review.
  • Package the Skill with reproducible environment metadata instead of instructing the agent to install the latest release at runtime.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (9)

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

L22 要求“直接通知用户错误内容”,且整份技能说明均以中文固定编写,未说明应根据用户语言偏好返回结果,也未提供语言选择。这会导致技能在未获用户同意的情况下默认强制特定语言,属于语言/locale 策略违例。

Content

No source excerpt is available for this finding.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · script/parse_video.py (reported line 11)May include surrounding context.

python
import os
import sys
import argparse
import base64
from volcenginesdkarkruntime import AsyncArk
import asyncio

api_key = os.getenv('ARK_API_KEY')

def parse_args():
    parser = argparse.ArgumentParser(description='Parse video content using AI model')
    parser.add_argument('--prompt', type=str, required=True, help='The prompt text to send to the model')
    parser.add_argument('--video', type=str, required=True, help='Path to the local video file or remote video URL')
    parser.add_argument('--remote', action='store_true', help='Treat --video as a remote video URL instead of local file')
    return parser.parse_args()

def encode_video_to_base64(video_path):
    with open(video_path, 'rb') as video_file:
        return base64.b64encode(video_file.read()).decode('utf-8')

def get

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill declares access to environment secrets via metadata requirements but does not define an explicit tool scope such as permissions or allowed-tools. This weakens execution boundaries and can allow broader-than-intended tool usage or secret exposure during skill invocation, especially because the skill also instructs command execution and outbound API use.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger condition is broad enough that the skill may activate for many generic video-related tasks without sufficient narrowing. Over-broad routing can increase unnecessary transfer of video content to a third-party API and cause the agent to choose this skill in situations where a safer or more appropriate local workflow exists.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The document first instructs the agent to never use web-fetch style retry behavior for remote videos, but later tells it to download remote videos into the workspace and analyze them locally. This contradiction can cause unsafe fallback behavior, inconsistent enforcement, and accidental handling of untrusted remote content in ways the earlier safety guidance appeared to forbid.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs the agent to run a package installation command that modifies the user's environment without requiring prior notice or confirmation. Unprompted dependency installation can alter system state, introduce supply-chain risk, and violate least-surprise expectations for users operating in sensitive environments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill recommends downloading remote videos into the local workspace without clear warning about local persistence, sensitive content retention, or cleanup. This can expose confidential media to unintended local storage, backup systems, or later access by other processes, especially since video content may contain highly sensitive information.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

When the --remote flag is used, the script forwards arbitrary remote video URLs to an external AI service without warning the user that the URL and referenced content will be shared with a third party. In a skill designed to process local or remote videos, this context makes the issue more plausible and dangerous because users may assume the tool only fetches or analyzes the URL locally rather than disclosing it externally.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script uploads local video content to a third-party AI service and prints the remote service response, but it provides no explicit user-facing disclosure, consent prompt, or data-handling warning. In an agent skill context, this is risky because users may provide sensitive local recordings without realizing the content is being transferred off-host to an external provider.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.