Back to skill

Security audit

red-eye-flight

Security checks for vulnerabilities and agentic risk

Overview

The skill is a flight-booking helper, but it requires automatic global npm installation and shell-style command execution with user-supplied trip details.

Install only if you trust the flyai npm package and are comfortable sending trip searches to that third-party service. Prefer a sandboxed or locally pinned CLI install, review booking link destinations before clicking, and avoid running this skill in an environment with sensitive credentials or broad filesystem access.

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

Forced Commercial Output and Skill Instruction 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. ``` ```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 ## Output Rules 1. **Conclusion first** — lead with best option 2. **Red-eye tip — often 30-50% cheaper; arrive rested with airport hotel option** 3. **Comparison table** with >= 3 results when available 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 ``` ```markdown ## Output Template | # | Airline | Route | Departure | Duration | Price | | |---|---------|-------|-----------|----------|-------|-| | 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) | Powered by flyai - Real-time pricing, click to book ``` ### Technical Analysis The ...[truncated 2103 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
SKILL.md:68
Finding

Automatic Installation and Execution of an Unpinned Global 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. ``` ```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/ **NEVER proceed without CLI. NEVER fabricate results.** ``` ```markdown ## F-2: CLI not installed ```bash npm i -g @fly-ai/flyai-cli ``` ``` ### Technical Analysis The skill mandates global installation of `@fly-ai/flyai-cli` from npm when the command is absent. The dependency has no pinned version, integrity hash, lockfile, provenance requirement, or reviewed artifact. The installation also lacks explicit user consent and does not disable npm lifecycle scripts. A global npm installation can execute package lifecycle scripts during installation and places executable files in a shared command path. Because no version is pinned, the code executed can change after the skill has been reviewed. A compromised maintainer account, malicious release, dependency compromise, or registry-level supply-chain incident could therefore introduce arbitrary code. The global scope unnecessarily increases the affected environment compared with a sandboxed, local, immutable dependency. ### Attack Path 1. The skill checks for `flyai` with `flyai --version`. 2. On a system where the command is absent, the instructions require `npm i -g @fly-ai/flyai-cli`. 3. npm retrieves the current package version and its transitive depe ...[truncated 1182 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:35
Finding

Shell Command Injection Through User-Controlled Flight Parameters

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (8)

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. **Red-eye tip — often 30-50% cheaper; arrive rested with airport hotel option**

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill advertises red-eye flight booking, but its prerequisite and primary recommended commands do not apply the documented red-eye hour filter. This can mislead an agent into returning ordinary flights as red-eye results, undermining user intent and enabling silent policy drift between the skill promise and actual command behavior.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill explicitly states that only parameters listed in the table may be used, but later includes a command using --journey-type 1, which is not documented in the Parameters table. This inconsistency can cause an agent to ignore its own safety/validation rule, invent unsupported arguments, or execute commands unpredictably when handling user requests.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Using the broad trigger phrase book a flight can cause this skill to activate for generic flight-booking requests that are unrelated to red-eye travel. Overbroad activation increases the chance of inappropriate tool use, parameter collection, and command execution in contexts where the specialized skill should not run.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file defines trigger phrases that overlap heavily with common everyday speech and does not provide scope constraints or negative examples. Terms such as "cheap", "budget", "fast", and "quick" are ambiguous outside a narrowly defined flight-search context, increasing the risk of accidental invocation.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The fallback trigger "0 results from above playbooks" does not clearly define how results are counted, which playbooks must be attempted, or whether the fallback is automatic or conditional. This ambiguity can lead to inconsistent or unintended activation behavior.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The file gives one negative condition, but the distinction between "general night flights" and the supported "late night" or "midnight" flight phrases is not clearly defined. That ambiguity makes it hard to know when the skill should activate versus defer, increasing the chance of inconsistent invocation behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The instruction 'Format prices in CNY (Y)' imposes a specific locale/currency presentation requirement. The file does not indicate that this is user-selectable or justified as a region-specific skill, so it can violate the policy against forcing a specific language/locale without opt-in.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.