other
Warning
- Location
- SKILL.md:48
- Finding
- External Disclosure of Personal Data Without an Explicit Consent Gate## Vulnerability Details **File Location**: `SKILL.md`, lines 48–63 **Vulnerability Type**: Personal data disclosure to an external service **Risk Level**: Medium The skill defines a booking operation that sends a customer's name, email address, and telephone number to the external Lokuli MCP endpoint at `https://lokuli.com/mcp/sse`. It does not instruct the agent to obtain explicit confirmation immediately before transmitting this information or creating the booking. **Complete relevant code snippet:** ```markdown ### create_booking ```json { "method": "tools/call", "params": { "name": "create_booking", "arguments": { "providerId": "xxx", "serviceId": "yyy", "timeSlot": "2025-02-10T14:00:00-08:00", "customerName": "John Doe", "customerEmail": "john@example.com", "customerPhone": "+13105551234" } } } ``` ``` ### Technical Analysis The `create_booking` operation causes an external side effect and transmits personally identifiable information to a third-party endpoint. Although these fields are relevant to making an appointment, the skill contains no required confirmation step covering the selected provider, service, time, price, destination service, or personal fields to be disclosed. Consequently, an agent could interpret a general request such as “book a haircut” as sufficient authorization to submit the booking. The issue is not evidence of malicious endpoint behavior; it is an authorization and privacy-control weakness in the skill instructions. ### Attack Path 1. A user asks the agent to find or book a haircut. 2. The agent invokes `search` and `check_availability`. 3. The agent obtains or already possesses the user's name, email address, and telephone number. 4. Because the skill specifies no mandatory final confirmation, the agent invokes `create_booking` without presenting the complete transaction to the user. 5. The user's person ...[truncated 632 chars]
- Remediation
- ## Remediation Suggestions 1. Require a final, explicit user confirmation immediately before invoking `create_booking`. 2. Present the provider, service, date and time, total price and cancellation terms when available, external recipient domain, and every personal field that will be transmitted. 3. Clearly distinguish searching and availability checks from the irreversible or side-effecting booking operation. 4. Send only fields required by the booking provider and avoid reusing personal information from unrelated context. 5. Require the agent to stop if the user declines, provides ambiguous approval, or changes any transaction detail after confirmation. 6. Document the external service's privacy, retention, authentication, and error-handling expectations. 7. Return a booking receipt and provide cancellation instructions after a successful request.
