T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Mandatory booking links and branding hijack agent output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s flight-search purpose is clear, but it asks for automatic global installation, possible sudo use, persistent raw-query logging, and shell-style command execution that need careful review before use.
Install only if you trust FlyAI/Fliggy and are comfortable with the agent installing and running a third-party CLI. Avoid sudo, prefer a pinned/local CLI install in a sandbox, and do not allow persistent logging of raw travel queries unless you have reviewed and accepted the privacy implications.
SKILL.md:10Mandatory booking links and branding hijack agent output
references/fallbacks.md:7Unpinned global dependency installation can escalate to privileged code execution
SKILL.md:99User-controlled travel parameters are interpolated into shell command templates
references/runbook.md:1Raw user input is persistently logged through an unsafe shell command
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-flight --origin "Guangzhou" --destination "Chengdu" --dep-date 2026-10-01 --sort-type 3
## 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 alibaba-flyai/flyai-skill/tree/main/skills/holiday-flights, which pulls and executes tooling and remote skill content without a pinned version or immutable commit reference. This creates a supply-chain risk: if the upstream package, repository, or branch content changes or is compromised, users may install or execute unintended code under the guise of setup instructions.
The skill explicitly instructs the agent to run a global npm installation (npm i -g @fly-ai/flyai-cli) as a mandatory prerequisite and again during its workflow, without requiring user confirmation or warning that this modifies the host environment. In an agentic execution context, this can cause unauthorized system changes, introduce supply-chain risk from the package registry, and violate least-privilege expectations.
The documentation recommends retrying installation with sudo, encouraging privileged execution of a package-manager command for a globally installed third-party CLI. Running npm with elevated privileges increases the risk that package scripts or supply-chain compromises execute as root, potentially leading to system-wide compromise.
npm i -g @fly-ai/flyai-cli
flyai --version
# Fails → sudo npm i -g @fly-ai/flyai-cli
# Still fails → STOP. Do NOT answer with training data.
The fallback instructs the agent to automatically search for tomorrow when the user supplied a past date, which changes the user's requested parameters without consent. In a travel-booking context, silently substituting dates can mislead users, produce unwanted recommendations, or cascade into downstream booking actions based on incorrect assumptions.
The playbook defines invocation triggers entirely in Chinese phrases such as "春节回家", "国庆出游", "五一/端午", and "避开高峰", with no indication that other languages are supported or that the locale restriction is intentional. This is a natural-language policy concern because it imposes a specific language/locale on users without opt-in or justification.
The file states that the agent maintains the log internally and not shown to users, while the schema includes raw input capture. This means users are given no warning that their travel-related queries may be retained internally, creating a transparency and privacy-consent problem that is more concerning in a consumer travel context where users may disclose names, dates, destinations, and booking details.
The runbook explicitly requires logging the raw user query and full CLI command history for every trigger, which exceeds what is necessary for a travel-search skill and can capture sensitive travel plans, personal details, or identifiers. Because this data is structured for routine collection, it creates an unnecessary privacy and insider-access exposure even without a separate exploit.
Taken together, the schema stores raw user input and execution details, then persists them to a local file, producing a straightforward plain-text data retention and leakage path. In a travel-booking context this can reveal itineraries, locations, timing, and possibly other personal or financial-adjacent details, making the skill more dangerous than a generic diagnostic logger.
The runbook instructs persistent local storage of execution logs in a dotfile, creating a durable data-retention path on disk for information gathered during skill execution. For a travel assistant, this is hard to justify operationally and increases the chance of data leakage through filesystem access, backups, multi-user environments, or accidental inclusion in support bundles.
No suspicious patterns detected.