T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies Permit Unreviewed Supply-Chain Changes
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its subtitle-generation purpose, but its full pipeline can send subtitle text to a remote LLM and incur costs automatically when an API key is already present.
Review before installing. Use an isolated virtual environment, pin dependencies if possible, and do not run the full pipeline with OPENAI_API_KEY set unless you intentionally want subtitle text sent to the configured LLM provider and accept token charges. Prefer running transcription separately for sensitive videos, then explicitly choose whether to translate.
requirements.txt:1Unpinned Third-Party Dependencies Permit Unreviewed Supply-Chain Changes
scripts/run.py:82Full Pipeline Does Not Enforce Explicit Consent Before Remote Subtitle Transmission
If the actual implementation only operates on existing SRT files while the skill advertises end-to-end video transcription with WhisperX and language auto-detection, users and calling agents may make unsafe assumptions about what will be processed and what dependencies will be installed or invoked. Description/behavior mismatch is dangerous because it can mask real data flows, cause incorrect trust decisions, and bypass user expectations around local processing versus remote API use.
If the actual implementation only operates on existing SRT files while the skill advertises end-to-end video transcription with WhisperX and language auto-detection, users and calling agents may make unsafe assumptions about what will be processed and what dependencies will be installed or invoked. Description/behavior mismatch is dangerous because it can mask real data flows, cause incorrect trust decisions, and bypass user expectations around local processing versus remote API use.
os.system() and os exec-family calls run shell commands with the process's full privileges, enabling arbitrary command execution.
# Windows cmd.exe does not support ANSI by default; disable colors there.
if sys.platform == "win32" and "WT_SESSION" not in os.environ:
try:
os.system("") # enable ANSI on Windows 10+
except Exception:
GREEN = YELLOW = RED = NC = ""
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
| Dependency | macOS | Linux | Windows |
|-----------|-------|-------|---------|
| Python 3.9+ | `brew install python` | `apt install python3` | [python.org](https://www.python.org/downloads/) |
| ffmpeg | `brew install ffmpeg` | `sudo apt install ffmpeg` | `choco install ffmpeg` or `scoop install ffmpeg` |
## Resource Requirements
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
| Dependency | macOS | Linux | Windows |
|-----------|-------|-------|---------|
| Python 3.9+ | `brew install python` | `apt install python3` | [python.org](https://www.python.org/downloads/) |
| ffmpeg | `brew install ffmpeg` | `sudo apt install ffmpeg` | `choco install ffmpeg` or `scoop install ffmpeg` |
## Resource Requirements
The documentation states 'Translate subtitles to Chinese (default)' and later reinforces that the default target language is zh. This imposes a specific language/locale preference by default rather than requiring an explicit user choice or clearly justifying the locale constraint.
The skill documentation describes operations that require shell execution, environment-variable access, and reading/writing files, but it does not declare any explicit tool scope or allowed-tools boundary. This creates an authorization ambiguity where an agent may invoke broader capabilities than users expect, increasing the chance of unsafe execution or privilege creep.
The documentation states 'Translate to Chinese (default)' and defines the default target language as zh, which effectively biases output to a specific locale unless the user overrides it. The file does not explain a region-specific requirement or present this default as an explicit user choice.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
def run_cmd(args):
result = subprocess.run(args)
if result.returncode != 0:
sys.exit(result.returncode)
The script sends subtitle text to a third-party LLM service for translation, but it does not provide an explicit warning, consent flow, or privacy notice about transmitting potentially sensitive video content off-box. In this skill context, subtitle files may contain confidential meetings, personal information, or proprietary content, so silent exfiltration to an external API creates a real privacy and compliance risk.
Untrusted subtitle text is embedded directly into the user prompt, so adversarial subtitle content can inject instructions such as asking the model to ignore translation directions, alter output format, or include extra text. While this does not lead to code execution in the script, it can corrupt translations, break downstream parsing assumptions, and in some cases cause unintended disclosure or unreliable outputs.
The batch prompt combines multiple untrusted subtitle lines into a single instruction context, which amplifies prompt-injection risk because one malicious subtitle can influence the model's handling of the entire batch. In this subtitle-generation context, that can cause widespread mistranslation, formatting drift, or batch parsing failure affecting many output entries at once.
The dependency whisperx is unpinned, so installs may pull different versions over time, reducing build reproducibility and increasing supply-chain risk if a newly released version introduces a vulnerability or breaking behavior. In a skill that processes media and relies on ML packages, uncontrolled upgrades can unexpectedly expose the environment to insecure transitive dependencies.
whisperx
torch
torchaudio
openai
The dependency torch is unpinned, which is especially risky because PyTorch is a large native-code ML framework with a history of security advisories. Without version pinning, deployments may silently install a vulnerable release or change behavior across environments, increasing supply-chain and exposure risk.
whisperx
torch
torchaudio
openai
torch has multiple known advisories, and because the manifest does not pin a version, there is no way to verify whether the deployed environment avoids affected releases. This is more concerning in this skill because it processes attacker-controlled media inputs and depends on a complex native ML stack, so any vulnerable PyTorch version could increase the chance of code execution or denial-of-service paths being reachable.
The dependency torchaudio is unpinned, so the installed version can vary between environments and over time. This weakens reproducibility and may introduce vulnerable or incompatible transitive components, particularly in a media-processing workflow that handles untrusted audio/video inputs.
whisperx
torch
torchaudio
openai
The dependency openai is unpinned, allowing uncontrolled upgrades that may introduce security issues, API-breaking changes, or altered default behaviors. Although this is less severe than a native ML library issue, it still creates avoidable supply-chain risk.
whisperx
torch
torchaudio
openai