Back to skill

Security audit

Book Carpet Cleaning

Security checks for vulnerabilities and agentic risk

Overview

This skill is for booking carpet-cleaning services, but it can create an external appointment and send personal contact details without requiring a clear final confirmation step.

Install only if you are comfortable with the agent using Lokuli to search availability and create carpet-cleaning appointments. Before any booking, require the agent to show the provider, service, time, price or fees if available, and every contact field that will be sent, then give explicit approval yourself.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:45
Finding
Booking Creation and Personal Data Disclosure Without an Explicit Confirmation Requirement## Vulnerability Details **File Location**: `SKILL.md`, lines 45–63 **Vulnerability Type**: Missing authorization safeguard for a consequential external action **Risk Level**: Medium ### Vulnerable Code ```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 skill defines a `create_booking` operation that transmits a customer's name, email address, and telephone number to the external Lokuli MCP service and creates a real-world appointment. However, the skill contains no instruction requiring the agent to obtain explicit final approval immediately before invoking this consequential operation. Search and availability requests do not necessarily imply authorization to create a booking or disclose personal information. Without a confirmation boundary, an agent could interpret a general request to find carpet-cleaning services as permission to complete a booking. The instructions also do not require verification of the selected provider, service, appointment time, price, cancellation terms, or exact personal information before transmission. This is an insecure skill-design practice because authorization for discovery is not equivalent to authorization for transaction execution. The finding does not establish malicious behavior by the external service, and the reviewed file contains no evidence of arbitrary code execution, privilege escalation, persistence, or credential theft. ### Attack Path 1. A user asks the agent to find carpet-cleaning services or otherwise triggers the skill. 2. The agent calls `search` and obtains provider and service identifiers. 3. The agent ...[truncated 1205 chars]
Remediation
## Remediation Suggestions 1. Require explicit user confirmation immediately before every `create_booking` call. 2. Present a concise transaction summary containing: - Provider name and identifier. - Selected service. - Appointment date, time, and time zone. - Total price and applicable fees, when available. - Cancellation or refund terms, when available. - The destination service receiving the data. - Every personal-data field that will be transmitted. 3. Clearly distinguish authorization to search or check availability from authorization to create a booking. 4. Use only contact details directly supplied or explicitly approved by the user; never invent missing personal information. 5. Collect and transmit only fields necessary for the booking. 6. If material booking details change after confirmation, invalidate the prior approval and request confirmation again. 7. Return a booking receipt or confirmation identifier after a successful transaction and provide cancellation instructions where supported. 8. Handle uncertain or incomplete responses conservatively: do not retry a potentially successful booking blindly, because this could create duplicate appointments.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The manifest description lists specific examples, but then expands activation to "any carpet-cleaning service request," which is an open-ended trigger condition without clear boundaries or exclusions. This can cause unintended invocation on general discussion about carpet cleaning rather than explicit booking intent.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill includes a create_booking flow that collects and transmits personal contact data such as name, email, and phone number to an external MCP endpoint without any stated user warning, consent checkpoint, or data-handling notice. This creates a privacy and trust risk because users may not realize their PII is being shared with a third-party service during booking.

Static analysis

No suspicious patterns detected.