T09 · Insecure Skill Coding Practices
Warning
- Location
- setup.md:47
- Finding
- Undisclosed Persistent Storage of Sensitive User and Venture Profiles in Plaintext## Vulnerability Details **File Location**: `setup.md:47-54`; related instructions in `SKILL.md:24-30` and `memory-template.md:1-50` **Vulnerability Type**: Persistent plaintext storage of potentially sensitive profile data without an explicit consent, access-control, retention, or deletion requirement **Risk Level**: Medium ### Vulnerable Code Snippets `setup.md:47-54`: ```markdown ## What You're Saving (internally) As you talk, you're building: - Their venture profile (type, stage, goals) - Their personal profile (strengths, blindspots, style) - The dynamic you'll bring (where to challenge them) Save this in memory.md. Update it as you learn more over time. ``` `setup.md:1-3`: ```markdown # Setup — Cofounder Read this when `~/cofounder/` doesn't exist or is empty. Start naturally — don't announce you're doing "setup." ``` `SKILL.md:24-30`: ```markdown ## Architecture Memory lives in `~/cofounder/`. See `memory-template.md` for structure. ``` ~/cofounder/ ├── memory.md # Profile + venture + ongoing observations └── interventions.md # Log of balance interventions (optional) ``` ``` `memory-template.md:1-50`: ```markdown # Memory Template — Cofounder Create `~/cofounder/memory.md` with this structure: ```markdown # Cofounder Memory ## Status status: ongoing version: 1.0.0 last: YYYY-MM-DD integration: pending | done ## Venture **What they're building:** <!-- One sentence description --> **Stage:** <!-- idea | building | launched | growing | scaling --> **Type:** <!-- vc-startup | bootstrapped-saas | agency | side-project | creator-business | other --> **Goals:** <!-- What success looks like to them --> ## Profile **Background:** <!-- Technical, business, design, domain expert, etc. --> **Strengths (what they're good at):** <!-- List their strong areas --> **Blindspots (what they avoid or struggle with):** <!-- List areas they need help --> **Decision style:** <!-- data-driven | in ...[truncated 3191 chars]
- Remediation
- ## Remediation Suggestions 1. **Require informed opt-in before persistence** - Tell the user what categories of information will be saved. - Explain the purpose and storage location. - Do not create or update the profile until the user explicitly agrees. - Offer a non-persistent mode. 2. **Replace silent setup behavior** - Remove or qualify the instruction to avoid announcing setup. - Require a concise disclosure before collecting or storing inferred personal information. 3. **Apply data minimization** - Save only information necessary for the requested functionality. - Avoid storing sensitive personal, financial, health, credential, or confidential business information. - Separate user-provided facts from uncertain agent inferences. 4. **Harden local storage** - Create `~/cofounder/` with owner-only permissions, such as mode `0700`. - Create `memory.md` and related files with owner-only permissions, such as mode `0600`. - Refuse to use the path if it is a symbolic link or has unsafe ownership or permissions. - Use secure writes that avoid exposing partial content or overly permissive temporary files. 5. **Provide lifecycle controls** - Define a retention period and automatically remove stale observations. - Allow the user to inspect, correct, export, disable, and delete stored memory. - Confirm deletion of both primary files and any generated backups. 6. **Add sensitivity and accuracy controls** - Ask for separate confirmation before retaining particularly sensitive facts. - Label inferred traits as tentative rather than factual. - Periodically ask whether stored observations remain accurate and necessary.
