T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:9
- Finding
- Unconditional Plaintext Storage of Sensitive Fitness and Health Data## Vulnerability Details **File Location**: `SKILL.md`, lines 9–19 and 65–67 **Vulnerability Type**: Plaintext sensitive-data storage and excessive automatic collection **Risk Level**: Medium ### Vulnerable Code ```markdown ## Data File: `data/fitness.json` ```json { "profile": { "goal": "", "weight_log": [], "start_date": null }, "workouts": [], "meals": [], "prs": {}, "weekly_summary": [], "current_week": { "workout_count": 0, "target": 0, "workouts": [] } } ``` ``` ```markdown 1. Always read `data/fitness.json` before responding about fitness 2. Update the JSON immediately after any fitness conversation 3. Keep responses short — log confirmation + one comment ``` ### Technical Analysis The Skill requires persistent storage of weight history, meals, workouts, goals, progress, and potentially injury-related information in a local JSON file. These records constitute sensitive fitness and health-related data. The instructions require the agent to read the file for every fitness response and update it immediately after any fitness conversation. They do not require explicit consent for each stored entry, limit collection to information the user requested to retain, or distinguish inferred nutritional estimates from confirmed facts. No encryption, file-permission requirements, retention policy, deletion mechanism, or data-minimization controls are specified. Consequently, sensitive records may remain accessible in plaintext to any user or process that already has permission to read the project workspace. This finding does not provide privilege escalation or grant an attacker additional system permissions; exploitation requires preexisting access to the storage location. ### Attack Path 1. A user discusses a workout, meal, body weight, fitness goal, or injury-related concern. 2. The Skill interprets the conversation and may derive estimated values such as calories, protein, or workout per ...[truncated 919 chars]
- Remediation
- ## Remediation Suggestions 1. Require explicit user confirmation before creating or updating persistent fitness records. 2. Replace “update immediately after any fitness conversation” with a rule that stores only fields the user explicitly asks to log. 3. Clearly mark calorie, protein, and performance estimates as inferred values and allow users to review or correct them before storage. 4. Apply data minimization by excluding free-form conversation details and unrelated medical information. 5. Restrict the data file to the owning account using the narrowest filesystem permissions supported by the environment. 6. Use encrypted storage when the runtime provides a suitable protected storage mechanism. 7. Define retention controls and provide commands to inspect, export, correct, and permanently delete stored records. 8. Prevent sensitive files from entering source control, logs, diagnostics, or unprotected backups. 9. Document who or what can access the data and notify the user before synchronization with external systems.
