Back to skill

Security audit

LTX-2.3 Video API

Security checks for vulnerabilities and agentic risk

Overview

This video-generation skill is mostly coherent, but it exposes a specific API key and gives users risky third-party upload and unpinned plugin-install instructions.

Do not install or use this version as-is. The exposed LTX key should be revoked and removed from all published copies, users should supply their own key through a protected secret mechanism, media uploads should use a user-controlled or official private upload path, and the ComfyUI node should be pinned to a reviewed commit or release before installation.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:193
Finding
Hardcoded LTX API Bearer Token in Distributed Documentation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:193-197` **Vulnerability Type**: Hardcoded credential and disclosure of a credential-storage path **Risk Level**: Critical ### Vulnerable Code ```text ## API Key Paul's key: stored in `~/clawd/.env` as `LTX_API_KEY` ``` The following fenced block contains a complete `ltxv_...` bearer token. The token is intentionally redacted from this report to prevent further credential exposure. ### Technical Analysis The Skill embeds a complete API bearer token in a file intended for distribution and also discloses the local path from which the credential may be obtained. Bearer tokens generally grant access to anyone possessing the token, without an additional proof-of-possession mechanism. Although authentication to the LTX API is necessary for the declared video-generation functionality, distributing a specific user's credential is not necessary. The minimum-privilege design is for each user to supply a separately scoped API key through an environment variable or secret manager. Because the credential has already been committed to the artifact, deleting it from the current file alone is insufficient. Copies may remain in version-control history, package archives, logs, caches, and downloaded Skill bundles. ### Attack Path 1. An attacker downloads or otherwise obtains the Skill package. 2. The attacker opens `SKILL.md` and extracts the embedded bearer token. 3. The attacker sends requests to `https://api.ltx.video/v1/...` with `Authorization: Bearer <stolen-token>`. 4. Requests are charged against or attributed to the credential owner until the token is revoked or expires. 5. If the attacker also has local access, the disclosed `~/clawd/.env` path identifies an additional source from which current or replacement credentials may be collected. ### Impact Assessment Successful exploitation may permit unauthorized use of the LTX account within the token's se ...[truncated 440 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Revoke and rotate the exposed token immediately; do not assume that removing it from the latest file makes it safe. 2. Remove the token from the current artifact, version-control history, release archives, caches, examples, and logs. 3. Replace the content with a neutral placeholder such as: ```text Set your own LTX_API_KEY environment variable. Never commit the key. ``` 4. Require every user to provide an independently issued, least-privileged API key. 5. Store credentials in a secret manager or protected environment variable, not documentation or source files. 6. Avoid identifying a specific person's credential or disclosing unnecessary local secret paths. 7. Add automated secret scanning and pre-commit checks to block bearer tokens from future releases. 8. Review LTX usage and billing logs for abuse occurring after the credential was exposed. ]]>

other

