T09 · Insecure Skill Coding Practices
Warning
- Location
- references/evidence-collection.md:63
- Finding
- Unprotected Plaintext Storage of Sensitive Consumer Evidence<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:34-35`; `references/evidence-collection.md:63-80`; `references/evidence-collection.md:111-144` **Vulnerability Type**: Plaintext storage of sensitive personal and transactional data **Risk Level**: Medium ### Vulnerable Code Snippets `SKILL.md:34-35` ```markdown 对关键页面截图、提取结构化数据,保存至 `~/Downloads/dispute-evidence/{订单号}/`, 自动生成证据清单索引。 ``` `references/evidence-collection.md:63-80` ```markdown ## 文件组织 ``` ~/Downloads/dispute-evidence/{订单号}/ ├── 01-order-detail.png ├── 02-product-snapshot.png ├── 02-product-snapshot-part2.png # 长页面分段 ├── 03-logistics.png ├── 04-after-sale.png # 可选 ├── 05-chat-record.png # 可选 ├── 06-current-product-page.png # 可选 ├── 07-price-history.png # 可选 ├── 08-reviews.png # 可选 ├── 09-invoice.pdf # 可选 ├── 10-seller-license.png # 可选 ├── evidence-index.md # 证据清单 └── raw-data.json # 结构化数据 ``` ``` `references/evidence-collection.md:111-144` ```json { "platform": "平台名称", "orderId": "123456789", "orderTime": "2026-03-15T10:30:00+08:00", "productName": "商品名称", "productPrice": 299.00, "paidAmount": 279.00, "paymentMethod": "在线支付", "orderStatus": "已完成", "logistics": { "company": "快递公司", "trackingNo": "SF1234567890", "signedAt": "2026-03-17T14:20:00+08:00", "timeline": [ {"time": "2026-03-17 14:20", "status": "已签收"}, {"time": "2026-03-17 08:30", "status": "派送中"}, {"time": "2026-03-16 22:00", "status": "到达本地分拣中心"} ] }, "seller": { "name": "店铺名称", "company": "公司全称(工商注册名)", "type": "自营/第三方" }, "snapshot": { "title": "快照中的商品标题", "description": "快照中的关键描述", "promises": ["7天无理由", "正品保证"] }, "afterSale": { "hasRecord": false, "records": [] } } ``` ### Technical Analysis The skill directs the agent to persist evidence in a predictable directory under `~/Downloads`. ...[truncated 2308 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Store evidence in an application-private directory instead of `~/Downloads`, and create directories and files with owner-only permissions such as `0700` and `0600`. 2. Encrypt evidence at rest using an operating-system credential store or a user-supplied encryption key. 3. Ask for explicit consent before collecting optional sensitive sources such as invoices, conversations, seller licenses, and payment information. 4. Apply data minimization by omitting fields not necessary for the selected complaint or legal document. 5. Redact delivery addresses, telephone numbers, payment identifiers, and unrelated conversation content from screenshots and exports. 6. Detect or warn when the destination is covered by cloud synchronization, shared folders, automated backup, or public indexing. 7. Replace order numbers in directory names with random identifiers to reduce discoverability. 8. Define a retention period and offer automatic secure deletion after document generation or case completion. 9. Clearly inform the user which files will be created, what sensitive data they contain, and who may be able to access them. 10. Validate permissions after file creation and stop with a warning if the destination cannot provide adequate protection. ]]>
