T09 · Insecure Skill Coding Practices
Warning
- Location
- MEMORY.md:11
- Finding
- Plaintext Persistence of Sensitive Information About Children and Families<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:77-86`, `AGENT.md:36-41`, `MEMORY.md:11-18`, and `MEMORY.md:48-55` **Vulnerability Type**: Plaintext storage of sensitive personal data **Risk Level**: Medium ### Vulnerable Content `SKILL.md:77-86`: ```markdown ## What I Track I maintain a memory file with: - **Child profiles** — names, ages, interests, developmental progress - **Observations** — significant moments, milestones, breakthroughs - **Activities planned** — what worked, what to adjust - **Environment notes** — room setup, materials available, Reggio inspiration - **EYFS progress** — coverage across Prime and Specific Areas - **Parental communication** — feedback shared, concerns addressed - **Professional reflections** — what you've learned, growth areas ``` `AGENT.md:36-41`: ```markdown ## Memory Tracking - Classroom observations and child profiles - Activities planned and outcomes - Environmental design notes - Parental feedback and communication - Professional development reflections ``` `MEMORY.md:11-18`: ```markdown ## Children Profiles [Will track individual child observations, milestones, interests] ### Child 1: [Name] - **Age:** [e.g., 10 months] - **Interests:** [e.g., sensory exploration, music] - **Observations:** [Developmental notes] - **EYFS Focus Areas:** [Current learning focus] ``` `MEMORY.md:48-55`: ```markdown ## Documentation & Observations [Significant moments, photos, reflections on learning] ## Parental Communication - Feedback received - Milestones shared - Concerns addressed ``` ### Technical Analysis The Skill explicitly directs the Agent to maintain persistent records containing children's names, ages, developmental progress, observations, photographs, and parental communications. Because the intended subjects are between 45 days and two years old, these records concern particularly vulnerable data subjects. The records are stored in a regular Markdown file without any stated safeguards for: ...[truncated 2295 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. **Minimize collected information** - Use pseudonymous child identifiers instead of names. - Do not store exact birth dates, contact details, addresses, medical details, or unrelated family information. - Record only information necessary for the stated educational purpose. 2. **Prohibit sensitive media in Skill memory** - Remove the instruction to store photographs in `MEMORY.md`. - Keep authorized media in a dedicated, encrypted childcare-record system rather than a project directory. - Store references to approved records instead of embedding files or sensitive descriptions. 3. **Require informed authorization** - Add a clear requirement to obtain appropriate parent or guardian consent before recording identifiable observations. - Explain the purpose, retention period, access scope, and deletion procedure. - Ensure that consent requirements account for applicable childcare and privacy rules. 4. **Use secure storage** - Store operational child records in an encrypted, access-controlled record-management system. - Restrict access to authorized staff under unique accounts and least-privilege permissions. - Do not treat a general Markdown memory file as the authoritative child record. 5. **Prevent repository and backup exposure** - Exclude files containing real observations from version control. - Add relevant filenames and record directories to `.gitignore`. - Provide a sanitized example template containing fictional data for repository use. - Review synchronization and backup destinations before enabling persistent storage. 6. **Define retention and deletion controls** - Establish a documented retention period. - Delete records when they are no longer required or when authorization is withdrawn, subject to applicable recordkeeping obligations. - Include procedures for deleting copies from backups, exports, and shared workspaces where feasible. 7. **Add explicit Ag ...[truncated 393 chars]
