Back to skill

Security audit

Venice API Kit

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Venice AI API toolkit that sends user-selected inputs to Venice and includes clearly labeled account-admin commands, with no evidence of hidden execution or exfiltration.

Install only if you trust Venice.ai with the prompts, files, audio, images, and account data you choose to send. Use an inference key for normal generation and transcription tasks, reserve an admin key for explicit billing or API-key management commands, avoid running API-key creation in logged terminals, and consider pinning httpx before use in sensitive environments.

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:26
Finding

Unpinned Dependency Is Automatically Resolved and Installed at Runtime

Content
View full analysis
=3.10" # dependencies = ["httpx"] # /// ``` ### Technical Analysis The Skill permits `uv run` or the configured pip installer to resolve and install the latest compatible `httpx` package without an exact version, lockfile, or recorded artifact hash. The source code reviewed in this audit therefore does not completely determine which dependency code will execute during a future invocation. Although `httpx` is a legitimate package and no malicious package source was identified, unconstrained runtime resolution creates a supply-chain trust boundary. A compromised package-maintainer account, package registry, dependency release, or configured package index could cause unauthorized code to execute when the dependency is installed or imported. The exposure is especially relevant because the scripts run with access to `VENICE_API_KEY` and process user-selected text, images, audio, API-key metadata, billing information, and generated output. ### Attack Path 1. An attacker compromises the dependency publisher, package registry, distribution infrastructure, or package index used by `uv` or pip. 2. The attacker publishes or substitutes a malicious release that satisfies the unconstrained `httpx` requirement. 3. A user invokes one of the scripts through `uv run`, or the Skill installation mechanism installs `httpx`. 4. The resolve ...[truncated 1266 chars]
Remediation
View remediation
"] ``` 2. Generate and commit a dependency lockfile that records all transitive dependency versions. 3. Require cryptographic hashes for downloaded artifacts where the selected package workflow supports them. 4. Restrict dependency resolution to explicitly trusted HTTPS package indexes and prevent fallback to untrusted indexes. 5. Avoid maintaining redundant installation paths in both Skill metadata and individual scripts unless operationally necessary. 6. Run dependency installation separately from Skill execution, then execute with network-restricted and least-privileged credentials where practical. 7. Use an inference-only Venice key for ordinary media operations and expose an administrator key only to explicitly invoked administrative workflows. 8. Add automated dependency scanning and controlled update review so pinned versions are patched without returning to unconstrained resolution. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (41)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The description presents a broad, full-featured Venice AI toolkit spanning many inference and media capabilities plus admin features. The supplied code does not implement those functions; it only retrieves metadata for a specific API key using an admin key and outputs the result. This is a materially narrower primary purpose than the declared description. There is no evidence in this chunk of image, video, audio, embeddings, transcription, character, model, or privacy-related inference functionality. Therefore the description does not accurately represent what this particular code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a comprehensive Venice AI toolkit spanning many product areas such as image generation, video, audio, embeddings, transcription, characters, models, and admin functions. The supplied code chunk does only one specific admin task: listing API keys via the Venice admin endpoint. It does not implement or demonstrate the broader multimodal and inference-related capabilities named in the description, nor does it substantiate the privacy/zero-retention claims. While 'admin functions' is included in the description, the overall declared purpose materially overstates what this code chunk actually does, so this chunk does not accurately match the declared description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The description presents a comprehensive Venice AI toolkit with many inference and admin capabilities. The supplied code chunk does only one narrow thing: query /billing/balance using an admin API key and display balances. While 'admin functions' is loosely related, the primary purpose and capabilities in the description are materially broader than the actual behavior shown here. This is a description/behavior mismatch because the code does not implement the declared toolkit functionality and instead acts as a specific balance-check script.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a comprehensive Venice AI toolkit with many API domains and privacy-related guarantees. This code chunk is much narrower: it is a character browser CLI only. It fetches character metadata from Venice, applies local filtering, prints formatted output, and can save results to disk. That is related to one small portion of the declared scope ('characters'), but it materially fails to match the stated breadth and does not demonstrate the claimed privacy behavior. Therefore the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied code chunk does interact with Venice AI image functionality, so it is related to the general domain, but it does not substantiate the declared description of a 'complete' Venice AI toolkit. Its sole behavior is background removal via one API endpoint, plus local file reading and output writing. It does not provide video, audio, embeddings, transcription, characters, models, or admin capabilities. Additionally, the privacy/zero-retention claim is not enforced or evidenced by the code itself. Therefore the description materially overstates and misrepresents this specific code chunk's behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The description substantially overstates the implemented functionality. This code chunk does not provide a complete toolkit; it only implements image editing via one Venice endpoint. It does not include video, audio, embeddings, transcription, characters, model-management, or admin capabilities. Additionally, the privacy-focused zero data retention claim is not evidenced by the code. While accepting a local file or URL and saving output are consistent supporting details for image editing, the primary purpose and capability scope are much narrower than declared.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied code chunk only provides image-related functionality: listing image styles and generating/saving an image via Venice API. It does not implement the broad set of capabilities claimed in the description, such as video, audio, embeddings, transcription, characters, models, or admin operations. The privacy-focused/zero-data-retention claim is also not evidenced by the code; it simply sends requests to Venice endpoints using an API key. This is a material description-to-behavior mismatch because the declared purpose describes a comprehensive toolkit while the actual code is a narrow image-generation script.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The code chunk's behavior is narrow and specific: it upscales an image via the Venice API and writes the binary PNG response to disk. It does not implement the broad set of capabilities advertised in the description, such as video, audio, embeddings, transcription, characters, models, or admin functions. This is a description-behavior mismatch because the declared purpose substantially overstates the functionality actually present in the supplied code. There is no sign of unrelated malicious behavior; the mismatch is about scope and claimed features, including the unsupported privacy/zero-retention assertion.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The code chunk is narrowly scoped to listing Venice AI models from a public endpoint. It does not perform inference, generation, embeddings, transcription, character handling, or any admin actions. It also does not implement or substantiate privacy-focused inference or zero data retention behavior. While 'models' is one part of the declared description, the description materially overstates the implemented functionality, so this is a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description represents a broad, full-featured Venice AI toolkit with many inference and admin capabilities. The supplied code chunk only implements one administrative/account-inspection action: fetching API rate limits and balances from /api_keys/rate_limits. While this fits loosely under admin/account functions, it does not substantiate the much broader declared purpose. The primary purpose of this code is materially narrower than advertised, so the description does not accurately represent the actual behavior of this chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied code is specifically a usage-history viewer for the Venice AI admin billing endpoint (/billing/usage). It reads an API key from the environment, makes a GET request, filters by currency/date/page/sort, and formats output as JSON or CSV. It does not implement image generation, video, audio, embeddings, transcription, character management, model operations, or general inference workflows. While the description mentions admin functions, the declared purpose presents a much broader toolkit than what this code chunk actually does. Therefore the description does not accurately represent this code chunk's behavior.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill declares executable capabilities that include environment access, file read/write, and network access, but does not constrain them with an explicit permission or allowed-tools scope. In a skill that handles API keys and supports admin operations, this increases the blast radius if scripts are modified, compromised, or behave unexpectedly, because sensitive credentials and local files could be accessed and transmitted without a clear least-privilege boundary.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script discloses the newly created secret API key to stderr and also emits the full API response as JSON, which likely includes the same key material. This creates a real secret-exposure risk because terminal output, shell history wrappers, CI logs, session recording, or redirected output may persist the credential beyond the one-time display window intended by the service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script sends the full user-supplied text to Venice's remote /audio/speech endpoint, which is a network transmission of user data. While the code prints a short preview of the text, it does not clearly warn users that their input will be sent to a third-party service or disclose the privacy implication of that transfer.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script sends either a user-supplied image URL or a base64-encoded local image to Venice's remote background-removal endpoint. Although the docstring states it uses Venice's endpoint, there is no clear user-facing warning in the CLI help or runtime output that image data will be transmitted off-system, which is the type of disclosure required for network transmission of user data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The script sends the user-provided image and prompt to Venice's remote /image/edit endpoint, which may disclose user data off-device. While the docstring says it uses Venice's endpoint, there is no explicit warning in the CLI help or user-facing messaging that local image contents will be uploaded to an external service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The script sends the user’s prompt and generation parameters to Venice’s remote API, but the CLI interface does not clearly warn users at the point of use that their input leaves the local environment. In a privacy-sensitive agent skill, prompts may contain confidential or regulated information, so silent transmission creates a real data-disclosure risk even if the endpoint is legitimate.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The --embed-exif option causes prompt information to be embedded into the output image metadata, which can persist when the file is shared or published. Users may not realize that sensitive prompt contents can be recoverable from EXIF or related metadata downstream, creating an avoidable privacy leak.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Content

