T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:67- Finding
Persistent Plaintext Storage and Cross-Skill Reuse of Sensitive Personal Data
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 67–105 and 197–200
Vulnerability Type: Plaintext storage and cross-scope access of sensitive personal data
Risk Level: MediumVulnerable Code Snippet
markdown ## User Context This Skill requires the user's birth date and full legal name (in English) to calculate the core numbers. **Reading**: Before running, check in this order: 1. This directory's `MEMORY.md` — use first 2. `fortune-hub/MEMORY.md` in the same repo (if it exists) — fill in any missing base profile fields If data is available, use it directly without asking again. **Writing**: After collecting user info, write it to **this directory's** `MEMORY.md`: ```markdown # User Info ## Basic Profile - Date of birth: YYYY-MM-DD - Full legal name (English): Full Name ## Core Numbers (Cached) - Life Path Number: X - Expression Number: X - Soul Urge Number: X - Personality Number: X - Birthday Number: Xtext ```markdown ### Step 5: Save Results After the first complete reading, cache the core numbers to `MEMORY.md`. Subsequent Personal Cycle queries can use the cache without recalculating.Technical Analysis
The Skill directs the Agent to collect a user's full legal name and date of birth and save them in a persistent Markdown file. These values are sensitive identifying information, but the instructions do not require explicit storage consent, encryption, restrictive file permissions, data minimization, a retention period, or a deletion mechanism.
The Skill also instructs the Agent to read
fortune-hub/MEMORY.md, which belongs to another Skill scope, and to reuse any discovered profile data without asking the user again. This crosses a least-privilege boundary because the numerology calculation can operate on information supplied in the current session and does not inherently require access to another Skill's persistent state.Automatic reuse ...[truncated 1507 chars]
- Remediation
View remediation
Remediation Suggestions
- Keep names and dates of birth session-scoped by default. Do not persist them unless the user explicitly opts in.
- Remove default access to
fortune-hub/MEMORY.md. If cross-Skill sharing is necessary, require an explicit user-approved capability and limit access to the minimum required fields. - Before reading persistent profile data, tell the user what will be accessed, why it is needed, and from which file or scope it will be obtained.
- Verify that a recovered profile belongs to the current user before using it. Display a minimally identifying summary and request confirmation rather than silently applying it.
- Minimize persisted data. Cache derived numbers without retaining the full legal name or complete date of birth where feasible.
- If identity data must be retained, use protected storage with restrictive permissions and encryption appropriate to the host platform rather than a plaintext Markdown file.
- Define a retention period and provide clear commands for users to inspect, update, and permanently delete stored profile information.
- Prevent shared-workspace leakage by separating memory per user and per Skill, with access controls that prohibit unrelated Skills from reading the data.
- Avoid logging sensitive values and document the privacy implications of optional profile caching.