Error
Location
SKILL.md:103
Finding
Sensitive Voice and Portrait Files Uploaded to an Unrelated Public Hosting Service<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:103-119` **Vulnerability Type**: Sensitive data disclosure to an additional third party **Risk Level**: High ### Vulnerable Code ```bash # Upload MP3 to uguu.se AUDIO_URL=$(curl -s -F "files[]=@audio.mp3" "https://uguu.se/upload" | \ python3 -c "import sys,json; print(json.load(sys.stdin)['files'][0]['url'])") # Upload image IMAGE_URL=$(curl -s -F "files[]=@portrait.jpg" "https://uguu.se/upload" | \ python3 -c "import sys,json; print(json.load(sys.stdin)['files'][0]['url'])") ``` The surrounding instructions explicitly recommend `uguu.se` as the hosting provider for audio and image inputs. ### Technical Analysis The declared Skill functionality is video generation through the LTX API. The documented workflow first transmits local voice recordings and portraits to `uguu.se`, an independent third-party file-hosting service, and then supplies the resulting URLs to LTX. This creates an additional disclosure boundary beyond the expected video-generation provider. Voice recordings and facial images may contain personal, confidential, or biometric information. HTTPS protects data in transit but does not prevent the receiving host from storing, processing, logging, or redistributing the uploaded files. The instructions do not require informed user consent, explain whether returned URLs are public or unguessable, identify retention and deletion guarantees, or restrict which local files may be uploaded. This exceeds the minimum external access needed when user-controlled private storage or direct provider upload mechanisms are available. ### Attack Path 1. A user or agent follows the documented workflow with a local `audio.mp3` or `portrait.jpg`. 2. `curl` reads the specified local file and sends its contents to `https://uguu.se/upload`. 3. The hosting service returns a remotely accessible URL. 4. That URL is passed to the LTX API, allowing LTX infra ...[truncated 1030 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not automatically upload user files to an unrelated public hosting provider. 2. Require explicit, informed confirmation before transmitting any image, video, or audio file. 3. Clearly identify every recipient, the categories of data transmitted, URL accessibility, retention periods, deletion procedures, and applicable privacy terms. 4. Prefer an official direct-upload mechanism provided by LTX, if available. 5. Otherwise, use user-controlled private storage with short-lived, least-privileged signed URLs. 6. Ensure URLs expire quickly and permit only read access to one object. 7. Avoid printing sensitive URLs to logs or retaining them in shell history. 8. Validate file type and size locally, and show the exact path and destination before upload. 9. Provide a deletion procedure and verify deletion after generation. 10. Warn users not to upload confidential, biometric, regulated, or third-party content without proper authorization. ]]>

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:183
Finding
Unpinned Remote Code Installed as an Executable ComfyUI Custom Node<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:183-188` **Vulnerability Type**: Mutable remote payload retrieval and execution **Risk Level**: High ### Vulnerable Code ```bash cd ComfyUI/custom_nodes git clone https://github.com/PauldeLavallaz/comfyui-ltx-node ``` ### Technical Analysis The instructions clone the repository's mutable default branch without selecting an audited commit or signed release and without verifying an integrity hash. The effective code received by a user can therefore change after this Skill has been reviewed. A ComfyUI custom node is executable Python code loaded into the ComfyUI process. Placing a cloned repository under `ComfyUI/custom_nodes` is consequently not equivalent to downloading passive documentation: the node can execute with the filesystem, network, environment-variable, and process privileges of the ComfyUI user when imported or invoked. This installation is optional and related to the declared functionality, but using mutable, unverified remote code provides more supply-chain trust than necessary. Pinning and verification are required to make the reviewed payload reproducible. ### Attack Path 1. The upstream repository owner, a compromised maintainer account, or another supply-chain attacker modifies the repository's default branch. 2. A user follows the Skill instructions and clones the current mutable branch into `ComfyUI/custom_nodes`. 3. The user starts or reloads ComfyUI. 4. ComfyUI imports the custom-node package and executes its initialization code. 5. Malicious code can act with the ComfyUI process's privileges, including reading accessible files and environment variables, making outbound requests, modifying user-owned files, or launching child processes. No malicious content inside the linked repository was included in the audited artifact or verified during this audit. The confirmed flaw is the unpinned and unverified remote execution channel, not ...[truncated 661 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the installation to a specific, reviewed commit hash rather than the mutable default branch: ```bash git clone https://github.com/PauldeLavallaz/comfyui-ltx-node cd comfyui-ltx-node git checkout --detach <audited-commit-hash> ``` 2. Prefer a signed, immutable release artifact and verify its cryptographic signature or published SHA-256 checksum. 3. Record the reviewed version and expected hash in `SKILL.md`. 4. Review initialization code and dependency declarations before allowing ComfyUI to load the node. 5. Disable automatic updates; require a fresh security review before changing the pinned version. 6. Run ComfyUI under a dedicated, non-administrative account or sandbox with restricted filesystem and network access. 7. Do not expose unrelated secrets to the ComfyUI process environment. 8. Maintain an allowlist of approved custom nodes and versions. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (12)

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The skill discloses a specific stored API key and directs its use from a local credential file, which is a direct secret exposure. Anyone with access to the skill content could abuse the key for unauthorized API usage, billing fraud, impersonation, or pivoting into other systems if the environment contains additional secrets.

Missing User Warnings

High
Confidence
99% confidence
Finding
This markdown contains a live secret and reveals where credentials are stored locally without any masking or warning, materially increasing the chance of credential theft. The exposure is especially dangerous because the skill is documentation meant to be copied, shared, and reused, amplifying secret dissemination.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Reference

**Base URL:** `https://api.ltx.video/v1`  
**Auth:** `Authorization: Bearer <API_KEY>`  
**Response:** MP4 binary (direct download, no polling)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Reference

**Base URL:** `https://api.ltx.video/v1`  
**Auth:** `Authorization: Bearer <API_KEY>`  
**Response:** MP4 binary (direct download, no polling)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Reference

**Base URL:** `https://api.ltx.video/v1`  
**Auth:** `Authorization: Bearer <API_KEY>`  
**Response:** MP4 binary (direct download, no polling)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Reference

**Base URL:** `https://api.ltx.video/v1`  
**Auth:** `Authorization: Bearer <API_KEY>`  
**Response:** MP4 binary (direct download, no polling)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### Text to Video
```bash
curl -X POST "https://api.ltx.video/v1/text-to-video" \
  -H "Authorization: Bearer $LTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
def ltx_audio_to_video(audio_url, image_url, prompt, api_key,
                        model="ltx-2-3-pro", resolution="1920x1080",
                        output_path="output.mp4"):
    r = requests.post(
        "https://api.ltx.video/v1/audio-to-video",
        headers={"Authorization": f"Bearer {api_key}",
                 "Content-Type": "application/json"},
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
def ltx_audio_to_video(audio_url, image_url, prompt, api_key,
                        model="ltx-2-3-pro", resolution="1920x1080",
                        output_path="output.mp4"):
    r = requests.post(
        "https://api.ltx.video/v1/audio-to-video",
        headers={"Authorization": f"Bearer {api_key}",
                 "Content-Type": "application/json"},
Confidence
70% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The skill instructs users to upload media to uguu.se, a third-party file host unrelated to the core LTX API, causing user-provided audio/images to be transmitted to an additional external service. This expands data exposure, weakens privacy guarantees, and could leak sensitive media or metadata if users follow the documented workflow.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The skill expands from API usage into installing third-party ComfyUI nodes from GitHub, which introduces software supply-chain risk outside the stated purpose. Users may execute unreviewed code with local permissions, creating a path to credential theft, malware, or broader workstation compromise.

Context-Inappropriate Capability

Low
Confidence
83% confidence
Finding
The manifest describes a video-generation skill using the LTX API, but the documentation instructs users to run ffmpeg locally to resize images. That introduces a separate local media-processing/tooling capability beyond calling the advertised API operations.

Static analysis

No suspicious patterns detected.