Back to skill

Security audit

Star Hotel Search

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed hotel-search integration that sends hotel search details to a third-party MCP service and does not include local code execution or persistence.

Before installing, understand that hotel search details you provide may be sent to the Star Hotel MCP service. Avoid including names, phone numbers, emails, IDs, or unrelated private text in hotel queries, and confirm currency, language, country, dates, and hotel identity when results matter. The bundled public key may be rate-limited or less accountable than a personal key.

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:29
Finding
Hard-Coded Shared Bearer Token in MCP Configuration## Vulnerability Details **File Location**: `SKILL.md:29-43` **Vulnerability Type**: Hard-coded authentication credential **Risk Level**: Medium The project embeds a reusable bearer token directly in its public documentation and MCP configuration. ```markdown - The built-in Key (`mcp_a84000de01e04920b3690d173630f163`) is a public access key provided by Star Hotel - This Key is designed for community developers and is not a confidential credential - The public Key has rate limits, please apply for an exclusive Key for higher quotas - Application address: https://mcp.agentichotel.cn/apply ## MCP Configuration ```json { "mcpServers": { "aigohotel-mcp": { "url": "https://mcp.aigohotel.com/mcp", "type": "http", "headers": { "Authorization": "Bearer mcp_a84000de01e04920b3690d173630f163" } } } } ``` ``` ### Technical Analysis The value `mcp_a84000de01e04920b3690d173630f163` is statically included in an HTTP `Authorization` header. Anyone who can access the Skill package can extract and replay this token outside the intended Agent environment. The documentation identifies the token as a public access key, so there is no evidence that it grants access to private user accounts or administrative functionality. Nevertheless, using a shared bearer credential creates security and operational risks because the service cannot reliably distinguish legitimate Skill traffic from unauthorized third-party use. Publishing the credential also prevents meaningful confidentiality and makes abuse dependent primarily on server-side rate limits. ### Attack Path 1. An attacker downloads or reads the Skill package. 2. The attacker opens `SKILL.md` and extracts the bearer token from the MCP configuration. 3. The attacker sends independent HTTP requests to `https://mcp.aigohotel.com/mcp` with the copied `Authorization` header. 4. If the server accepts the shared token, the requ ...[truncated 922 chars]
Remediation
## Remediation Suggestions 1. Remove the bearer token from `SKILL.md` and all distributed Skill files. 2. Require the token to be supplied through a runtime secret store, protected environment variable, or platform-managed MCP credential facility. 3. Issue separate, scoped credentials per user, installation, or client rather than relying on one community-wide bearer token. 4. Restrict each credential to the minimum required hotel-search operations. 5. Apply server-side per-client quotas, request throttling, anomaly detection, and audit logging. 6. Avoid logging authorization headers and redact credentials from diagnostic output. 7. Rotate or revoke the exposed token after migrating clients to securely provisioned credentials. 8. If anonymous public access is intentional, remove bearer-token authentication entirely and enforce public access controls server-side instead of presenting a reusable public value as an authorization credential.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Vague Triggers

Medium
Confidence
93% confidence
Finding
The trigger phrase 'booking information for a hotel' is broad and can match many generic travel queries, causing the skill to activate when the user did not specifically ask for hotel detail lookup. Over-broad activation can lead to unnecessary tool calls, incorrect context switching, and unintended disclosure or use of user-supplied travel parameters.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
Defaulting countryCode to CN and currency to CNY without user consent can silently alter search results, pricing, localization, and booking behavior in ways the user did not request. In a travel context, this can mislead users about availability or cost and may result in incorrect transactions or decisions based on region-specific assumptions.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The trigger scenarios are broad enough that an agent may invoke the hotel search tool on loosely related travel discussion rather than clear search intent. This can cause unnecessary disclosure of user-provided itinerary or location details to the tool and degrade consent and relevance boundaries, but it does not by itself create direct code execution or privilege escalation risk.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
Defaulting the language parameter to zh_CN without user choice can cause requests to be processed under an unintended regional or linguistic setting, which may affect results, formatting, and possibly service routing. While not a severe security flaw on its own, it can mis-handle user data context and lead to privacy or compliance issues for non-Chinese users.

Vague Triggers

Low
Confidence
86% confidence
Finding
The phrase 'room availability and pricing' lacks constraints tying the request to a specific hotel, so the skill may trigger on broad lodging questions outside its intended scope. This increases the chance of misrouting user requests and making premature tool calls with inferred or incomplete parameters.

Intent-Code Divergence

Low
Confidence
96% confidence
Finding
The skill explicitly requires removal of personal identifiers from originQuery, but the first call example still includes the user's full natural-language request rather than a sanitized version. In practice, examples strongly shape agent behavior, so this contradiction can cause downstream transmission or storage of unnecessary personal data despite the privacy rule.

Static analysis

No suspicious patterns detected.