T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:50
- Finding
- External Booking and Personal Data Submission Without Mandatory User Confirmation## Vulnerability Details **File Location**: `SKILL.md`, lines 50–66 **Vulnerability Type**: Missing confirmation and privacy controls for an externally consequential action **Risk Level**: Medium ### Vulnerable Code ```json ### create_booking { "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 skill defines a `create_booking` operation that can create an external reservation and transmit personally identifiable information, including the customer's name, email address, and phone number. However, the skill contains no instruction requiring explicit user confirmation immediately before this operation is invoked. It also does not require the agent to present and verify the provider, service, appointment time, price, cancellation terms, or personal information that will be disclosed. No controls prohibit the agent from inferring or reusing contact information without the user's informed approval. Authentication requirements, authorization boundaries, failure handling, and duplicate-booking protections are also undocumented. Consequently, an agent following this skill could treat a general request to find or book a landscaper as sufficient authorization to execute the consequential booking operation. ### Attack Path 1. A user makes a broad request to find or book a landscaper. 2. The skill directs the agent to use the external Lokuli MCP service. 3. The agent searches for providers and checks availability. 4. The agent obtains, reuses, or infers the user's name, email address, and phone number. 5. Because the skill defines no mandatory confirmation boundary, the agent invokes `create_booking` without presen ...[truncated 923 chars]
- Remediation
- ## Remediation Suggestions - Require explicit, affirmative user confirmation immediately before every `create_booking` call. - Present a final booking summary containing the provider, service, date and time, time zone, price, applicable fees, cancellation terms, and all personal data that will be transmitted. - Treat searching and availability checks as non-authorizing preparatory steps; they must not imply authorization to create a booking. - Prohibit inferred, fabricated, or silently reused customer contact details. Ask the user to supply or explicitly approve each required field. - Minimize disclosed data and transmit only fields required by the provider. - Document the MCP endpoint's authentication and authorization requirements, and ensure credentials are handled through an approved secret-management mechanism. - Add idempotency or duplicate-submission protection where supported. - Define safe handling for timeouts and ambiguous responses so the agent checks booking status rather than automatically retrying a consequential request. - Return the confirmed booking identifier and final details to the user after successful creation.
