Back to skill

Security audit

Speech to text

Security checks for vulnerabilities and agentic risk

Overview

This skill performs local audio transcription as described, but users should know it stores transcripts, moves processed audio files, and installs unpinned audio/ML dependencies.

Install and run this in a virtual environment or container under a normal user account, avoid installing dependencies as root unless the OS package manager requires it, and treat inbound audio and generated transcript JSON as sensitive local files. Review or pin the dependency versions before production use, especially torch and Whisper-related packages.

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

Unpinned and Integrity-Unverified Third-Party Dependencies

Content
View full analysis
=20231117 # PyTorch (required by Whisper) torch>=1.8.0 # Additional audio processing libraries (optional but recommended) torchaudio>=0.8.0 # For better performance on GPU (optional) # Uncomment if you have CUDA GPU: # torch --index-url https://download.pytorch.org/whl/cu118 # torchaudio --index-url https://download.pytorch.org/whl/cu118 # Audio format support (usually installed with whisper) ffmpeg-python>=0.2.0 # For improved audio file handling soundfile>=0.10.0 ``` `SKILL.md:22-25`: ```markdown 1. **Instalar dependências:** ```bash pip install -r requirements.txt ``` ``` ### Technical Analysis Every direct dependency uses an open-ended minimum-version constraint. Consequently, installation may resolve to any future version accepted by the constraint. The project provides no lockfile, exact version pins, package hashes, or `--require-hashes` installation requirement. Python packages and their transitive dependencies can execute code during installation or when imported. If a dependency distribution, maintainer account, package repository, or transitive dependency is compromised, following the documented installation command could install and execute code that was never reviewed as part of this skill. The finding does not establish that any currently named dependency is malicious. The vulnerability is the absence of controls ensuring that users install the exact dependency artifacts reviewed and tested by the project. ### Attack Path 1. An attacker compromises a permitted dependency release, its publisher account, repository distribution channel, or one of its unconstrained transitive dependencies. 2. The attacker pub ...[truncated 1114 chars]
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (10)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description states the skill is optimized for Portuguese (Brazil), and the usage guidance further limits it to Brazilian Portuguese content. This is a natural-language locale constraint presented without an explicit user choice, opt-in, or justification as a region-specific tool.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

  1. Instalar FFmpeg (necessário pelo Whisper):
  • Windows: execute install_ffmpeg.cmd ou winget install "Gyan.FFmpeg"
  • macOS: brew install ffmpeg
  • Linux: sudo apt install ffmpeg
  1. Criar pasta de entrada:
bash
  mkdir -p ../../../media/inbound

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

This code saves the full transcription text and metadata to a JSON file, which can expose sensitive spoken content if users assume processing is transient. While the script logs that a file was saved, it does not provide an upfront warning in comments, docstrings, or other user-facing disclosure that audio-derived content will be stored on disk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This markdown file describes stt_watch as continuous monitoring of an inbound folder and stt_batch as processing all pending audio, but it does not warn users that files placed in that directory may be automatically processed. Because these behaviors can affect user data and privacy, the skill description should disclose them explicitly.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The dependency is specified with a lower-bound version only, which permits installation of many different releases over time and reduces build reproducibility. While this is not directly exploitable by itself, it increases supply-chain risk because a vulnerable or incompatible upstream release could be installed later without review.

Content

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

text
# Speech-to-Text Skill Dependencies

# OpenAI Whisper for speech recognition
openai-whisper>=20231117

# PyTorch (required by Whisper)
torch>=1.8.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
98% confidence
Finding

Torch is unpinned, so the environment may resolve to a wide range of versions, including ones with known security advisories. In an ML/audio skill, this is more concerning because PyTorch is a large native-code dependency and unsafe versions can expose denial-of-service or code-execution risk through downstream usage.

Content

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

text
openai-whisper>=20231117

# PyTorch (required by Whisper)
torch>=1.8.0

# Additional audio processing libraries (optional but recommended)
torchaudio>=0.8.0

Unverifiable Dependency: torch has 16 known advisory(ies) (CVE-2025-2953 (PyTorch susceptible to local Denial of Service); CVE-2022-45907 (PyTorch vulnerable to arbitrary code execution); CVE-2025-32434 (PyTorch: `torch.load` with `weights_only=True` leads to remote code execution) +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
97% confidence
Finding

The manifest includes torch without pinning, and static analysis notes multiple known advisories affecting some torch versions. Because the installed version is unconstrained beyond a minimum, there is no assurance that deployments will avoid vulnerable releases, which is especially relevant in a model-processing stack.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
94% confidence
Finding

The torchaudio dependency is not pinned, allowing non-deterministic installs and potentially introducing vulnerable or breaking upstream releases. In this context it is a supporting library, so the main risk is supply-chain instability rather than an immediate exploit in this file alone.

Content

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

text
torch>=1.8.0

# Additional audio processing libraries (optional but recommended)
torchaudio>=0.8.0

# For better performance on GPU (optional)
# Uncomment if you have CUDA GPU:

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

ffmpeg-python is unpinned, which creates reproducibility and supply-chain review gaps. Because it interfaces with media processing workflows, unexpected upstream changes or vulnerable transitive dependencies could affect systems that process untrusted audio files.

Content

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

text
# torchaudio --index-url https://download.pytorch.org/whl/cu118

# Audio format support (usually installed with whisper)
ffmpeg-python>=0.2.0

# For improved audio file handling
soundfile>=0.10.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
92% confidence
Finding

soundfile is also specified as a minimum version only, so future installs may pull in different releases without validation. This weakens reproducibility and can expose the skill to dependency-related bugs or vulnerabilities when handling audio input.

Content

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

text
ffmpeg-python>=0.2.0

# For improved audio file handling
soundfile>=0.10.0

# For JSON handling and file operations (usually in standard library)
# pathlib - included in Python 3.4+

Static analysis

No suspicious patterns detected.