T09 · Insecure Skill Coding Practices
- Location
SKILL.md:45- Finding
Secret API Token Exposed in a URL Query String
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 45–47
Vulnerability Type: Credential exposure through a URL query parameter
Risk Level: MediumVulnerable Code
bash curl -X GET "https://api-v2.voicemonkey.io/announcement?token=$VOICEMONKEY_TOKEN&device=YOUR_DEVICE_ID&text=Hello%20from%20Echo"Technical Analysis
The documented GET request places the secret
VOICEMONKEY_TOKENdirectly in the URL query string. Although HTTPS protects the request while it is in transit, query strings can still be retained in shell history, API gateway and reverse-proxy access logs, server logs, monitoring platforms, debugging output, and support diagnostics.Anyone with access to such records may recover and reuse the bearer token. The same file provides a safer POST example using the
Authorizationheader, demonstrating that placing the token in the URL is unnecessary.Attack Path
- A user follows the documented GET example with a valid
VOICEMONKEY_TOKEN. - The token-bearing URL is recorded in shell history, infrastructure logs, monitoring telemetry, or diagnostic output.
- An attacker or unauthorized operator obtains access to one of those records.
- The attacker extracts the token from the
tokenquery parameter. - The attacker reuses the token in requests to the documented VoiceMonkey announcement, trigger, or flow endpoints.
- The API performs actions against devices and resources associated with the compromised account, subject to the token's server-side permissions.
Impact Assessment
Successful exploitation exposes the authority granted to the VoiceMonkey token. Based on the documented API capabilities, an attacker may be able to:
- Send text-to-speech announcements to linked Alexa devices.
- Play attacker-selected audio or video and display images.
- Open websites on compatible Echo Show devices.
- Trigger configured Alexa routines.
- Start configured Voic ...[truncated 239 chars]
- A user follows the documented GET example with a valid
- Remediation
View remediation
Remediation Suggestions
- Remove the GET example that transmits
VOICEMONKEY_TOKENthrough thetokenquery parameter. - Require POST requests with the token supplied only through the
Authorizationheader:bash curl -X POST "https://api-v2.voicemonkey.io/announcement" \ -H "Authorization: $VOICEMONKEY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "device": "YOUR_DEVICE_ID", "text": "Hello from Echo" }' - Remove or deprecate documentation stating that the
tokenparameter may be supplied in the URL. - Configure clients, proxies, and monitoring systems to redact authorization credentials and other sensitive request metadata.
- Avoid enabling verbose command tracing when executing authenticated requests.
- Advise users to rotate the token immediately if it may have appeared in shell history, logs, telemetry, screenshots, or diagnostics.
- Where supported, use narrowly scoped and short-lived credentials to reduce the consequences of disclosure.
- Remove the GET example that transmits
