T09 · Insecure Skill Coding Practices
- Location
references/operations/get-game-steam-summary.md:27- Finding
Steam Web API Key Transmitted in a URL Query Parameter
- Content
View full analysis
Vulnerability Details
File Location:
references/operations/get-game-steam-summary.md, lines 27-28 and 51
Vulnerability Type: Sensitive credential exposure through a query string
Risk Level: MediumRelevant source excerpt, rendered in English:
markdown > [!IMPORTANT] > **API Key Security** > This endpoint requires a Steam Web API Key. We strongly recommend configuring and invoking it through the backend to avoid exposing it in the client. You may also temporarily provide a key through the `key` query parameter to override the backend configuration. | `key` | query | string | No | Your Steam Web API Key. This optional parameter overrides the globally configured backend key when supplied. It offers greater flexibility, but the key must remain confidential and must not be exposed in the frontend. |Technical Analysis
The skill documentation permits a Steam Web API key to be supplied through the
keyURL query parameter. Although HTTPS protects the request while it is in transit, it does not prevent the complete URL from being retained after TLS termination.URLs and query strings are commonly captured by:
- Web server and reverse-proxy access logs.
- API gateways and load balancers.
- Application performance monitoring and tracing platforms.
- Error reports, debugging output, and request history.
- Browser or HTTP client history.
- Referrer data in some redirect or browser-based scenarios.
Consequently, a request such as
GET /game/steam/summary?key=REDACTED&steamid=...can cause the credential to be copied into systems with broader access and longer retention periods than an authorized secret store. The warning against frontend disclosure does not eliminate this issue because the documented request format itself places the secret in a log-prone URL component.Attack Path
- A user provides a valid Steam Web API key to perform a Steam profile lookup.
- The agent follows ...[truncated 1135 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the
keyquery parameter from the documented and implemented API contract. - Accept the credential through a protected request header, such as an authorization header or a dedicated secret header, rather than through the URL.
- Prefer server-side credential configuration backed by a secret manager so users do not need to submit Steam keys with individual lookup requests.
- Configure the application, API gateway, reverse proxy, and observability tooling to redact authorization headers and any legacy
keyparameter before logging. - Prevent credentials from appearing in error messages, traces, analytics events, request history, and debugging output.
- Keep Steam API calls on trusted backend infrastructure and prohibit browser-side or other client-side embedding of the key.
- If compatibility requires temporary support for the query parameter, mark it as deprecated, obtain explicit user consent, warn that the third-party service receives the key, disable URL logging for the endpoint, and provide a migration deadline.
- Rotate any Steam Web API keys that may already have been transmitted through this query parameter, and review retained logs and traces for prior exposure.
- Remove the
