T09 · Insecure Skill Coding Practices
- Location
SKILL.md:31- Finding
API Key Exposed in URL Query Parameters
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 31, 36, and 48
Vulnerability Type: API credential exposure through URL query parameters
Risk Level: MediumVulnerable Code
text - **URL**: `POST https://ohyesai.com/ohyesai-next/api/vio/skill/upload?apikey={{OHEYSAI_API_KEY}}`text - **URL**: `POST https://ohyesai.com/ohyesai-next/api/vio/skill/mv-submit?apikey={{OHEYSAI_API_KEY}}`text - **URL**: `GET https://ohyesai.com/ohyesai-next/api/vio/skill/mv-query?apikey={{OHEYSAI_API_KEY}}&taskId={{taskId}}`Technical Analysis
The skill instructs the agent to include
OHEYSAI_API_KEYin the query string for upload, task submission, and task-status requests. Although HTTPS encrypts requests in transit, query strings may still be retained by web servers, reverse proxies, API gateways, observability platforms, request histories, and diagnostic or error logs.This design unnecessarily expands the number of systems and personnel that may gain access to the credential. URL redaction is also less consistently enforced than redaction of recognized authentication headers.
Attack Path
- The agent reads
OHEYSAI_API_KEYfrom its environment. - It interpolates the secret into one of the documented API URLs.
- A server, proxy, gateway, monitoring service, or debugging component records the complete request URL.
- An attacker or unauthorized operator with access to those records extracts the
apikeyvalue. - The exposed key is replayed against the OhYesAI API to make unauthorized requests.
Impact Assessment
Successful exploitation could permit unauthorized API calls under the victim's account or quota. Depending on the server-side authorization model, an attacker may be able to upload content, submit resource-consuming MV-generation jobs, query task information, or otherwise use API functionality authorized by the compromised key.
The finding does not de ...[truncated 137 chars]
- The agent reads
- Remediation
View remediation
Remediation Suggestions
-
Replace query-string authentication with a dedicated request header, preferably:
http Authorization: Bearer ${OHEYSAI_API_KEY}Alternatively, use a service-specific secret header if bearer authentication is unsupported.
-
Update all three documented endpoints so neither the API key nor any other credential appears in a URL.
-
Ensure commands, application logs, errors, progress messages, and user-visible output never print the credential or an authenticated URL.
-
Configure API gateways, reverse proxies, and observability systems to redact authentication headers and any legacy
apikeyquery parameter. -
Rotate keys that may previously have been transmitted in query strings, because historical logs may retain them.
-
Apply least-privilege scopes, usage limits, expiration, and anomaly monitoring to API credentials where supported.
-
