Back to skill

Security audit

Voice2text

Security checks for vulnerabilities and agentic risk

Overview

This skill is a simple offline voice-to-text wrapper that reads a user-provided WAV file and returns a transcript, with no evidence of hidden network access, persistence, credential handling, or destructive behavior.

Install this only in an isolated, unprivileged environment and consider pinning reviewed dependency versions before use. Expect it to read the audio file path you provide and require a local Vosk model directory; users who do not read Chinese may need translated documentation or error messages.

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 Third-Party Dependencies## Vulnerability Details **File Location**: `requirements.txt:1-2` **Vulnerability Type**: Uncontrolled third-party dependency resolution **Risk Level**: Medium ### Vulnerable Code ```text vosk pytest ``` The documented installation workflow in `README.md:9-11` installs these requirements directly: ```bash # Install dependencies pip install -r requirements.txt ``` ### Technical Analysis Neither dependency has an exact version constraint or an integrity hash. Consequently, separate installations can resolve to different package releases that were not reviewed with this Skill. This weakens build reproducibility and exposes users to future compromised, malicious, or behaviorally incompatible releases from the configured package index. `pytest` is a development and testing dependency but is included in the runtime requirements, unnecessarily increasing the production dependency and supply-chain surface. The repository does not itself retrieve remote payloads at runtime, and there is no evidence that the currently named packages are malicious. The risk arises during dependency installation because package versions and artifacts are not fixed. ### Attack Path 1. An attacker compromises a future release, maintainer account, distribution artifact, or package-resolution source for one of the declared dependencies. 2. A user follows the documented installation command: `pip install -r requirements.txt`. 3. Because no versions or hashes are specified, pip resolves and downloads the affected release available through the configured index. 4. Malicious package installation hooks, imported modules, or runtime code execute with the privileges of the user or service installing or running the Skill. 5. The resulting capabilities depend on those privileges and can include access to the Skill's files, readable user data, environment variables, and outbound network resources. ### Impact Assessment Successful exploitation could execute dependency-controlled code wi ...[truncated 595 chars]
Remediation
## Remediation Suggestions 1. Pin each runtime dependency to a reviewed exact version, for example: ```text vosk==<reviewed-version> ``` 2. Generate and enforce cryptographic hashes for every resolved artifact, for example with: ```bash pip-compile --generate-hashes requirements.in pip install --require-hashes -r requirements.txt ``` 3. Move `pytest` into a separate development requirements file, such as `requirements-dev.txt`, so it is not installed in production. 4. Use an approved package index or an internally controlled artifact mirror and disable unexpected fallback indexes. 5. Add automated dependency vulnerability and provenance scanning to CI, and review dependency updates before regenerating the lock file. 6. Install and run the Skill as a dedicated, unprivileged account in an isolated environment with only the filesystem and network access needed for offline transcription.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (7)

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The file contains user-facing natural-language strings exclusively in Chinese, including validation errors and usage comments. Because the skill does not offer any language/locale choice or document a justified region-specific constraint, this can violate language/locale policy requirements.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The skill documentation is entirely in Chinese and does not indicate any language choice, translation option, or region-specific justification. Under the policy criteria, natural-language content that effectively forces a locale or language without opt-in can be a policy violation.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
The markdown uses Chinese-only headings and instructions such as '入口', '依赖', and '使用示例'. This imposes a specific language on users without opt-in or a documented locale-specific reason, which matches the language policy violation category.

Unpinned Dependencies

Low
Category
Supply Chain
Content
vosk
pytest
Confidence
92% confidence
Finding
The dependency 'vosk' is unpinned, so builds may resolve to different versions over time. This creates supply-chain risk and reduces reproducibility, potentially introducing breaking changes or vulnerable releases without review.

Unpinned Dependencies

Low
Category
Supply Chain
Content
vosk
pytest
Confidence
96% confidence
Finding
The dependency 'pytest' is unpinned, which means installation may pull an arbitrary newer or older release depending on resolution context. That increases the chance of unintentionally consuming a vulnerable or incompatible version.

Unverifiable Dependency: pytest has 2 known advisory(ies) (CVE-2025-71176 (pytest has vulnerable tmpdir handling); CVE-2025-71176 (pytest has vulnerable tmpdir handling)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
90% confidence
Finding
The manifest references 'pytest' without a version pin, and static analysis indicates there are known advisories affecting some pytest releases. Because the version is unspecified, it is impossible to verify whether the installed dependency is safe, leaving open the possibility of pulling an affected version.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The inline comments are written only in Chinese, which imposes a specific language in the skill file without offering user choice or documenting a justified locale constraint. This matches the policy category for language or locale policy violations in natural-language content.

Static analysis

No suspicious patterns detected.