Scanner excerpt · scripts/image_generate.py (reported line 266)May include surrounding context.

python
seed=args.seed,
        cfg_scale=args.cfg_scale,
        steps=args.steps,
        safe_mode=not args.unsafe,
        hide_watermark=args.hide_watermark,
        embed_exif=args.embed_exif,
    )

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script sends the provided image content or image URL to Venice's remote /image/upscale endpoint via an HTTP POST request. While the code logs that upscaling is happening, it does not explicitly warn users that local image contents may be transmitted off-system to a third-party service.

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 · README.md (reported line 95)May include surrounding context.

md
import httpx

VENICE_BASE_URL = "https://api.venice.ai/api/v1"


def get_api_key() -> str:

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 · SKILL.md (reported line 43)May include surrounding context.

md
import httpx

VENICE_BASE_URL = "https://api.venice.ai/api/v1"


def get_api_key() -> str:

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 · scripts/api_key_create.py (reported line 20)May include surrounding context.

python
import httpx

VENICE_BASE_URL = "https://api.venice.ai/api/v1"


def get_api_key() -> str:

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 · scripts/api_key_delete.py (reported line 19)May include surrounding context.

python
import httpx

VENICE_BASE_URL = "https://api.venice.ai/api/v1"


def get_api_key() -> str:

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 · scripts/api_key_get.py (reported line 21)May include surrounding context.

python
import httpx

VENICE_BASE_URL = "https://api.venice.ai/api/v1"


def get_api_key() -> str:

Static analysis

No suspicious patterns detected.