Back to skill

Security audit

new-job-relocation

Security checks for vulnerabilities and agentic risk

Overview

This flight-booking skill is mostly aligned with its stated purpose, but it can automatically install and run an unpinned external CLI using user travel details and unsafe command templates.

Review before installing. Only use this skill if you are comfortable with an external travel CLI receiving trip details, and do not allow automatic global npm installation unless you have reviewed or pinned the package. Prefer running the CLI with constrained permissions and validated arguments rather than shell-rendered command strings.

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 Agent Behavior and Commercial Output Injection

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 instructions also appear in `SKILL.md`, lines 119-137: ```markdown ### Step 3: Format Output Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md). ### 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.** ## Usage Examples ```bash flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2 ``` ## Output Rules 1. **Conclusion first** — lead with best option 2. **Relocation tip — ask employer about relocation package; book one-way + extra baggage** 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 ``` ### Technical Analysis The ...[truncated 2098 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:64
Finding

Mandatory Unpinned Global Installation of a Third-Party 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 same installation behavior is repeated in `references/fallbacks.md`, lines 3-10 and 19-23: ```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/ ``` ```markdown ## F-2: CLI not installed ```bash npm i -g @fly-ai/flyai-cli ``` ``` ### Technical Analysis The Skill requires installation of the latest registry version of `@fly-ai/flyai-cli` into the global npm environment. No exact version, integrity digest, lockfile, verified artifact source, provenance check, or package review is required. npm installation may execute package lifecycle scripts such as `preinstall`, `install`, and `postinstall`. Consequently, the effective code executed on the host is controlled by whichever package version the registry resolves at installation time. That code can change after the Skill itself has been audited. Global installation also increases scope. It modifies the user's shared command environment rather than using a project-local or temporary isolated dependency. If installation occurs under an elevated account, package scripts and installed files may inherit those elevated privileges. ### Attack Path 1. The Skill checks whether `flyai` is available. 2. On a new system or any system without that command, the check fails. 3. The mandatory fallback executes `npm i -g @fly-ai/flyai-cli`. 4. npm resolves ...[truncated 1094 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:91
Finding

Potential Shell Command Injection Through Unvalidated User-Input Interpolation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
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. **Relocation tip — ask employer about relocation package; book one-way + extra baggage**

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill directs the agent to execute an external CLI and derive answers solely from its output, but does not warn that user travel details will be sent to a third-party service. This creates an undisclosed data-sharing risk, especially because itinerary details can contain sensitive personal and employment-related information.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs the agent to run npm i -g @fly-ai/flyai-cli automatically if the CLI is missing, which performs a system-modifying action without explicit user consent. Installing a global package from a registry introduces supply-chain risk and changes the host environment, which is unsafe in an agent context unless clearly disclosed and confirmed first.

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 Parameters Table may be used and that any unlisted flag 'does not exist'. However, Playbook D later invokes flyai search-flight with --journey-type 1, which is not present in the Parameters table. This is an active contradiction between the skill's own documentation sections.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases in this playbook include very generic terms like "cheap," "budget," "fast," and "quick," which can match normal user conversation outside the intended relocation-travel workflow. In an agentic system, overbroad triggers can cause the wrong playbook to activate, leading to unintended tool use, incorrect travel searches, or actions taken on incomplete or mis-scoped user intent.

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 because it does not define evaluation order, scope, or safeguards for when the broad fallback should run. This ambiguity can cause unintended activation of a wider search path, including keyword-based queries, which may produce irrelevant results, bypass tighter routing logic, or amplify mistaken interpretation of user intent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The instruction mandates that all prices be formatted in CNY, which imposes a specific locale/currency convention regardless of the user's preferences or market context. This is a natural-language policy issue because it forces a locale-specific presentation without offering a choice or documenting why the constraint is required.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The instruction 'use Chinese or English city names' introduces a natural-language locale constraint. The file does not explain why only these languages are accepted or offer the user an explicit language/locale choice, which can conflict with organizational language-choice policies.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest says the skill is powered by Fliggy (Alibaba Group), but the template output states "Powered by flyai." This is an active documentation-level contradiction about the service/provider behind the skill, which can misrepresent what the skill actually is or uses.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.