T09 · Insecure Skill Coding Practices
- Location
setup.md:7- Finding
Unprotected Plaintext Persistence of Sensitive Travel and Booking Data
- Content
View full analysis
Vulnerability Details
File Location:
setup.md:7-25; related data schema inmemory-template.md:13-21andmemory-template.md:48-51
Vulnerability Type: Plaintext sensitive-data storage without explicit consent, data minimization, retention controls, or permission hardening
Risk Level: MediumComplete Code Snippet
From
setup.md:7-25:markdown ### 1. Create Memory Structure ```bash mkdir -p ~/canada2. Initialize Memory File
Create
~/canada/memory.mdusing the template frommemory-template.md.3. Gather Trip Context
Ask naturally (not as a form):
- What month are you traveling? (season is critical in Canada)
- How long is the trip?
- Which cities or regions matter most?
- What trip style fits best? (food, cities, nature, family)
- Any mobility, dietary, or budget constraints?
- Are you renting a car or using public transport?
4. Save to Memory
Update
~/canada/memory.mdwith their answers.text From `memory-template.md:13-21`: ```markdown - **Travelers:** [solo / couple / family / group] - **Kids:** [yes (ages) / no] ## Preferences - **Travel style:** [foodie / city / nature / road-trip / family / nightlife / mixed] - **Budget:** [budget / mid-range / luxury] - **Dietary:** [none / vegetarian / vegan / gluten-free / other] - **Mobility:** [full / limited / wheelchair] - **Transport:** [public transit / rental car / mixed]From
memory-template.md:48-51:markdown ## Bookings Made | What | Where | Date | Confirmation | |------|-------|------|--------------| | | | | |Technical Analysis
The setup procedure directs the agent to create and update
~/canada/memory.mdwhen Canada travel is first discussed. The stored schema can include travel dates and destinations, children's ages, dietary information, mobility limitations, budget, and booking confirmation data.This information is persisted in an ordinary ...[truncated 2370 chars]
- Remediation
View remediation
Remediation Suggestions
-
Require explicit consent before persistence
- Explain which fields will be stored, where they will be stored, and why.
- Default to session-only processing unless the user opts into long-term memory.
-
Minimize collected data
- Remove the booking
Confirmationfield. - Store children's broad age groups only when operationally necessary.
- Avoid retaining detailed mobility, dietary, or budget information unless the user requests it.
- Prefer approximate travel windows over exact dates when exact dates are unnecessary.
- Remove the booking
-
Harden filesystem permissions
- Create the directory and file with owner-only permissions.
- On POSIX systems, use an equivalent of
umask 077, directory mode0700, and file mode0600. - Do not claim equivalent protection on unsupported platforms without implementing platform-specific access controls.
-
Add retention and deletion controls
- Define a short default retention period.
- Delete completed-trip details automatically or ask whether they should be retained.
- Provide clear commands to inspect, edit, and erase all saved travel memory.
-
Exclude secrets and authenticators
- Explicitly prohibit storage of passwords, payment details, ticket barcodes, passport data, loyalty-account credentials, and complete booking references.
- If a booking needs to be tracked, store a non-sensitive user-defined label instead of the operator's confirmation identifier.
-
Document residual risk
- Warn that plaintext local files may be included in backups or synchronization systems.
- Clarify that local storage does not guarantee confidentiality from other software or accounts with filesystem access.
-
