Back to skill

Security audit

TencentCloud VITA

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Tencent Cloud VITA media-analysis wrapper, but users should understand that prompts and media are sent to Tencent Cloud and that one optional prompt setting is persistent.

Install and use this only if you are comfortable sending the selected media, media URLs, and prompts to Tencent Cloud under your VITA account. Prefer an isolated environment, pin the `openai` dependency, avoid exposing unrelated secrets in the process environment, set `--max-tokens` for automated use, and remember that setting a VITA prompt writes a persistent skill-local file that will affect future calls.

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:149
Finding
Unpinned Third-Party OpenAI Dependency## Vulnerability Details **File Location**: `SKILL.md:149` **Vulnerability Type**: Unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code Snippet ```markdown - `openai` (OpenAI-compatible SDK, installed through `pip install openai`) ``` The executable script imports and relies on this externally installed package: ```python try: import openai except ImportError: print( json.dumps({ "error": "DEPENDENCY_MISSING", "message": "The 'openai' package is required but not installed.", "guide": "Please install it manually: pip install openai", }, ensure_ascii=False, indent=2) ) sys.exit(1) ``` ### Technical Analysis The installation instructions use `pip install openai` without specifying a reviewed version, lock file, package hash, or other integrity constraint. Consequently, the package version installed by a user can change over time and may differ from the version originally tested with this Skill. This creates a third-party supply-chain risk. If the package distribution channel or a future package release is compromised, malicious installation or runtime code could execute with the permissions of the user running the Skill. The absence of version constraints may also introduce incompatible API changes that alter security-sensitive behavior. The audit did not find evidence that the current `openai` package is malicious. The vulnerability is the uncontrolled and mutable dependency resolution process. ### Attack Path 1. An attacker compromises the dependency's package repository account, release process, or another component of its distribution channel. 2. The attacker publishes a malicious release under the legitimate package name. 3. A user follows the documented `pip install openai` instruction without a version or hash constraint. 4. Package installation hooks or malicious runtime code execute when the package is installed or imported. 5. The malicious code accesses ...[truncated 1143 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to a specific reviewed version rather than installing the latest available release: ```text openai==<reviewed-version> ``` 2. Maintain dependencies in a version-controlled requirements or lock file. 3. Generate and verify cryptographic hashes for all packages, and install them with hash enforcement: ```bash python -m pip install --require-hashes -r requirements.txt ``` 4. Pin transitive dependencies where practical so that the complete dependency graph is reproducible. 5. Install packages only from the official, expected package index and explicitly configure trusted repository sources. 6. Review dependency updates before changing pinned versions, including release notes, package provenance, and security advisories. 7. Run the Skill under a dedicated least-privileged account or isolated environment with access only to the required media and credentials. 8. Avoid exposing unrelated secrets through the process environment when executing the Skill.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill declares no explicit tool scope or permission boundaries, yet its instructions require environment-variable access and local file reads. That mismatch can cause an agent framework to invoke the skill with broader implicit privileges than users expect, increasing the chance of unintended data access or unsafe execution paths.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The trigger condition is broad enough to match generic requests for image/video analysis or prompt-setting, which can cause the agent to invoke this skill opportunistically without strong routing constraints. Over-broad activation increases the risk of unintended file handling, external API transmission of user media, or persistent state changes when the user did not clearly intend to use this specific skill.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill instructs the agent to create or overwrite a persistent local prompt file without warning the user that this modifies on-disk state. Silent persistence can be abused to plant hidden future behavior, alter later model outputs across sessions, or overwrite existing configuration in ways the user did not intend.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
This file's top-level description, default prompt, examples, and user-facing guidance are written in Chinese, which effectively imposes a language preference on users. The policy allows fixed locale behavior only when the skill offers opt-in or clearly documents a justified region-specific constraint, neither of which is present here.

External Transmission

Medium
Category
Data Exfiltration
Content
sys.exit(1)


VITA_BASE_URL = "https://api.vita.cloud.tencent.com/v1/video2text"
VITA_MODEL = "youtu-vita"

SUPPORTED_IMAGE_FORMATS = {"jpg", "jpeg", "png", "svg", "webp"}
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Unbounded Output

Medium
Category
Output Handling
Content
return content


def call_vita(client, content, stream=False, temperature=None, max_tokens=None):
    """Call the VITA API."""
    kwargs = {
        "model": VITA_MODEL,
Confidence
82% confidence
Finding
The API call allows max_tokens to remain unset, leaving output length effectively controlled by service defaults and user prompts. In streaming or non-streaming modes this can cause excessive token consumption, higher costs, noisy downstream behavior, or denial-of-wallet/resource exhaustion when the tool is used in automation.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The script transmits user-supplied prompts, remote media URLs, and even local image contents converted to base64 data URLs to Tencent Cloud without any explicit user-facing consent, warning, or privacy notice at the point of use. This can lead to unintended disclosure of sensitive images, internal pre-signed URLs, or confidential prompts, especially because stdin/CLI inputs may be automated and users may not realize local files are uploaded.

Static analysis

No suspicious patterns detected.