Back to skill

Security audit

AV Skill

Security checks for vulnerabilities and agentic risk

Overview

This AV skill is broadly coherent with its media-processing purpose, but users should treat URL/TTS handling and unpinned Python dependencies with ordinary caution.

Install this only in an isolated Python environment, pin and review dependencies before production use, and avoid processing sensitive media, private URLs, or TTS text unless you are comfortable with possible external service use. Confirm output paths and available disk space before real media-editing operations.

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
requirements.txt:1
Finding

Unpinned and Unverified Third-Party Dependencies

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:1-11; installation command documented at README.md:38-42
Vulnerability Type: Supply-chain exposure through unpinned dependencies
Risk Level: Medium

Vulnerable Code

requirements.txt:1-11:

text
# Audio and video processing libraries
pydub
moviepy
opencv-python

# Text-to-speech
gTTS

# General utilities
requests
 Pillow

README.md:38-42:

markdown
2. Install the required dependencies:
   ```bash
   pip install -r requirements.txt
   ```

Technical Analysis

All six third-party packages are specified without exact versions or cryptographic hashes. Consequently, package resolution depends on the versions available from the configured package index at installation time. The same reviewed skill package may therefore install different code on different dates or systems.

If a dependency release or configured package index is compromised, following the documented installation command can retrieve and install attacker-controlled package content. Python packages may execute code during installation and later when imported. No malicious dependency is proven to be present at the time of this audit; the vulnerability is the absence of controls that ensure users install the reviewed dependency artifacts.

The current av_skill.py implementation does not import any of the declared packages and only returns simulated status messages. Thus, the skill unnecessarily exposes users to third-party supply-chain risk. The leading whitespace before Pillow also indicates inadequate dependency-file validation, although it does not by itself establish exploitation.

Attack Path

  1. An attacker compromises a future release of one of the listed packages, its publisher account, or a package index used by the victim.
  2. The victim follows the README and runs pip install -r requirements.txt.
  3. Because no versions or hashes ...[truncated 993 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove all dependencies that are not actually used by av_skill.py.
  2. If media-processing functionality is implemented, pin every required direct dependency to a reviewed exact version, such as package==X.Y.Z.
  3. Generate and verify cryptographic hashes for all direct and transitive dependencies. Install with a locked requirements file and pip's --require-hashes option.
  4. Use a reviewed lock-file workflow or a tool such as pip-tools to produce reproducible dependency sets.
  5. Retrieve packages only from an explicitly configured, trusted index or an internally controlled artifact repository.
  6. Scan pinned dependencies continuously for known vulnerabilities and review updates before changing the lock file.
  7. Perform dependency installation in an isolated, non-privileged virtual environment or build container rather than under an administrator account.
  8. Correct the malformed leading whitespace before Pillow and validate dependency files in CI.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (12)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README explicitly states that the skill handles URLs and requires internet access for some features, but it does not clearly warn users about outbound network access, remote content retrieval, or the associated privacy and trust risks. In a multimedia skill, fetching remote media or calling networked services can expose user data, process untrusted files, and create SSRF-like or unexpected data exfiltration pathways if users are not adequately informed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill describes destructive or storage-intensive media operations such as conversion, trimming, merging, extraction, and generation, but does not warn users that these actions may overwrite inputs, create new outputs, or consume large amounts of temporary disk space. In an agent context, this can lead to accidental data loss or service disruption from unexpected disk exhaustion, especially when processing large media files.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill states that it handles URLs and uses internet-dependent features such as TTS, but provides no privacy warning that user media, URLs, or text may be transmitted to external services. This can expose sensitive audio, video, or prompt content to third parties and creates privacy and compliance risk if users assume processing is local.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

This code file includes a media-editing operation that would typically create modified output or overwrite an existing file in a real implementation, but the method only returns a status string and provides no explicit warning about altering user content. There is also no comment or docstring warning about potential data-affecting behavior beyond a generic description.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
98% confidence
Finding

The dependency pydub is declared without a version pin, which makes builds non-reproducible and can allow an unexpected or vulnerable upstream release to be installed later. While this file alone does not prove exploitation, unpinned dependencies increase supply-chain risk and hinder verification of what code will run.

Content

Scanner excerpt · requirements.txt (reported line 2)May include surrounding context.

text
# Audio and video processing libraries
pydub
moviepy
opencv-python

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
98% confidence
Finding

moviepy is unpinned, so future installs may resolve to different releases with new bugs, breaking changes, or security issues. This is a classic dependency hygiene problem that increases supply-chain exposure even if no specific exploit is shown here.

Content

Scanner excerpt · requirements.txt (reported line 3)May include surrounding context.

text
# Audio and video processing libraries
pydub
moviepy
opencv-python

# Text-to-speech

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
99% confidence
Finding

opencv-python is not version-pinned, which is more concerning because this package has a history of security advisories and often processes untrusted media inputs. Without pinning, deployments may silently install an affected version, making risk assessment and patch status unverifiable.

Content

Scanner excerpt · requirements.txt (reported line 4)May include surrounding context.

text
# Audio and video processing libraries
pydub
moviepy
opencv-python

# Text-to-speech
gTTS

Unverifiable Dependency: opencv-python has 16 known advisory(ies) (CVE-2017-12864 (Integer Overflow or Wraparound in OpenCV); CVE-2017-12598 (Out-of-bounds Read in OpenCV ); CVE-2019-14493 (NULL Pointer Dereference in OpenCV.) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
96% confidence
Finding

opencv-python has known advisories, and because no version is pinned, it is impossible to determine whether the eventual installed release is affected. In the context of an audio/video processing skill, this is more dangerous because OpenCV may parse attacker-controlled media, increasing exposure to memory-safety and denial-of-service flaws.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

gTTS is listed without a version constraint, so installations are not deterministic and may pull in a newer or compromised release. This weakens supply-chain integrity and makes incident response and auditing harder.

Content

Scanner excerpt · requirements.txt (reported line 7)May include surrounding context.

text
opencv-python

# Text-to-speech
gTTS

# General utilities
requests

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
99% confidence
Finding

requests is unpinned despite being a security-sensitive networking library with multiple historical advisories. Because it may handle remote connections and credentials, failing to pin it increases the chance of deploying a vulnerable or behaviorally changed version.

Content

Scanner excerpt · requirements.txt (reported line 10)May include surrounding context.

text
gTTS

# General utilities
requests
 Pillow

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
95% confidence
Finding

requests has known security advisories, but the manifest does not specify a version, so the deployed package could be vulnerable without visibility. This matters more in a skill that may make outbound HTTP requests, where issues can affect credential handling, TLS behavior, redirects, or request validation.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: Pillow has 16 known advisory(ies) (CVE-2016-2533 (Pillow buffer overflow in ImagingPcdDecode); CVE-2023-50447 (Arbitrary Code Execution in Pillow); CVE-2021-27922 (Pillow Uncontrolled Resource Consumption) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
96% confidence
Finding

Pillow has multiple historical advisories, and without a pinned version there is no way to verify whether the runtime environment will install a safe release. This is especially relevant if the skill handles user-supplied images, where malformed files can trigger parsing vulnerabilities or resource exhaustion.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.