Back to skill

Security audit

Tomoviee Text to Sound Effects

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its stated sound-effect generation purpose, but its authentication helper can expose a reusable Tomoviee API token and secret through command output and command-line history.

Review before installing. Use this only with Tomoviee/Wondershare API credentials you are comfortable exposing to the running agent, avoid the generate_auth_token.py quick-start command, and prefer a safer workflow that keeps secrets out of command-line arguments and never prints the Basic token. Install dependencies in an isolated environment and pin versions if you use it in production.

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

Error
Location
scripts/generate_auth_token.py:27
Finding

Reversible API Credentials Exposed Through Command-Line Arguments and Standard Output

Content
View full analysis
") sys.exit(1) app_key = sys.argv[1] app_secret = sys.argv[2] token = generate_access_token(app_key, app_secret) print(f"Access Token: {token}") print(f"\nUse in Authorization header as: Basic {token}") ``` The documented invocation is: ```bash python scripts/generate_auth_token.py YOUR_APP_KEY YOUR_APP_SECRET ``` ### Technical Analysis The helper accepts the application key and secret as command-line arguments, combines them as `app_key:app_secret`, Base64-encodes the resulting value, and prints it to standard output. Base64 is reversible encoding rather than encryption. Anyone who obtains the printed Basic token can recover both values directly. In an Agent environment, standard output may be returned to the caller or retained in execution logs. Command-line arguments may also be exposed through shell history, process listings, terminal logs, or process telemetry. This disclosure is unnecessary for the Skill's declared functionality. The primary API client already constructs the required Authorization header internally, so users and Agents do not need to receive or handle the reusable token. The Base64 operation in `scripts/tomoviee_text2sfx_client.py` is different: that client uses the encoded value only to construct the provider-required Basic Authorization header and sends it over HTTPS to the fixed, declared `openapi.wondershare.cc` endpoint. That network behavior is necessa ...[truncated 1265 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:32
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis
Remediation
View remediation
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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (9)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- Do not commit credentials into `SKILL.md`, scripts, or repository files.

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 · references/audio_apis.md (reported line 21)May include surrounding context.

md
- `X-App-Key: <app_key>`
- `Authorization: Basic <base64(app_key:app_secret)>`

The access token is generated by Base64-encoding `app_key:app_secret`.

## Request Parameters

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

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

md
# Text-to-Sound-Effect Prompt Guide

## Goal

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/audio_apis.md (reported line 1)May include surrounding context.

md
# Text-to-Sound-Effect Prompt Guide

## Goal

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/prompt_guide.md (reported line 1)May include surrounding context.

md
# Text-to-Sound-Effect Prompt Guide

## Goal

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_auth_token.py (reported line 18)May include surrounding context.

python
def generate_access_token(app_key: str, app_secret: str) -> str:
    """
    Generate access token for Tomoviee API authentication.
    
    Args:
        app_key: Application key from Tomoviee console

Credential Access

High
Category
Privilege Escalation
Confidence
98% confidence
Finding

The script prints the generated Basic authentication token directly to stdout. Because the token is just base64-encoded app_key:app_secret, anyone who sees terminal output, logs, CI job traces, clipboard contents, or redirected output can recover the underlying credentials and authenticate to the API.

Content

Scanner excerpt · scripts/generate_auth_token.py (reported line 41)May include surrounding context.

python
app_secret = sys.argv[2]
    
    token = generate_access_token(app_key, app_secret)
    print(f"Access Token: {token}")
    print(f"\nUse in Authorization header as: Basic {token}")

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script requires the application secret to be passed as a command-line argument, which exposes sensitive credentials through shell history, process listings, and audit logs on many systems. It also prints the derived Basic authentication token, which is effectively equivalent to the original credentials and can be reused if captured.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The description says to use the skill when users request "text_to_sound_effect operations or related tasks," but "related tasks" is open-ended and does not define clear boundaries for activation. This could cause unintended invocation for loosely related audio requests without explicit trigger constraints or negative examples.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.