T09 · Insecure Skill Coding Practices
- Location
SKILL.md:234- Finding
Financial API Keys Stored in Plaintext Configuration
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 234
Vulnerability Type: Plaintext storage of sensitive credentials
Risk Level: MediumComplete Relevant Snippet:
text API Key configuration supports Wind (WIND_API_KEY), Bloomberg (BLOOMBERG_API_KEY), and THS (THS_API_KEY). API keys are stored in the local config.yaml file and are not uploaded to a server.The snippet above is an English rendering of the instruction at the cited location.
Technical Analysis
The documentation explicitly directs users to store financial-data service API keys in a local
config.yamlfile. It does not require encryption, restrictive filesystem permissions, exclusion from version control, or integration with an operating-system or cloud secret manager.A local file does not inherently provide secure secret storage. Configuration files are frequently copied into repositories, shared workspaces, diagnostic archives, CI artifacts, and unencrypted backups. Processes or users with access to the workspace may also read the credentials.
No evidence indicates that the skill transmits these keys to an unauthorized destination. The finding concerns insecure credential storage rather than confirmed exfiltration.
Attack Path
- A user follows the documented configuration instructions.
- The user writes a valid Wind, Bloomberg, or THS API key into
config.yaml. - The file remains readable in the project workspace and is not explicitly excluded from version control.
- Another local user, compromised process, shared-workspace participant, backup operator, or repository recipient obtains the file.
- The exposed key is used to access the corresponding financial-data service within the permissions and quotas assigned to that credential.
Impact Assessment
Successful exploitation can expose the privileges granted to the compromised API key. Depending on the provider and account configuration, this may pe ...[truncated 335 chars]
- Remediation
View remediation
Remediation Suggestions
- Read API keys from environment variables or a dedicated secret manager instead of storing them in
config.yaml. - Provide a
config.example.yamlcontaining placeholders only. - Add the real configuration file and other secret-bearing variants to
.gitignore. - Require restrictive permissions, such as owner-only read and write access, if a local secret file is unavoidable.
- Prevent credentials from appearing in logs, exceptions, generated reports, and diagnostic archives.
- Add automated secret scanning to development and CI workflows.
- Document key rotation and immediate revocation procedures for accidentally exposed credentials.
- Configure provider credentials with the smallest available permissions, quotas, and allowed-source restrictions.
- Read API keys from environment variables or a dedicated secret manager instead of storing them in
