T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:9
- Finding
- Plaintext Persistence of Sensitive Travel-Document Metadata<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:9-12`, `SKILL.md:18-21`, `SKILL.md:23-30`, `SKILL.md:45-46`, and `README.md:32-34` **Vulnerability Type**: Plaintext storage of sensitive information **Risk Level**: Medium ### Vulnerable Code Snippets `SKILL.md:9-12`: ```markdown ## Перед ответом 1. **Прочитай** `knowledge/personal/travel.md` — там прошлые поездки, вишлист, документы. 2. **Учитывай историю чата**. 3. Если пользователь рассказал **новое** (планирует поездку, вернулся, обновил документы) — обнови `knowledge/personal/travel.md`. ``` `SKILL.md:18-21`: ```markdown - **Документы:** паспорт (срок действия), визы (какие есть, сроки), страховки. - **Бюджет:** примерный бюджет поездки, трекинг расходов в поездке. - **Чеклист:** что взять с собой, что не забыть перед отъездом. - **Напоминания:** паспорт истекает через N месяцев, виза заканчивается. ``` `SKILL.md:23-30`: ```markdown ## Правила - Актуальные цены и визовые правила — проверять в интернете, не выдумывать. - Формат в `knowledge/personal/travel.md`: ```markdown ## Документы - Паспорт: действителен до YYYY-MM-DD - Визы: ... ``` `SKILL.md:45-46`: ```markdown ## Файлы - **Память:** `knowledge/personal/travel.md` — читать в начале, обновлять. ``` `README.md:32-34`: ```markdown ## Данные Хранятся в `knowledge/personal/travel.md` в воркспейсе агента. ``` ### Technical Analysis The Skill explicitly directs the Agent to persist passport expiration dates, visa information, insurance details, budgets, and travel history in `knowledge/personal/travel.md`. This is an ordinary Markdown file in the Agent workspace. No encryption, access-control requirements, restrictive file permissions, retention period, deletion workflow, consent prompt, or data-minimization policy is specified. The file must also be read at the beginning of relevant interactions, increasing how frequently sensitive information is exposed to the Agent context. Although the documented format does not request pa ...[truncated 1707 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Make persistent document tracking explicitly opt-in and explain which fields will be stored. 2. Require confirmation immediately before every write involving passport, visa, or insurance information. 3. Apply data minimization: - Store only reminder dates where possible. - Prohibit storage of passport numbers, visa identifiers, document images, authentication data, and full insurance policy numbers. - Avoid retaining exact travel dates unless necessary. 4. Store sensitive information in an access-controlled secret or personal-data store rather than a general Markdown workspace file. 5. If file storage is unavoidable, require restrictive filesystem permissions and encryption at rest. 6. Define a retention period and automatically remove expired document and itinerary information. 7. Provide commands for users to inspect, correct, export, and permanently delete stored information. 8. Prevent unrelated Skills and tools from reading the travel-memory file through workspace-level access controls. 9. Redact sensitive fields before including memory content in prompts, logs, diagnostics, or external requests. ]]>
