T09 · Insecure Skill Coding Practices
Error
- Location
- SKILL.md:25
- Finding
- Trello Credentials Exposed in URL Query Strings<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 25; the same pattern recurs at lines 30, 35, 40, 48, 54, 60, 75, 79, and 83. **Vulnerability Type**: Credentials transmitted through command-line URL query parameters **Risk Level**: High ### Vulnerable Code ```bash curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}' ``` The same insecure credential-placement pattern is used by all documented Trello API commands, including write operations such as creating, moving, commenting on, and archiving cards. ### Technical Analysis The documented commands interpolate `TRELLO_API_KEY` and `TRELLO_TOKEN` directly into URL query strings passed as command-line arguments to `curl`. Once expanded by the shell, the complete URL can be visible through local process inspection while the command is running. Query strings may also be captured by API gateways, reverse proxies, HTTP diagnostics, monitoring platforms, debugging output, or other URL-logging infrastructure. Although HTTPS encrypts the URL in transit, it does not prevent credential disclosure through local process metadata or endpoint-side URL logging. The risk is significant because `SKILL.md` explicitly states that these credentials provide full access to the user's Trello account. ### Attack Path 1. A user configures `TRELLO_API_KEY` and `TRELLO_TOKEN` and executes one of the documented commands. 2. The shell expands both variables into the URL supplied to `curl`. 3. An attacker with access to local process metadata, diagnostic telemetry, proxy records, or URL-bearing service logs captures the expanded request URL. 4. The attacker extracts the API key and token from the `key` and `token` query parameters. 5. The attacker submits independent requests to the Trello REST API using the stolen credentials. 6. The attacker accesses or modifies Trello resources within the permissions granted to the compromised token. ### Impact As ...[truncated 726 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Use a Trello-supported authorization header instead of URL query parameters where the applicable endpoint and authentication mechanism permit it. 2. If query parameters are unavoidable, prevent secrets from appearing directly in ordinary command arguments by using a permission-restricted curl configuration or an equivalent protected credential mechanism. 3. Ensure any credential configuration file is readable only by its owner, for example with permissions equivalent to `0600`, and exclude it from version control. 4. Disable or redact query-string capture in proxies, API gateways, observability systems, shell tracing, and diagnostic tooling. 5. Avoid verbose curl output and never enable shell tracing such as `set -x` while credentials are being expanded. 6. Use the narrowest available token permissions and a dedicated integration identity where Trello supports those controls. 7. Document immediate token revocation and regeneration procedures for suspected exposure. 8. Replace every affected example in `SKILL.md`, including all read and write operations, so users are not directed to repeat the insecure pattern. ]]>
