T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:14
- Finding
- Automatic Plaintext Persistence of Potentially Sensitive Conversation Data## Vulnerability Details **File Location**: `SKILL.md`, lines 14-25 **Vulnerability Type**: Plaintext sensitive-data storage **Risk Level**: Medium ### Evidence ```markdown **Trigger — scan every message for:** - ✏️ Corrections — "It's X, not Y" / "Actually..." / "No, I meant..." - 📍 Proper nouns — names, places, companies, products - 🎨 Preferences — styles, approaches, "I like/don't like" - 📋 Decisions — "Let's do X" / "Go with Y" - 🔢 Specific values — numbers, dates, IDs, URLs **If any appear:** 1. **WRITE FIRST** → update `memory/SESSION-STATE.md` 2. **THEN** respond The urge to respond is the enemy. Write before replying. ``` ### Technical Analysis The Skill instructs the Agent to scan every message and automatically persist names, preferences, identifiers, URLs, decisions, and other specific values in `memory/SESSION-STATE.md`. This collection occurs before responding and does not require user confirmation. The instructions provide no sensitivity classification, secret detection, redaction, access-control requirements, restrictive file permissions, retention period, or secure deletion procedure. Consequently, credentials, private URLs, personal identifiers, internal project names, or other confidential values could be treated as ordinary details and stored in plaintext. ### Attack Path 1. A user supplies a message containing a confidential identifier, private URL, access token, personal name, or other sensitive value. 2. The Skill categorizes the value as a proper noun, specific value, correction, preference, or decision. 3. Before responding, the Agent writes the value to `memory/SESSION-STATE.md`. 4. The value remains available on the filesystem after the immediate exchange. 5. Another user, Agent session, extension, backup process, or local process with access to the workspace reads the persisted value. ### Impact Assessment Successful exploitation does not directly grant additional ope ...[truncated 499 chars]
- Remediation
- ## Remediation Suggestions - Require explicit user opt-in before persisting conversational information. - Store only the minimum task state needed for recovery rather than every matching value. - Prohibit storage of passwords, API keys, session tokens, authentication cookies, private keys, financial data, and private or signed URLs. - Apply secret detection and data-loss-prevention filtering before writing any value. - Redact identifiers and personal data unless their exact value is essential to the task. - Use per-user and per-task storage boundaries with restrictive filesystem permissions. - Define a short retention period and securely delete state when the task ends or the user withdraws consent. - Inform the user what will be stored, where it will be stored, and how it can be removed.
