T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:29
- Finding
- Plaintext Persistence of Sensitive Agency, Client, and Personnel Data## Vulnerability Details **File Locations**: - `SKILL.md:29-39` - `onboarding.md:47-64` - `team.md:3-20` - `feedback.md:13-23` - `feedback.md:27-44` **Vulnerability Type**: Sensitive information stored in unprotected plaintext files **Risk Level**: Medium ### Vulnerable Content `SKILL.md:29-39`: ```markdown Agency data lives in ~/agency/: ``` ~/agency/ ├── clients/ # One file per client │ ├── index.md # Client list with status │ └── [name].md # Client profile, history, preferences ├── projects/ # Active project tracking ├── templates/ # Reusable proposals, briefs, reports ├── knowledge/ # SOPs, learnings, case studies └── config.md # Rates, margins, team structure ``` ``` `onboarding.md:47-64`: ```markdown ## Client Folder Setup Create `~/agency/clients/[client-slug].md`: ```markdown # [Client Name] ## Status: [prospect|active|past] ## Start date: [date] ## Primary contact: [name, email] ### Brand/Voice Notes <!-- Tone, terminology, preferences --> ### Projects <!-- List with dates and outcomes --> ### History Log <!-- Key interactions, decisions, issues --> ``` ``` `team.md:3-20`: ```markdown ## Team Database Maintain in ~/agency/config.md: ```markdown ### Team Members #### [Name] - Role: [role] - Skills: [skill1, skill2] - Availability: [hours/week] - Rate: [internal cost/hour] - Current projects: [list] - Notes: [preferences, timezone, communication style] ### Freelancers #### [Name] - Specialty: [what they're best at] - Rate: [hourly/project] ``` ``` `feedback.md:13-23`: ```markdown `~/agency/knowledge/`: ``` knowledge/ ├── sops/ # Standard Operating Procedures │ ├── onboarding.md │ ├── proposal.md │ └── delivery.md ├── cases/ # Completed project summaries │ └── [project-name].md ├── learnings.md ...[truncated 3422 chars]
- Remediation
- ## Remediation Suggestions 1. Create the workspace with restrictive permissions: - Set `~/agency/` and its subdirectories to mode `0700`. - Set files containing client, financial, or personnel records to mode `0600`. - Verify permissions after creating or modifying files. 2. Add explicit instructions prohibiting storage of passwords, API keys, access tokens, private keys, session cookies, and other authentication material in Markdown records. Use an operating-system keychain or dedicated secret manager instead. 3. Encrypt sensitive records or require full-disk or home-directory encryption. Document that the workspace should not be placed in an unapproved cloud-synchronized directory. 4. Minimize collected information: - Store only contact and operational details required for active work. - Avoid unnecessary personal observations in personnel notes. - Redact or pseudonymize completed-project records where possible. 5. Establish retention and deletion controls: - Define retention periods for prospect, past-client, project, and personnel records. - Archive only information with a documented business requirement. - Securely delete expired sensitive records and associated backups where feasible. 6. Separate data by sensitivity. Store financial data, personnel assessments, and client contact records in distinct protected locations rather than a single broadly accessible workspace. 7. Require user confirmation before persisting unusually sensitive client information and provide a warning when the target path appears to be shared, synchronized, or insufficiently protected.
