Back to skill

Security audit

VibeVoice TTS

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent local text-to-speech skill, but its script has high-impact input-handling and dependency risks that deserve review before installation.

Install only if you trust the VibeVoice source checkout, dependencies, model downloads, and any inputs passed to the voice option. Avoid exposing this script to untrusted voice names or environment variables; pin dependencies and the upstream repo before use.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/vv.sh:24
Finding

Arbitrary Python Code Injection Through the Voice Parameter

Content
View full analysis
Remediation
View remediation
&2 exit 1 fi ``` 4. Check that all options requiring a value actually have one before reading `$2`. 5. Add regression tests covering quotes, newlines, backslashes, path separators, command substitutions, and other metacharacters in every externally controllable argument. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/vv.sh:103
Finding

Unsafe PyTorch Checkpoint Deserialization Combined With Path Traversal

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:17
Finding

Unpinned Repository and Python Dependencies Create a Mutable Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
``` 2. Record the expected commit and verify it before installation. Prefer signed tags where the maintainer's signing key has been independently verified. 3. Pin exact Python package versions in a requirements or lock file. 4. Use hashes for downloaded Python artifacts, for example with a generated requirements file and: ```bash python -m pip install --require-hashes -r requirements.txt ``` 5. Pin transitive dependencies, not only direct packages, to make the environment reproducible. 6. Use an explicitly trusted package index and review any environment variables or pip configuration that can redirect dependency resolution. 7. Avoid editable installs for production deployment. Build or obtain a verified wheel from the reviewed source and install that immutable artifact. 8. Regularly scan the lock file and pinned commit for known vulnerabilities, but update pins only after review and testing. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The README repeatedly frames the skill as producing Spanish speech, including 'Local Spanish text-to-speech' and 'Natural Spanish voice,' without indicating that users can choose another language or explicitly opt into the locale constraint. This is a natural-language locale policy concern because the skill appears to impose a specific language by default rather than presenting it as a user-selected or clearly justified regional limitation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The description states the skill is for 'Local Spanish TTS' and presents Spanish generation as the default behavior. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the constraint is clearly documented as region-specific or the user is offered a choice.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script changes into a user-controlled directory and sources its virtual environment activation script before running Python, so any attacker who can influence VIBEVOICE_DIR or the contents of that directory can execute arbitrary shell/Python code. This is especially dangerous because source venv/bin/activate executes shell commands directly in the current process, not just an isolated interpreter.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script claims to be local TTS but loads the model using a remote Hugging Face-style identifier, which can trigger network access and pull code/artifacts outside the packaged skill boundary. That creates a supply-chain and privacy risk because model resolution may download unpinned content at runtime and violate user expectations of fully local execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The usage examples show the skill creating audio files at paths like /tmp/audio.ogg, which is a user-data-affecting file write. The README describes features and usage but does not include any warning or disclosure that running the command will write or overwrite an output file at the specified path.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The comment explicitly describes the tool as "Local Spanish TTS," which signals a fixed language/locale behavior. The file does not offer any user opt-in or explain why Spanish is required, so this is a natural-language locale policy concern under the stated rules.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/vv.sh:105