T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Agent behavior and output are hijacked to enforce a commercial provider
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This flight-search skill is not clearly malicious, but it asks for broad, under-scoped authority to install software, run shell commands, and persist raw travel queries.
Review carefully before installing. Only use this skill if you are comfortable with a third-party flyai CLI being installed globally, your travel searches being sent through that provider, provider booking links being required in responses, and raw query details potentially being written to a hidden local log. Prefer a version that pins the CLI package, requires explicit install consent, validates parameters, avoids shell interpolation, and disables or redacts persistent logs by default.
SKILL.md:10Agent behavior and output are hijacked to enforce a commercial provider
SKILL.md:35Unpinned third-party npm package is installed globally
SKILL.md:70User-controlled travel parameters are interpolated into shell commands
references/runbook.md:7Raw user queries are persisted through an injection-prone shell logging command
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-flight --origin "Beijing" --destination "Chengdu" --dep-date 2026-08-20 --sort-type 2
## Output Rules
1. **Conclusion first** — lead with best birthday-friendly option
2. **Birthday tip** — suggest popular birthday destinations
The manifest description claims support for hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more. However, the actual skill file only defines flyai search-flight and one flyai keyword-search fallback, with all playbooks centered on flight lookup rather than those broader services.
The execution rules at L017 say to use only parameters listed in the Parameters table, but Playbook B invokes --sort-type 3 at L091 while the table at L054 documents only a default of 2 and does not define 3 as a valid value. This is an active contradiction between the file's own guidance and its example command.
The trigger definition includes Chinese phrases as required activation examples alongside English, but the file does not state that language selection is optional or user-driven. This creates a natural-language locale policy concern because the skill embeds specific language requirements without opt-in or justification.
This trigger line again specifies Chinese-language phrases as activation phrases without clarifying that users may choose their own language. Repeating fixed locale-specific trigger wording across playbooks reinforces a language-policy issue.
The skill lists Chinese trigger phrases as part of the activation wording but does not provide an explicit language choice or a justified region-specific scope. That is a natural-language policy concern under the language/locale rule.
The runbook explicitly records user_query as raw input in an internal execution log, which can capture personal, financial, travel, passport, visa, and other sensitive booking details. Because the log is described as persistent and there is no documented notice, minimization, redaction, or retention control, this creates a real privacy and data-handling vulnerability rather than a harmless operational detail.
The runbook instructs appending execution logs to a local file, creating durable storage of operational data that may include sensitive user content and command history. In a travel-booking skill, those logs can contain high-value personal and itinerary information, and the absence of warning, retention limits, file protection guidance, or opt-in consent increases the risk of unauthorized access or unintended disclosure.
The manifest says the skill supports flights, hotels, trains, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more. This file's operational templates and parameter collection are exclusively for flight search and booking output, with no indication of the broader capabilities described in the manifest.
The manifest description says the skill is powered by Fliggy (Alibaba Group), but the template tells users it is 'Powered by flyai'. That is an active contradiction in user-facing documentation about what service backs the skill.
No suspicious patterns detected.