T01 · Skill Instruction Hijacking
- Location
SKILL.md:11- Finding
Mandatory Commercial Output and Agent Behavior Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent flyai travel-search wrapper, but it requires an unpinned global CLI install and hidden local logging of raw user queries in a way that needs review before installation.
Review before installing. Only use this skill if you are comfortable with a flyai/Fliggy booking-link workflow, and do not allow automatic npm global installation at runtime. Prefer manually reviewing and pinning the CLI dependency, and disable or modify the runbook logging so raw user queries are not persisted with shell commands.
SKILL.md:11Mandatory Commercial Output and Agent Behavior Hijacking
SKILL.md:39Unpinned Global Installation and Execution of a Third-Party CLI
references/runbook.md:31Shell-Injection-Prone Persistence of Raw User Queries
The workflow explicitly mandates installing the CLI when it is missing and retrying automatically, with no user disclosure or consent. In an agentic setting this is more dangerous than a passive prerequisite because it operationalizes autonomous system modification, increasing the chance of silent package execution, persistence, and supply-chain compromise.
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-poi --city-name "Huzhou" --category "露营"
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The README instructs users to run npx skills add ... without pinning a specific package version or immutable source revision. This can cause users to execute whatever package/version is current at install time, increasing supply-chain risk if the package is updated maliciously, compromised, or changed incompatibly.
The skill instructs automatic installation of a global CLI tool without user consent or warning about system modification. This creates a supply-chain and host-integrity risk because executing global package installation changes the environment and may run unreviewed code from an external package source.
The trigger list includes the standalone term "outdoor," which is broad and commonly used in everyday speech across many unrelated contexts. This makes activation boundaries unclear and increases the chance the skill will trigger for requests that are not specifically about camping or glamping.
The prerequisites section directs the operator to run npm i -g @fly-ai/flyai-cli without any cautionary language or approval gate. Even as documentation, this encourages unnecessary privileged environment changes and exposes users to package substitution or compromised dependency risks.
The fallback instructs installing a global npm package and checking its version without any warning that this modifies the host environment and requires elevated trust in an external package. In an agent-skill context, this is risky because it can lead users or operators to change system state unnecessarily during normal use or troubleshooting, increasing supply-chain and environment-integrity risk.
The runbook explicitly records user_query as raw input in an internal execution log, but provides no notice, minimization, or redaction guidance. In a travel-booking skill, users may provide names, locations, dates, passport or visa details, and other sensitive trip information, so capturing raw queries increases privacy and data-handling risk if logs are accessed, retained, or reused.
Taken together, the schema stores natural-language user_query content and then persists the generated log to disk, creating a durable record of potentially sensitive free-text inputs. Because this skill covers flights, hotels, visas, insurance, and itinerary planning, user prompts are especially likely to contain personal, financial, or identity-related details, making retention and leakage more dangerous in context.
The runbook instructs appending execution logs to a local file without any safeguards around encryption, permissions, retention, or user disclosure. Persisting operational logs to disk creates a straightforward path for sensitive travel-related data to remain on the host and be exposed through local compromise, backup collection, or accidental sharing.
The instruction explicitly directs use of "Chinese/English variants" for city names, which imposes a language/locale behavior without indicating user choice or a documented regional justification. This matches the policy category for language or locale constraints applied without opt-in.
The manifest says the skill is powered by Fliggy (Alibaba Group), but the user-facing result template states 'Powered by flyai' instead. This creates a semantic mismatch between what the skill claims in its manifest and what its documentation/templates indicate the skill actually uses.
The failure-handling documentation tells users to check and invoke a 'flyai' CLI, while the manifest describes a Fliggy-powered travel skill. This is not merely incomplete documentation; it actively points to a different underlying system than the one the skill claims to use.
No suspicious patterns detected.