T09 · Insecure Skill Coding Practices
- Location
SKILL.md:10- Finding
Persistent Plaintext Storage of Sensitive Business and Payment Information
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:10-16andSKILL.md:78-80
Vulnerability Type: Plaintext sensitive-data storage without defined access controls
Risk Level: MediumRelevant Skill Instructions (
SKILL.md:10-16):markdown 1. **Your business info:** Name, address, email, phone (save for reuse) 2. **Client info:** Company name, contact name, address 3. **Invoice number:** Or auto-generate (INV-YYYY-NNN format) 4. **Line items:** Description, quantity, unit price 5. **Payment terms:** Net 30, Net 15, Due on receipt, etc. 6. **Payment methods:** Bank transfer, PayPal, Stripe link, etc. 7. **Currency:** Default USDPersistence Requirements (
SKILL.md:78-80):markdown - Save invoices to an `invoices/` directory for record-keeping - If the user has sent invoices before, reuse their business details - Currency formatting: use proper symbols and decimal places ($1,234.56)Technical Analysis
The Skill instructs the Agent to collect business and client contact information, payment-method information, and invoice transaction details. It then requires invoices to be saved in an
invoices/directory and directs the Agent to reuse previously supplied business details.These instructions establish persistent storage of potentially sensitive data but do not define:
- Restrictive directory and file permissions
- Encryption at rest
- User consent before persistence or reuse
- Data minimization or redaction of banking and payment details
- Retention periods and secure deletion procedures
- Protection against accidental repository commits, backups, or file sharing
- Warnings that generated HTML or Markdown invoices may contain portable plaintext data
Consequently, generated invoice files may expose names, addresses, email addresses, telephone numbers, client relationships, financial amounts, and bank-transfer or payment-account details to any user or process ca ...[truncated 1714 chars]
- Remediation
View remediation
Remediation Suggestions
- Require explicit user consent before saving invoices or retaining reusable business details.
- Store the minimum information necessary and avoid retaining complete bank-account credentials, sensitive payment tokens, or unnecessary client data.
- Redact payment details by default, retaining only safe references such as the last four digits or a user-approved payment identifier.
- Create invoice directories and files with owner-only permissions where supported, such as directory mode
0700and file mode0600. - Store generated invoices outside source repositories and add the invoice directory to ignore rules when repository use is possible.
- Offer encryption at rest for retained invoices and protect encryption keys separately from the generated files.
- Define configurable retention periods and provide commands for secure deletion of invoices and cached business profiles.
- Warn users before generating portable HTML or Markdown documents containing sensitive payment information.
- Separate reusable business-profile data from completed invoices and allow users to inspect, update, export, or delete the retained profile.
- Clearly document that access to invoice history must be restricted to authorized users and processes.
