T09 · Insecure Skill Coding Practices
- Location
README.md:17- Finding
API Secret Exposure Through Conversational Plaintext
- Content
View full analysis
Vulnerability Details
File Location:
README.md, lines 17-26;SKILL.md, lines 15-21 and 28-36
Vulnerability Type: Plaintext sensitive credential handling
Risk Level: MediumVulnerable Documentation
The relevant section of
README.mdinstructs users to:markdown ## Prepare Credentials 1. Register an account at https://wxpub.aibana.art 2. Create an `app_id` and `secure_key` on the Skill page 3. Add funds to the account Tell Claude the credentials, for example: > My app_id is `ak_xxx`, and my secure_key is `yyy`The corresponding section of
SKILL.mdstates that authentication requires anapp_idandsecure_key, and that every request must contain both fields:markdown - Authentication: An `app_id` and `secure_key` are required. All endpoints must contain the following fields: | Field | Type | Description | |---|---|---| | `app_id` | string | Assigned application identifier | | `secure_key` | string | Corresponding secret key |Technical Analysis
The documentation explicitly instructs users to disclose a live
secure_keyin conversational plaintext. This places the credential in the model context and may also expose it through conversation history, agent traces, telemetry, debugging output, application logs, or transcript exports.Requiring credentials for the advertised API is legitimate and does not by itself indicate malicious exfiltration. The vulnerability is the credential-handling design: the language model receives the raw secret rather than having a trusted integration layer inject it into outbound requests. Because every API request contains the same secret, repeated use also increases the number of systems and records in which it may appear.
No hardcoded production credential was found in the repository; the documented values are placeholders. The risk arises when a user follows the instructions with real credentials.
Attack Path
- A ...[truncated 1068 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove instructions telling users to paste
secure_keyvalues into a conversation. - Store credentials in a platform secret manager, protected credential store, or environment variable unavailable to the language model.
- Configure the HTTP integration to inject authentication fields immediately before transmission.
- Redact
secure_keyvalues from application logs, model traces, error messages, telemetry, and request previews. - Use short-lived, narrowly scoped tokens where the service supports them.
- Provide credential rotation and immediate revocation mechanisms.
- Prevent secrets from being echoed in assistant responses or tool output.
- Add automated secret-detection controls to conversational input and logging pipelines.
- Document that credentials must never be entered directly into chat and provide secure setup instructions instead.
- Apply rate limits, spending limits, and anomaly alerts per credential to reduce the impact of compromise.
- Remove instructions telling users to paste
