T09 · Insecure Skill Coding Practices
Warning
- Location
- memory-template.md:1
- Finding
- Plaintext Persistence of Property and Valuation Data## Vulnerability Details **File Location**: `memory-template.md:1-30` **Related Locations**: `SKILL.md:14-21`, `SKILL.md:42-48`, `SKILL.md:113-120`, `setup.md:14-18`, `setup.md:22-26`, `memory-template.md:45-47` **Vulnerability Type**: Plaintext storage of potentially sensitive personal and financial data **Risk Level**: Medium ### Vulnerable Code Snippets `memory-template.md:1-30`: ```markdown # Memory Template — Property Valuation Create `~/property-valuation/memory.md` with this structure: ```markdown # Property Valuation Memory ## Status status: ongoing version: 1.0.0 last: YYYY-MM-DD integration: pending | done | declined ## Context <!-- Market focus, property types, valuation purpose --> <!-- Add as you learn from conversations --> ## Market Data <!-- Local price/sqft averages, cap rates, market conditions --> <!-- Update when user provides market intel --> ## Properties Analyzed <!-- Brief log of valuations done --> <!-- Format: Date | Address/Description | Value Range | Method --> ## Notes <!-- Preferences: quick estimates vs detailed analysis --> <!-- Data sources they have access to (MLS, etc.) --> --- *Updated: YYYY-MM-DD* ``` ``` `SKILL.md:14-21`: ```markdown Memory at `~/property-valuation/`. See `memory-template.md` for structure. ``` ~/property-valuation/ ├── memory.md # Properties analyzed, market data └── valuations/ # Saved valuation reports ``` ``` `SKILL.md:42-48`: ```markdown Before estimating, gather: - Location (address or neighborhood) - Property type (SFH, condo, multi-family) - Size (sqft or sqm) - Bedrooms/bathrooms - Condition (excellent/good/fair/poor) - Year built ``` `setup.md:14-18`: ```markdown Ask early: - "Should I help with property valuations whenever you mention real estate prices or buying/selling?" - "Do you want quick estimates ...[truncated 2914 chars]
- Remediation
- ## Remediation Suggestions 1. Require explicit, informed opt-in before retaining any property-specific record, separately from consent to perform the valuation. 2. Default to memory-free operation and allow users to obtain valuations without persistent logging. 3. Store only the minimum necessary information. Prefer user-selected aliases or coarse neighborhood identifiers instead of exact addresses. 4. Do not persist valuation ranges, transaction purposes, or property histories unless the user specifically requests retention. 5. Create the directory and files with owner-only permissions, such as directory mode `0700` and file mode `0600`, where supported. 6. Define a short retention period and automatically remove expired records. 7. Provide commands or documented procedures to inspect, redact, export, and permanently delete stored data. 8. Avoid recording sensitive context in general-purpose Markdown memory when a session-scoped representation is sufficient. 9. Update the privacy disclosure to state accurately what is retained, where it is stored, how long it is retained, and who may access it. 10. Warn users that local files may be included in device backups or exposed to other software running under the same account.
