Back to skill

Security audit

Free Groq Voice Recognition

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent Groq transcription skill, but it gives unsafe credential-storage advice and makes a misleading privacy claim about third-party data sharing.

Install only if you are comfortable sending selected audio files to Groq for transcription. Do not put a real Groq API key in TOOLS.md or any shared/project file; use a protected environment variable or secret manager and rotate any key already pasted into a shared file.

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
SKILL.md:48
Finding
Insecure Guidance to Store a Groq API Key in Plaintext## Vulnerability Details **File Location**: `SKILL.md:48-58`, `SKILL.md:134-138`, and `README.md:6-13` **Vulnerability Type**: Plaintext sensitive credential storage **Risk Level**: Medium ### Vulnerable Code Snippets `SKILL.md:48-58`: ```markdown **Add to your TOOLS.md:** ```markdown ### Proxy Settings - HTTP Proxy: http://127.0.0.1:7890 ### Voice Recognition (FREE Groq Whisper) - API Key: gsk_your_key_here - Model: whisper-large-v3 - Language: zh (or your preferred language) - Requires Proxy: Yes (if in restricted region) ``` ``` `SKILL.md:134-138`: ```markdown ## Privacy & Security - ✅ Audio processed by Groq's API (not stored permanently) - ✅ API key stored locally in your TOOLS.md - ✅ No data sent to third parties ``` `README.md:6-13`: ```markdown 1. **Get FREE API Key**: https://console.groq.com/ (30 seconds, no credit card) 2. **Add to TOOLS.md**: ```markdown ### Voice Recognition (FREE Groq Whisper) - API Key: gsk_your_key_here - Model: whisper-large-v3 - Language: zh - Proxy: http://127.0.0.1:7890 (if needed) ``` ``` ### Technical Analysis The setup instructions explicitly direct users to place a live Groq bearer token in `TOOLS.md`. A documentation or project configuration file is not an appropriate secret store. Such files may be read by AI agents, included in prompts or diagnostic output, copied into backups, shared with collaborators, or accidentally committed to source control. The shell implementation itself correctly reads the credential from the `GROQ_API_KEY` environment variable. Consequently, the documentation conflicts with the safer credential interface already implemented by `transcribe.sh`. The privacy statement that no data is sent to third parties is also inaccurate in context: the script uploads selected audio to Groq for processing. This can cause users to underestimate the external disclosure of audio content and the ...[truncated 1323 chars]
Remediation
## Remediation Suggestions 1. Remove all instructions that tell users to place API keys in `TOOLS.md` or other project documentation. 2. Document `GROQ_API_KEY` as the supported credential mechanism, matching the existing shell implementation: ```bash export GROQ_API_KEY="gsk_replace_with_real_key" ./transcribe.sh recording.ogg en ``` 3. Recommend an operating-system secret manager, CI/CD secret store, or protected runtime environment variable for persistent configuration. 4. If a local environment file is supported, provide only a placeholder such as `.env.example`, add `.env` and `TOOLS.md` to `.gitignore`, and require restrictive permissions such as `chmod 600 .env`. 5. Warn users never to commit, paste into prompts, log, or share live bearer tokens. 6. Add secret scanning to repository and release workflows to detect Groq key patterns before publication. 7. Advise users to revoke and rotate any key previously stored in a shared or committed file and to review account usage for unauthorized requests. 8. Correct the privacy documentation to state explicitly that audio is transmitted to Groq as an external service provider. Avoid unsupported assurances about retention and link to Groq's current privacy and data-retention terms.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README explicitly tells users to place a live Groq API key directly into TOOLS.md, but provides no guidance about secret handling, exclusion from version control, or safer storage mechanisms. This creates a realistic risk of credential leakage through committed files, shared workspaces, screenshots, or logs, especially because setup instructions are likely to be copied verbatim by users.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The example configuration sets `Language: zh`, which imposes a specific language choice in natural-language documentation. The README does not present this as optional or explain that users should choose their preferred language, so it risks violating language/locale choice policy.

Lp3

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding
The skill documents behavior that implies shell/file-processing capability (for example, processing local audio files and proxy configuration) but does not declare any explicit tool scope or allowed tools. Missing scope declarations can cause overbroad execution authority or unclear review boundaries, increasing the chance that the agent uses powerful local capabilities without transparent user consent.

Vague Triggers

Medium
Confidence
87% confidence
Finding
The usage examples suggest the skill may activate on generic receipt of a voice message rather than an explicit user request to transcribe and send audio externally. Overbroad triggering is dangerous here because voice messages can contain sensitive personal or business information, and automatic forwarding to a third-party API may occur without informed, specific consent.

External Transmission

Medium
Category
Data Exfiltration
Content
**API Endpoint:**
```
https://api.groq.com/openai/v1/audio/transcriptions
```

**Model:** `whisper-large-v3` (OpenAI's most accurate model)
Confidence
79% confidence
Finding
The skill uses an external network endpoint to transmit user-provided audio for processing. External transmission is expected for this feature, but it is still security-relevant because voice data leaves the local environment and may include sensitive information, especially when combined with insufficient disclosure elsewhere in the document.

Intent-Code Divergence

Medium
Confidence
98% confidence
Finding
The privacy section claims 'No data sent to third parties' while the skill explicitly sends audio to Groq's external transcription API. This is a materially misleading privacy statement that can cause users to expose sensitive voice content under false assumptions about data handling.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill description and privacy section do not clearly and prominently warn that audio content is transmitted to an external API provider. Because audio often contains sensitive content, lack of upfront disclosure undermines informed consent and increases privacy risk in normal use.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
Defaulting the language to Chinese without user opt-in is not a direct security flaw, but it is an unsafe default that can lead to incorrect transcription behavior and unexpected processing assumptions. In a voice-processing workflow, surprising defaults increase the chance of user error, misclassification, or unnoticed mishandling of content.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script uploads the supplied audio file to Groq's external transcription API but provides no explicit user-facing notice at execution time that local audio contents will leave the machine. Because audio may contain sensitive conversations or personal data, this can cause unintentional disclosure even though the network transfer is the core function of the skill.

External Transmission

Medium
Category
Data Exfiltration
Content
# Transcribe using Groq's FREE Whisper API
curl -s --proxy "$PROXY" \
    "https://api.groq.com/openai/v1/audio/transcriptions" \
    -H "Authorization: Bearer $GROQ_API_KEY" \
    -H "Content-Type: multipart/form-data" \
    -F "file=@$AUDIO_FILE" \
Confidence
92% confidence
Finding
The script makes an outbound request to Groq's API and includes the audio file and API credential in that interaction. External transmission is expected for a cloud transcription skill, but it still creates a real confidentiality boundary crossing that becomes dangerous if users assume processing is local or do not understand where their audio is being sent.

Static analysis

No suspicious patterns detected.