T09 · Insecure Skill Coding Practices
- Location
SKILL.md:92- Finding
Plaintext Persistence of Sensitive Health and Behavioral Data
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 92-107; related storage directives at lines 110-155, 1192-1207, and 1275-1277
Vulnerability Type: Sensitive information stored in plaintext with unspecified access controls
Risk Level: MediumVulnerable Code
text ### User profile persistence Proactively ask the user during the conversation whether the profile should be saved: Whether the user needs to save their body data. After saving, it can be retrieved in a later conversation with one command. Saved content: sex, age, height, weight, activity level, goal, and menstrual-cycle information Storage location: local ~/nutrition-data/profile.json (local storage only; not uploaded) Profile reading and updates: - When the user requests "read profile," read ~/nutrition-data/profile.json - When the user requests "update profile [field]," update the corresponding field and recalculate - When the user requests "delete profile," delete the local file - During recalculation, if a profile exists, ask whether the latest saved weight should be usedRelated directives also store daily meal logs, hydration records, and habit data in predictable plaintext files:
text ~/nutrition-data/daily-logs/{yyyy-MM-dd}.json ~/nutrition-data/hydration.json ~/nutrition-data/habits.jsonTechnical Analysis
The Skill directs the Agent to persist potentially sensitive information in ordinary JSON files under a predictable directory. The stored data can include sex, age, height, weight, menstrual-cycle information, pregnancy or breastfeeding status, PCOS status, allergies, food intolerances, meal history, hydration records, and behavioral trends.
The instructions do not require restrictive directory or file permissions, encryption at rest, data minimization, retention limits, or secure deletion. The statement that data is stored locally and is not uploaded limits remote exposure but does not pr ...[truncated 1712 chars]
- Remediation
View remediation
Remediation Suggestions
- Create
~/nutrition-data/with owner-only permissions such as mode0700. - Create each data file with mode
0600, using secure file-creation semantics that do not briefly expose broader permissions. - Encrypt sensitive records at rest with an OS-backed key store or another authenticated encryption mechanism.
- Obtain explicit, granular consent before storing reproductive or medical information, separately from ordinary nutrition preferences.
- Minimize persisted fields and avoid storing optional health data unless required for a feature explicitly requested by the user.
- Define configurable retention periods and automatically delete expired daily logs and derived habit records.
- Provide a comprehensive deletion command that removes the profile, daily logs, hydration records, habit records, and derived summaries rather than deleting only
profile.json. - Use atomic writes and validate file ownership, type, and path before reading or updating records to reduce symlink and file-replacement risks in an implementation.
- Clearly disclose which records are stored, their location, retention period, and how the user can inspect, export, or delete them.
- Create
