Back to skill

Security audit

Kai Minimax Tts

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward MiniMax text-to-speech helper with local Whisper transcription, but users should treat submitted text and saved outputs as potentially sensitive.

Install only if you are comfortable sending text for speech generation to MiniMax using your API key. Avoid using it with secrets or highly sensitive text, and be aware that generated audio and transcripts are saved in a predictable workspace path unless you configure a custom workspace.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/kai_tts.sh:17
Finding

Predictable Temporary Transcript Path Enables Local File and Symlink Manipulation

Content
View full analysis
/dev/null || true echo "Done" ``` ### Technical Analysis The script directs `whisper` to write its transcript into the shared `/tmp` directory. The expected output filename is derived predictably from the basename of user-supplied `FILE`. Because `/tmp` is normally writable by other local users, an attacker can anticipate `/tmp/${BASE}.txt` and create that path before the script executes. The path could be a regular file or a symbolic link. This creates a time-of-check/time-of-use and symlink-manipulation condition around both the `whisper` output and the subsequent `cp`. The fixed destination `${WORKSPACE}/latest_from_blaze.txt` can also be unsafe if an attacker with access to the workspace can replace it with a symbolic link before `cp` executes. ### Attack Path 1. The attacker determines or influences the basename of an audio file that the victim will transcribe. 2. The attacker predicts the transcript path, such as `/tmp/recording.txt`. 3. Before the victim invokes the skill, the attacker creates that path as attacker-controlled content or as a symbolic link. 4. The victim runs the script with `--transcribe`. 5. `whisper` and the subsequent `cp` operate on the attacker-controlled path. 6. Depending on filesystem permissions and the behavior of `whisper` and `cp`, attacker-selected content may be copied into the workspace, or a file accessible to the invoking account may be read or overwritten. ### Impact Assessment This flaw primarily affects transcript integrity and file confidentiality. A local attacker may substitute a forged transcript, cause the script to c ...[truncated 363 chars]
Remediation
View remediation
/dev/null || true`; fail securely and report the actual error. ]]>

T09 · Insecure Skill Coding Practices

Note
Location
scripts/kai_tts.sh:13
Finding

Unescaped User Text Permits JSON Request Manipulation

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/kai_tts.sh:17
Finding

Option-Shaped Audio Paths Can Alter Whisper Command Parsing

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill advertises shell-based usage and required binaries, but it does not declare any explicit tool scope such as allowed-tools or permissions. That creates an authorization gap where an agent may invoke shell capabilities more broadly than intended, reducing least-privilege protections and making review of runtime behavior harder.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description says it can transcribe audio files, but it does not warn that transcription may send user audio to an external API. This can expose sensitive spoken content, background conversations, or regulated data to a third party without informed user consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

This curl request transmits the full text payload to an external service along with an API credential, which is expected for cloud TTS but still represents a real data egress boundary. In the context of an agent skill, the danger is increased because upstream prompts or user content may contain confidential information that is silently forwarded to a third party.

Content

Scanner excerpt · scripts/kai_tts.sh (reported line 13)May include surrounding context.

sh
if [ -z "$API_KEY" ]; then echo "Error: MINIMAX_API_KEY not set"; exit 1; fi
    VOICE_ID="moss_audio_a43c027d-10db-11f1-83e4-92355c742862"
    [ "$LANG" != "es" ] && VOICE_ID="moss_audio_2b525bea-10da-11f1-bd2a-3a1ec25b94c4"
    RESP=$(curl -s -X POST "https://api-uw.minimax.io/v1/t2a_v2" -H "Content-Type: application/json" -H "Authorization: Bearer ${API_KEY}" -d "{\"model\":\"speech-2.8-turbo\",\"text\":\"${TEXT}\",\"stream\":false,\"output_format\":\"hex\",\"voice_setting\":{\"voice_id\":\"${VOICE_ID}\",\"speed\":1},\"audio_setting\":{\"sample_rate\":32000}}")
    HEX=$(echo "$RESP" | grep -o '"audio":"[^"]*"' | cut -d'"' -f4)
    [ -n "$HEX" ] && echo "$HEX" | xxd -r -p > "${WORKSPACE}/Kai.mp3" && echo "Generated: ${WORKSPACE}/Kai.mp3" || echo "Error: $RESP"
elif [ "$ACTION" = "--transcribe" ]; then

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script sends arbitrary user-provided text to the external MiniMax API for speech generation without any explicit disclosure, confirmation, or data sensitivity checks. In an agent setting, this can cause unintended exfiltration of secrets, private prompts, or sensitive user content to a third-party service, especially when the caller may not realize TTS is cloud-backed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The setup instructions require an API key and imply outbound network access, but they provide no warning about credential handling or the fact that data will be sent to an external provider. This increases the chance of accidental credential exposure or uninformed use in environments where external network transfer is restricted or sensitive.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The script writes generated audio to a persistent workspace file and copies transcription output into a predictable filename without warning the caller. This can leave sensitive spoken or transcribed content on disk longer than expected, creating privacy and data retention risks in shared or multi-user environments.

Content

No source excerpt is available for this finding.