Back to skill

Security audit

SiliconFlow TTS Gen

Security checks for vulnerabilities and agentic risk

Overview

This text-to-speech skill appears aligned with its purpose, but it needs review because it combines broad local command execution with API-key handling that can expose the key in process arguments.

Review before installing. Use a limited SiliconFlow API key if possible, avoid sending confidential text unless SiliconFlow handling is acceptable for your use case, and prefer a version-pinned installer. The package does not show hidden persistence or destructive behavior, but its broad exec permission and command-line token handling are meaningful risks.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/generate.py:85
Finding

API Key Exposed Through Child Process Command-Line Arguments

Content
View full analysis
` in its command-line arguments. 5. The attacker captures the command line while the request is running. 6. The attacker ext ...[truncated 710 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
README.md:15
Finding

Unpinned Package Runner Used in Installation Instructions

Content
View full analysis
Remediation
View remediation
...`, after confirming the correct package identity and version. 2. Use lockfiles or integrity hashes where the installation workflow supports them. 3. Document the expected registry and official package source so users can detect registry substitution. 4. Prefer a previously installed and verified installer rather than downloading executable package content during every installation. 5. Apply the same hardened command consistently in both `README.md` and `SKILL.md`. 6. Avoid running the installer with administrative privileges unless installation explicitly requires them. ]]>
Vulnerability Patterns
  • 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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (11)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/generate.py (reported line 32)May include surrounding context.

python
}

def get_api_key():
    """Get API key from environment or OpenClaw config"""
    api_key = os.environ.get("SILICONFLOW_API_KEY")
    if api_key:
        return api_key

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README promotes cloud TTS usage via the SiliconFlow API and asks users to provide an API key, but it does not disclose that submitted text will be transmitted to an external third-party service. This omission can cause users to unknowingly send sensitive, regulated, or proprietary content off-device, creating privacy, compliance, and data-handling risks in contexts where prompts may contain confidential information.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The README instructs users to run npx clawhub install siliconflow-tts-gen without pinning a specific package version, which can lead to non-reproducible installs and exposure to a compromised or malicious newly-published version. Because this is an installation command executed directly by users, a supply-chain compromise of the referenced package or its latest tag could result in arbitrary code execution on the user's machine.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill declares access to environment variables and local files and demonstrates shell-based execution, but it does not define any explicit tool scope such as permissions or allowed-tools. That increases the attack surface because an agent runtime may grant broader capabilities than users expect, including access to the API key and local configuration file mentioned in the manifest.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
80% confidence
Finding

The installation instruction uses npx clawhub without pinning a specific version, which creates a supply-chain risk because future or compromised package versions could execute different code at install time. In an agent skill context, that is more dangerous because installation may occur automatically or with elevated trust, potentially leading to arbitrary code execution before the user reviews the skill.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/generate.py (reported line 15)May include surrounding context.

python
import subprocess

# API Configuration
API_BASE_URL = "https://api.siliconflow.cn/v1"
DEFAULT_MODEL = "FunAudioLLM/CosyVoice2-0.5B"
DEFAULT_VOICE = "alex"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill sends arbitrary user-provided text to a third-party TTS service, but the script does not present an explicit disclosure or consent boundary before transmission. In an agent-skill context, users may provide sensitive prompts or data without realizing it will leave the local environment.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/generate.py (reported line 97)May include surrounding context.

python
"-o", output_path
        ]
        
        result = subprocess.run(curl_cmd, capture_output=True)
        
        if result.returncode != 0:
            print(json.dumps({

Tainted flow: 'curl_cmd' from os.environ.get (line 87, credential/environment) → subprocess.run (code execution)

Medium
Category
Data Flow
Confidence
65% confidence
Finding

Data from a source is assigned to a variable that is later passed to a sink, creating a variable-mediated taint flow.

Content

Scanner excerpt · scripts/generate.py (reported line 97)May include surrounding context.

python
"-o", output_path
        ]
        
        result = subprocess.run(curl_cmd, capture_output=True)
        
        if result.returncode != 0:
            print(json.dumps({

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The trigger pattern "tts" is very broad and likely to match casual shorthand in unrelated conversations, causing the skill to activate unexpectedly. In a skill that also has elevated capability such as "exec", accidental invocation becomes more dangerous because it increases opportunities for unintended command execution or data handling.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest requests the generic "exec" tool even though the stated purpose is only text-to-speech via an external API. A generic command-execution capability greatly expands the attack surface because any prompt-triggered or compromised skill logic could invoke arbitrary local commands, access files, or exfiltrate secrets such as API keys and user data.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.