Back to skill

Security audit

getyourguide-mcp

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent read-only GetYourGuide connector, but its setup runs an unpinned npm package with an API key, so it should be reviewed before installation.

Review the npm package and source before installing, pin a specific audited version instead of using the floating package name, keep GYG_API_KEY out of version-controlled config, and run the MCP server with only the environment and filesystem access it needs.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:16
Finding
Unpinned npm Package Is Automatically Downloaded and Executed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 16-27 **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```markdown Add to `.mcp.json` in your project or `~/.claude/mcp.json`: ```json { "mcpServers": { "getyourguide": { "command": "npx", "args": ["-y", "getyourguide-mcp"], "env": { "GYG_API_KEY": "your-partner-api-key" } } } } ``` ``` ### Technical Analysis The documented configuration invokes `npx -y getyourguide-mcp` without an exact package version or integrity constraint. The `-y` option suppresses the installation confirmation, while the absent version causes npm to resolve the package version available from the configured registry at execution time. Consequently, the code executed by this MCP configuration can change after the Skill has been reviewed. The external package and its transitive dependencies are not included in the audited project, so their behavior cannot be verified from this repository. If the package publisher account, npm package, registry resolution, or a transitive dependency is compromised, following these instructions could execute attacker-controlled lifecycle scripts or application code. The MCP process also receives `GYG_API_KEY` through its environment. Any malicious code running in that process can directly read that credential. This is a supply-chain and dependency integrity issue rather than evidence that the currently published package is malicious. The reference to project `.mcp.json` or `~/.claude/mcp.json` is otherwise consistent with the declared setup function. The reviewed document does not instruct the agent to enumerate, read, or exfiltrate unrelated credentials. ### Attack Path 1. An attacker compromises the `getyourguide-mcp` npm publisher account, a transitive dependency, or the relevant package distribution channel. 2. The a ...[truncated 1378 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the MCP package to a specific, reviewed version instead of resolving the latest release dynamically, for example: ```json { "command": "npx", "args": ["-y", "getyourguide-mcp@<audited-exact-version>"] } ``` 2. Prefer installing the dependency through a project manifest and committed lockfile so the package and transitive dependency versions are reproducible. 3. Verify package provenance, publisher identity, release signatures or attestations, and registry integrity before approving upgrades. 4. Review package lifecycle scripts and the corresponding source revision before deployment. Update the pinned version only after security review. 5. Run the MCP server in a sandbox or restricted service account with access only to the files and network destinations required for GetYourGuide API queries. 6. Provide only `GYG_API_KEY` to the process rather than inheriting the agent's complete environment. 7. Store the API key through environment-variable interpolation or a secret manager rather than committing a real credential to project-level `.mcp.json`. 8. Exclude local secret-bearing MCP configuration from version control and rotate the API key if it is accidentally exposed. 9. Restrict outbound network access to the npm registry during controlled installation and to the documented GetYourGuide API endpoint during normal operation where feasible. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

MCP Config Access

High
Category
Agent Snooping
Content
## Setup

Add to `.mcp.json` in your project or `~/.claude/mcp.json`:

```json
{
Confidence
95% confidence
Finding
Skill accesses MCP server configuration files (mcp.json). MCP configs contain server URLs, authentication tokens, and tool definitions — reading them allows the skill to discover and potentially abuse other tool integrations.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The description says the skill should trigger on phrases like "things to do in Paris" and "book an activity," and even "any request involving searching tours, activities, day trips, or attraction tickets." Those phrases are broad everyday travel requests rather than narrowly scoped GetYourGuide-specific invocations, so the activation boundary is not specific enough.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
`gyg_search_tours`, `gyg_get_tour`, `gyg_list_category_tours` and
`gyg_list_location_tours` take `view: "compact" | "full"`, and **`compact` is
the default** — you get the slim projection without asking for it. Pass
`view: "full"` for the whole GetYourGuide record.

The other tools take no `view`: their responses are already narrow, and a rung
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Static analysis

No suspicious patterns detected.