Back to skill

Security audit

Walkie-Talkie Mode

Security checks for vulnerabilities and agentic risk

Overview

The skill’s voice-chat purpose is clear, but it processes private WhatsApp audio automatically and documents unsafe local command and temporary-file handling that users should review before installing.

Install only if you are comfortable with the agent automatically transcribing WhatsApp voice messages locally and replying with generated audio. Before use, require explicit opt-in for voice mode, avoid logging transcripts, use a unique private temporary file per response, delete audio files after sending, and ensure TTS text is passed safely rather than interpolated into a shell command.

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

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:35
Finding
Potential Shell Command Injection Through TTS Text Interpolation## Vulnerability Details **File Location**: `SKILL.md`, line 35 **Vulnerability Type**: Shell command injection **Risk Level**: High ```bash bin/sherpa-onnx-tts /tmp/reply.ogg "Tu mensaje aquí" ``` ### Technical Analysis The manual execution instructions encourage placing generated response text directly inside a shell command. The response may be influenced by an untrusted voice transcript. If an agent or implementation replaces the placeholder with response text through string interpolation and invokes it through a shell, embedded quotation marks, command substitutions, or shell metacharacters could escape the intended argument. For example, response content containing a closing quotation mark followed by shell syntax could alter the command structure. The documented quotation marks alone do not safely parameterize untrusted data. Exploitability depends on the downstream implementation invoking the resulting command through a shell rather than passing arguments directly to the executable. ### Attack Path 1. An attacker submits a crafted WhatsApp audio message. 2. The local transcription process converts the audio into text containing instructions or shell metacharacters. 3. The transcript influences the response supplied to the TTS command. 4. The agent or integration replaces `"Tu mensaje aquí"` with that response using direct string interpolation. 5. The constructed command is executed through a shell. 6. Malicious shell syntax escapes the intended TTS argument and executes commands with the privileges of the agent process. ### Impact Assessment Successful exploitation could permit arbitrary command execution under the operating-system account running the skill. The attacker could read or modify files accessible to that account, access locally available credentials, alter generated messages, invoke installed tools, or interfere with other skill operations. This issue does not independently demonstrate privilege esc ...[truncated 33 chars]
Remediation
## Remediation Suggestions - Never construct the TTS invocation by concatenating response text into a shell command. - Invoke `bin/sherpa-onnx-tts` through an argument-array API that bypasses shell parsing, such as an equivalent of `execve()` or `subprocess.run([...], shell=False)`. - If supported by the TTS program, provide text through standard input or a securely created input file. - Treat transcriptions and generated responses as untrusted data. - Enforce response-size limits and validate the expected text encoding. - Add tests containing quotation marks, command substitutions, newlines, and shell metacharacters to confirm that all content remains a single inert argument.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:35
Finding
Predictable Shared Temporary File for Generated Voice Responses## Vulnerability Details **File Location**: `SKILL.md`, lines 35-37 **Vulnerability Type**: Unsafe temporary-file handling **Risk Level**: Medium ```bash bin/sherpa-onnx-tts /tmp/reply.ogg "Tu mensaje aquí" ``` Then send `/tmp/reply.ogg` via `message` tool with `filePath`. ### Technical Analysis The workflow uses the fixed path `/tmp/reply.ogg` for every generated response. Because `/tmp` is commonly shared among users and processes, a predictable filename can produce race conditions, cross-session collisions, content substitution, and symlink attacks. If the TTS executable follows symbolic links when opening the output, another local process may pre-create `/tmp/reply.ogg` as a symlink and redirect the write to another file accessible to the agent account. Alternatively, an attacker may replace the file after generation but before the `message` tool reads it, causing attacker-controlled audio to be transmitted. Concurrent skill sessions may also overwrite or send one another's responses. ### Attack Path 1. A local attacker predicts that the skill will use `/tmp/reply.ogg`. 2. Before generation, the attacker creates that path as a symbolic link or prepares to race its creation. 3. The TTS process opens the predictable path and may follow the link, overwriting the linked destination with its operating-system privileges. 4. Alternatively, the attacker replaces `/tmp/reply.ogg` between TTS completion and the `message` tool reading it. 5. The skill sends substituted audio, leaks audio from a concurrent session, or writes to an unintended file. ### Impact Assessment The issue may allow local content substitution, disclosure of voice responses across concurrent sessions, denial of service, or unintended file overwrite within the permissions of the agent account. The exact overwrite impact depends on the TTS tool's file-opening behavior, ownership checks, and symbolic-link protections. A remote WhatsApp user alone cannot gene ...[truncated 120 chars]
Remediation
## Remediation Suggestions - Create a private temporary directory with restrictive permissions for each invocation. - Generate a cryptographically unpredictable, unique output filename using a secure temporary-file API. - Create the file atomically with exclusive creation and symbolic-link protections. - Restrict generated-file permissions to the agent account. - Keep a trusted file descriptor open, where supported, rather than reopening a path after generation. - Prevent concurrent sessions from sharing output paths. - Verify that the file remains a regular file owned by the expected account before sending it. - Delete the temporary audio and its containing directory immediately after transmission.
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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill automatically transcribes incoming WhatsApp voice messages and generates voice replies, but it provides no user-facing notice, consent flow, or privacy guidance for handling potentially sensitive biometric and conversational data. Even though the workflow says to use local tools only, silent processing of private audio can still violate user expectations, organizational policy, or compliance requirements and may expose sensitive content to logs, temporary files, or operators.

Static analysis

No suspicious patterns detected.