other
Warning
- Location
- README.md:160
- Finding
- Misleading Privacy Disclosure and Correlatable Session Identifier Transmission<![CDATA[ ## Vulnerability Details **File Location**: `README.md:160-164`; `SKILL.md:94-101`; `SKILL.md:394-398` **Vulnerability Type**: Privacy disclosure inconsistency and unnecessary identifier disclosure **Risk Level**: Medium ### Vulnerable Code Snippets `README.md:160-164`: ```markdown ## Privacy & Affiliate Links - All product URLs include affiliate tags for revenue tracking - No personal data is sent to the API - Search queries are processed by GPT-4 for intent recognition ``` `SKILL.md:94-101`: ```json { "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "shopping_assistant_chat", "arguments": { "user_input": "I want to buy headphones", "session_id": "user123" } } } ``` `SKILL.md:394-398`: ```markdown ### Session Continuity For shopping_agent and shopping_assistant_chat: - Generate unique session_id (e.g., timestamp or user identifier) - Reuse same session_id across conversation turns - Enables the backend to remember context and preferences ``` ### Technical Analysis The documentation categorically claims that no personal data is sent to the API, but the documented workflow forwards free-form user input and recommends using a user identifier as a remote session identifier. Free-form shopping requests can contain names, locations, recipient information, health-related requirements, interests, purchasing preferences, or other personal information. A stable `session_id`, especially one derived from a user identifier, can also permit the external service to correlate multiple requests and build a persistent preference profile. The issue is not evidence of malicious data theft, and the external endpoint is part of the skill's declared shopping functionality. However, the mismatch between the privacy claim and the actual data flow prevents users from making an adequately informed decision about disclosure. ### Attack Path 1. A user activates the shopping skill and provides a request contain ...[truncated 1323 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace the categorical privacy statement with an accurate description of all transmitted data, including search queries, free-form conversation text, market codes, session identifiers, and request metadata. 2. Explicitly warn users not to include unnecessary personal, financial, health, or other sensitive information in shopping requests. 3. Never derive `session_id` values from usernames, email addresses, account IDs, device IDs, or other persistent user identifiers. 4. Generate cryptographically random, opaque, short-lived session identifiers and rotate or delete them when the shopping conversation ends. 5. Minimize transmitted content by extracting only the product criteria required to perform the search. 6. Obtain explicit user confirmation before forwarding requests containing potentially sensitive information. 7. Document the external service's privacy policy, retention period, subprocessors, and deletion mechanism. 8. Add automated documentation checks to ensure privacy claims remain consistent with the fields shown in API examples and actual integration behavior. 9. If session continuity is optional, disable it by default and allow users to opt in. ]]>
