T09 · Insecure Skill Coding Practices
- Location
mcp.json:7- Finding
Unauthenticated State-Changing Commerce Operations
- Content
View full analysis
Vulnerability Details
File Location:
mcp.json:7-9,mcp.json:131-193, andmcp.json:195-225
Vulnerability Type: Missing authentication and object-level authorization for sensitive commerce operations
Risk Level: HighVulnerable Code
The MCP configuration explicitly declares that the hosted endpoint requires no authentication:
json "endpoint": "https://mcp.lobstersearch.ai/mcp", "transport": "streamable-http", "authentication": "none",The same public interface exposes order creation:
json { "name": "create_order", "description": "Create a new draft order for a business. The order starts in 'draft' status with stock reserved. Items are specified by offering IDs (and optional variant IDs) and quantities. The order must be confirmed separately before payment.", "inputSchema": { "type": "object", "properties": { "business_id": { "type": "string", "description": "Business UUID" }, "items": { "type": "array", "items": { "type": "object", "properties": { "offering_id": { "type": "string", "description": "Offering UUID" }, "variant_id": { "type": "string", "description": "Variant UUID (required for products with variants)" }, "quantity": { "type": "number", "description": "Quantity", "minimum": 1, "maximum": 99 } }, "required": ["offering_id", "quantity"] }, "minItems": 1, "maxItems": 20, "description": "Array of order items" }, "customer_email": { "type": "string", "description": "Customer email for order notifications" }, "customer_name": { "type": "string", ...[truncated 4384 chars]- Remediation
View remediation
Remediation Suggestions
- Require authenticated user or service identities for every state-changing operation, including order creation, confirmation, and cancellation.
- Bind each order to its authenticated creator and enforce object-level authorization on
confirm_order,get_order_status, andcancel_order. - Do not use UUID secrecy as an authorization mechanism. Use server-validated sessions or narrowly scoped, signed, expiring capability tokens.
- Require explicit user approval immediately before operations that reserve stock, create payment sessions, cancel orders, or initiate refunds.
- Apply strict per-user, per-business, per-product, per-device, and per-network quotas to draft-order creation.
- Expire unpaid reservations quickly and restore inventory automatically. Consider requiring verified contact information or payment intent before reserving scarce stock.
- Add idempotency keys to write operations to prevent accidental or malicious duplicate submissions.
- Return only the minimum order information authorized for the requesting identity, and prevent personal or payment-related data from appearing in broadly accessible status responses.
- Record security audit events for order creation, confirmation, status access, cancellation, and refund initiation. Alert on abnormal reservation and cancellation patterns.
- Document the authentication and authorization model in
mcp.json,README.md, andSKILL.md, including ownership requirements and approval boundaries.
