T09 · Insecure Skill Coding Practices
- Location
SKILL.md:74- Finding
Plaintext Storage of Sensitive Tokens in a Shared YAML Configuration
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:74andSKILL.md:229
Vulnerability Type: Plaintext sensitive-data storage
Risk Level: MediumThe documentation explicitly demonstrates writing an API token into the shared configuration:
python helper.set_module_value('api', 'token', value='abc123')It also shows the resulting token stored in plaintext YAML:
yaml api: token: abc123 endpoint: https://api.example.comTechnical Analysis
The documented design stores configuration values in
common_info.yaml, a centralized file shared across processes and modules. The examples encourage users to place API tokens in this file but do not require restrictive file permissions, encryption, secret-store integration, access controls, or redaction of sensitive values from debugging output.Although
abc123is an illustrative placeholder rather than a confirmed live credential, users following this pattern with real credentials would persist those credentials as plaintext. Any local account, process, backup system, artifact collector, or source-control operation capable of reading the project directory could consequently expose them.Attack Path
- A user follows the documented example and passes a real API token to
set_module_value. - The helper writes the token into the project-level
common_info.yamlfile. - The configuration file is created or retained with permissions that permit another local process or user to read it, or it is unintentionally committed, archived, or included in build artifacts.
- The unauthorized party reads the plaintext token.
- The token is used against the associated service with whatever privileges were granted to that credential.
Impact Assessment
Exploitation can disclose API credentials or other sensitive configuration values placed in the shared YAML file. The resulting privileges are limited to those granted to the exposed credentia ...[truncated 390 chars]
- A user follows the documented example and passes a real API token to
- Remediation
View remediation
Remediation Suggestions
- Remove examples that store API tokens, passwords, private keys, or other credentials in the shared YAML file.
- Recommend a dedicated secret manager, operating-system credential store, or environment-based secret injection for sensitive values.
- If sensitive-file storage is unavoidable, create the file with owner-only permissions and verify permissions before every read or write.
- Separate non-sensitive shared configuration from secrets and clearly document that
common_info.yamlmust not contain credentials. - Ensure configuration and backup files are excluded from source control, build artifacts, logs, and diagnostic bundles.
- Redact sensitive keys such as
token,password,secret, andapi_keyfrom debug output. - Use short-lived, narrowly scoped credentials and provide a documented rotation procedure for potentially exposed tokens.
- Add implementation-level tests that verify secure permissions, redaction, and protection against accidental secret serialization.
