Back to skill

Security audit

Edge TTS English

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it says, but its audio script can write output to an unrestricted local path and uses a shared predictable temp file.

Review this before installing if the agent may handle sensitive text or run with broad filesystem permissions. Use a dedicated private output directory, avoid caller-selected paths, and prefer unique temporary files before relying on it.

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

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/speak.sh:7
Finding

Unrestricted Output Path and Predictable Temporary File

Content
View full analysis
Remediation
View remediation
&2 exit 1 fi OUTPUT="$(mktemp --tmpdir="$OUTPUT_DIR" 'speech.XXXXXX.mp3')" chmod 600 -- "$OUTPUT" ``` - If caller-selected destinations are required, canonicalize the requested path and allow writes only beneath a dedicated, Agent-owned output directory. - Reject symbolic links and non-regular existing destinations. Where supported, use file-opening semantics equivalent to `O_NOFOLLOW` and exclusive creation. - Avoid a shared fixed filename so concurrent invocations cannot overwrite or disclose each other's output. - Run the Skill as an unprivileged account with access only to its dedicated output directory. - Delete generated files after they have been delivered, unless retention is explicitly required. - Check the exit status of `edge-tts` before printing or sending the output path, and remove partial output following a failed invocation. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (3)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill advertises broad trigger phrases such as 'read aloud', 'pronounce', and multilingual equivalents, which can overlap with many normal user requests and cause the skill to be invoked when the user did not specifically intend to use this tool. Because the skill sends generated audio directly to the user, unintended invocation can produce confusing behavior, privacy issues around speaking sensitive text aloud, or unnecessary external service use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The description claims multilingual support but frames the skill primarily as producing English output and 'native-quality English audio', which can lead the agent to choose English pronunciation or output without clear user consent. This is mainly a product-safety and correctness issue: users may receive speech in the wrong language or accent, which is especially problematic for language-learning or pronunciation tasks.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The script's comments and default parameter set en-US-AriaNeural as the default voice, which implicitly forces a specific language/locale when the caller does not provide one. This is a natural-language locale choice embedded in the skill behavior, and the file does not indicate user opt-in or a justified region-specific constraint.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.