T09 · Insecure Skill Coding Practices
- Location
SKILL.md:23- Finding
Plaintext Storage of Sensitive Educational and Personal Profile Data
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:23-34; related sensitive fields are defined intracking.md:3-10, and wellbeing indicators appear inwellbeing.md:11-16
Vulnerability Type: Plaintext sensitive-data storage without defined access controls, retention limits, or consent boundaries
Risk Level: MediumVulnerable Code Snippets
SKILL.md:23-34:markdown ## Data Storage User data lives in `~/jee/`:~/jee/ ├── profile.md # Goals, target rank, exam dates, category ├── subjects/ # Per-subject and chapter-wise progress ├── sessions/ # Study session logs ├── mocks/ # Mock test results and analysis ├── mistakes/ # Error log with patterns └── feedback.md # What works, what doesn't
text tracking.md:3-10:markdown ## Profile Setup (`~/jee/profile.md`) ```markdown ## Basic Info - Target: JEE Main + Advanced - Category: General / OBC-NCL / SC / ST / EWS - User Type: 12th Student / Dropper / 11th Start - Coaching: Allen Kota / FIITJEE / Online / Self-studytext `wellbeing.md:11-16`: ```markdown ### Mental Health Warning Signs - Sleep changes (too much or too little) - Social withdrawal - Statements like "I'm wasting my life" or "What's the point" - Comparing excessively with peers - Physical symptoms: headaches, stomach issues, fatigueTechnical Analysis
The Skill mandates persistent local storage under
~/jee/and instructs the Agent to track educational performance, reservation category, coaching affiliation, mistakes, and wellbeing-related observations. These records may contain sensitive personal data, particularly caste or reservation category and mental-health-related statements.The storage design does not specify:
- Owner-only directory or file permissions.
- User consent before persisting sensitive fields.
- Data minimization requirements.
- Retention periods or secu ...[truncated 1910 chars]
- Remediation
View remediation
Remediation Suggestions
-
Apply restrictive permissions
- Create
~/jee/with owner-only permissions equivalent to0700. - Create individual records with permissions equivalent to
0600. - Refuse to use the storage directory if it is a symlink or is writable by other users.
- Create
-
Require informed consent
- Ask for explicit permission before persisting category or wellbeing information.
- Allow users to use the Skill without storing these fields.
- Clearly state which data will be stored, where it will be stored, and how it will be used.
-
Minimize sensitive data
- Store only information necessary for the requested study-planning function.
- Do not retain raw mental-health statements by default.
- Prefer temporary session context or coarse, non-sensitive indicators where persistence is unnecessary.
-
Define retention and deletion controls
- Establish a configurable expiration period for sessions, mock results, and wellbeing notes.
- Provide commands to inspect, export, redact, and permanently delete stored information.
- Remove stale records after the examination cycle unless the user opts in to continued retention.
-
Separate sensitive records
- Keep wellbeing information separate from ordinary progress logs.
- Do not include category or wellbeing data in parent, tutor, PTM, batch, or dashboard outputs unless the student explicitly authorizes that disclosure.
-
Protect generated reports
- Redact sensitive profile fields by default.
- Generate aggregate reports where individual-level information is unnecessary.
- Warn users before writing records into synchronized or shared directories.
-
Document the data-handling model
- Add a privacy section describing collection, access, retention, sharing, and deletion.
- Clarify that “track everything” applies only to necessary study metrics and does not authorize unrestricted ...[truncated 46 chars]
-
