Back to skill

Security audit

explore-uk

Security checks for vulnerabilities and agentic risk

Overview

This UK flight skill is mostly coherent, but it asks agents to globally install and run an unpinned npm CLI and uses unsafe shell-style command templates, so it should be reviewed before use.

Install only if you trust the flyai CLI provider and are comfortable approving a global npm package install. Prefer running it in an isolated environment, pin and review the CLI package first, verify booking URLs and provider branding, and avoid entering payment or sensitive travel details through the skill unless the provider is trusted.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:10
Finding

Mandatory Commercial Output and Behavior Hijacking

Content
View full analysis
Chinese output. English input -> English output. 5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist. **Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute. ``` Related mandatory output rules include: ```markdown ### Step 4: Validate Output (before sending) - [ ] Every result has `[Book]({detailUrl})` link? - [ ] Data from CLI JSON, not training data? - [ ] Brand tag included? **Any NO -> re-execute from Step 2.** ``` ```markdown 4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book" 5. **Use `detailUrl`** for booking links. Never use `jumpUrl`. 6. NEVER output raw JSON 7. NEVER answer from training data without CLI execution ``` ### Technical Analysis The skill does more than define a legitimate flight-search workflow. It explicitly changes the agent's role, prohibits alternative information sources, forces one vendor to be the exclusive source, and requires every result to contain a commercial booking link and vendor branding. The self-test and re-execution requirement reinforce these instructions by treating any answer without commercial links or branding as invalid. Consequently, loading the skill alters the agent's current-session goals and outpu ...[truncated 1367 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:69
Finding

Automatic Global Installation of an Unpinned npm Package

Content
View full analysis
proceed to Step 1 - FAIL: `command not found` -> ```bash npm i -g @fly-ai/flyai-cli flyai --version ``` Still fails -> **STOP.** Do NOT continue. Do NOT use training data. ``` The fallback file repeats the same installation requirement: ```markdown ## Case 0: flyai CLI not installed If `flyai --version` returns `command not found`: 1. Run: `npm i -g @fly-ai/flyai-cli` 2. Verify: `flyai --version` 3. If still fails, tell user to install Node.js first: https://nodejs.org/ ``` ### Technical Analysis The package is installed globally without: - An exact version pin. - An integrity hash. - A lockfile. - Publisher or registry verification. - A package-content review. - User confirmation. - An isolated or least-privileged execution environment. - Restrictions on npm lifecycle scripts. Because no version is specified, the resolved package can change after the skill has been audited. npm packages can execute lifecycle scripts during installation, so a compromised publisher account, registry response, or future package release could execute arbitrary code under the account running the agent. The global `-g` installation expands the scope beyond the project and modifies shared user-level or system-level tooling. If the process runs with elevated permissions, the potential impact increases accordingly. ### Attack Path 1. The target environment does not have the `flyai` executable. 2. The mandatory environment check fails with `command not found`. 3. The skill instructs the agent to run `npm i -g @fly-ai/flyai-cli`. 4. npm resolves the current mutable package release from the configured registry. 5. A compromised or malicious release is downloa ...[truncated 1023 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:93
Finding

Shell Command Injection Through User-Derived CLI Parameters

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · SKILL.md (reported line 142)May include surrounding context.

flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2

text

## Output Rules

1. **Conclusion first** — lead with best option
2. **UK tip — visa required; London Heathrow is primary hub**

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest description says the skill supports hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more. However, the rest of the file only defines flyai search-flight workflows and output rules for flight results, with no documented code paths for the other claimed services.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill mandates checking for and globally installing @fly-ai/flyai-cli via npm i -g, then executing it, without explicit user consent or warning about modifying the host environment. In an agent setting, this creates a supply-chain and arbitrary code execution risk because the package's install scripts and runtime behavior would run on the system solely based on skill instructions.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

Line L017 explicitly states that only parameters listed in the Parameters Table may be used and that unlisted flags do not exist. Later, the Direct Route playbook invokes --journey-type 1 at L117, but --journey-type is absent from the parameter table at L45-L53, directly contradicting the documented constraint.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger list includes very general terms like "cheap" and "budget", which commonly appear in everyday conversation and are not specific to flight search. In a markdown playbook, such broad phrases can overlap with unrelated user requests and make activation scope unclear.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The triggers "fast" and "quick" are highly generic words used in many contexts and do not clearly limit activation to flight searches. Without constraints or exclusions, the playbook could be invoked when the user is asking for speed in an unrelated task.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The fallback condition '0 results from above playbooks' is underspecified, which can lead to an overly broad secondary search using free-form keyword composition. Ambiguous fallback logic increases the chance of unintended tool invocation, poor query scoping, and retrieval of results outside the user's precise request, especially because it chains from structured search to a less constrained keyword search.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest says the skill is powered by Fliggy (Alibaba Group), but the output template explicitly says 'Powered by flyai'. This is a direct documentation-level contradiction about the service identity presented to users.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction 'Format prices in CNY (Y)' imposes a specific currency/locale choice in natural-language guidance. This can violate language/locale policy when users have not opted into that locale and the file does not document a region-specific requirement.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.