Back to skill

Security audit

Gonza Navifare Deals

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent flight-price comparison skill, with expected use of a hosted Navifare MCP service and some install/privacy cautions to review.

Before installing, confirm you are comfortable sending flight itinerary details and reference prices to Navifare's hosted MCP service. Do not upload screenshots containing names, booking references, passports, loyalty numbers, or payment details. Skip the optional global npm validation command unless you pin and trust the package version.

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
INSTALLATION.md:151
Finding
Unpinned Global npm Package Installation Creates Supply-Chain Risk## Vulnerability Details **File Location**: `INSTALLATION.md:151-152` **Vulnerability Type**: Unpinned, globally installed third-party development dependency **Risk Level**: Medium **Complete Code Snippet**: ```bash # Install skills-ref (if not already installed) npm install -g @agentskills/skills-ref ``` ### Technical Analysis The optional validation instructions install `@agentskills/skills-ref` globally without pinning an exact reviewed version or verifying package integrity. Consequently, the command resolves to whichever release is current in the configured npm registry at installation time. npm packages can contain lifecycle scripts that execute during installation. A mutable, globally installed dependency therefore introduces a supply-chain execution path that is not represented by the audited project contents. Global installation also exposes the resulting executable across the user's environment rather than limiting it to an isolated project context. This package is only used for optional Skill-structure validation and is not necessary for the declared flight-price comparison functionality. The installation therefore exceeds the minimum dependency footprint required to operate the Skill. ### Attack Path 1. An attacker compromises the upstream npm package, a maintainer account, or the package publication process. 2. The attacker publishes a malicious release under the legitimate package name. 3. A user follows `INSTALLATION.md` and runs the unversioned global installation command. 4. npm resolves and downloads the malicious current release. 5. Malicious lifecycle scripts may execute during installation, or attacker-controlled code may execute when the user subsequently invokes `skills-ref`. 6. The payload runs with the privileges of the account executing npm and may modify files accessible to that account. ### Impact Assessment Successful exploitation could execute arbitrary code with the installing user ...[truncated 522 chars]
Remediation
## Remediation Suggestions 1. Remove the installation step if manual validation is sufficient. 2. If the validator is retained, pin a specifically reviewed version rather than resolving the latest release: ```bash npm install --save-dev --ignore-scripts @agentskills/skills-ref@<reviewed-exact-version> ``` 3. Prefer a project-local development dependency over a global installation. 4. Commit and verify an npm lockfile containing integrity hashes. 5. Run validation in an isolated container or restricted CI environment with no production credentials. 6. Disable lifecycle scripts where compatible and separately review any required scripts before permitting them. 7. Document the package source, reviewed version, expected checksum, and update-review process.
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 (13)

MCP Config Access

High
Category
Agent Snooping
Content
## 🔧 MCP Configuration

**Add to `~/.claude/mcp.json`**:
```json
{
  "mcpServers": {
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.

MCP Config Access

High
Category
Agent Snooping
Content
## 🔧 MCP Configuration

**Add to `~/.claude/mcp.json`**:
```json
{
  "mcpServers": {
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.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The installation guide directs users to connect to a hosted third-party MCP endpoint and emphasizes screenshot-based use cases, but it never discloses that user-entered itinerary data and uploaded screenshot contents may be transmitted off-platform. This creates a privacy and data-governance risk because users and operators may unknowingly send personal travel details, booking references, names, or other sensitive content to an external service.

Vague Triggers

Medium
Confidence
87% confidence
Finding
The testing guidance repeatedly states that the skill should activate automatically for broad flight-related prompts and screenshots, but it does not define boundaries for when activation should be suppressed or when user confirmation is needed before contacting the external MCP service. In context, that increases the chance of over-collection and unintended transmission of sensitive travel information to a third party.

Skill Enumeration

Medium
Category
Agent Snooping
Content
### Issue: Skill doesn't activate

**Check**:
1. SKILL.md is in correct location: `~/.claude/skills/navifare-flight-validator/SKILL.md`
2. Frontmatter is valid YAML (no syntax errors)
3. MCP client has restarted since skill was added
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The skill advertises automatic activation on broad phrases like 'Should I book this?' and 'Can you find cheaper?', which are common travel-related utterances and can cause the skill to trigger without sufficiently specific user intent. In this context, that can lead to unnecessary processing of screenshots or itinerary details and unintended transmission of travel data to the external Navifare MCP service, increasing privacy and data-exposure risk even if the skill is not overtly malicious.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The skill activates on broad travel-booking phrases such as being 'about to book' or generally comparing options, which can cause it to trigger in conversations where the user did not explicitly request price validation or third-party comparison. Over-broad activation increases the chance of unnecessary disclosure of itinerary details to external MCP tools and can lead to confusing or privacy-impacting tool use without sufficiently clear user intent.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The document instructs users to connect Claude Code to a third-party hosted MCP endpoint, which can receive prompts, tool inputs, and potentially user-provided travel details, but it does not provide any explicit privacy, data-handling, or consent warning. This creates a real risk of unintentional disclosure of sensitive user data because users are encouraged to configure and use the remote service without understanding what information will be transmitted off-platform.

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
The metadata slug `navifare-hidden-flight-deals` does not match the stated skill name and purpose `navifare-flight-validator`, which indicates inconsistent identity and functionality labeling. This can mislead reviewers and users, hinder trust and auditability, and in adversarial cases be used to disguise a skill’s real purpose or evade detection based on naming.

Intent-Code Divergence

Medium
Confidence
97% confidence
Finding
Example 1 states that Navifare 'currently only supports round-trip flight searches.' However, later examples demonstrate successful searches for apparent one-way itineraries such as BOS→CDG, ZRH→ROM, and MIA→LON without requiring return details, directly contradicting that earlier documentation claim.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The examples instruct the assistant to extract booking details from uploaded screenshots without any visible privacy notice, minimization guidance, or warning that screenshots may contain sensitive personal or financial data. This increases the risk of collecting and transmitting more information than necessary, especially if images include names, booking references, loyalty numbers, or payment-related details.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger phrases are broad enough to match many ordinary travel-planning requests, which can cause over-activation of the skill beyond the user's intended task. In an agent setting, ambiguous activation boundaries can lead to unnecessary tool use, unintended sharing of itinerary details with external services, or actions based on incomplete consent.

Description-Behavior Mismatch

Low
Confidence
77% confidence
Finding
The manifest describes the skill as verifying and comparing prices for flights users share, including from screenshots, and returning ranked provider results. In Example 7 and Example 8, the documentation suggests checking flexible alternative dates or searching broadly for alternative itineraries when the exact flight is unavailable, which goes beyond strict validation of the provided fare.

Static analysis

No suspicious patterns detected.