T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Forced Commercial Output and Service-Channel Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel skill is mostly coherent, but it asks agents to install and run an unpinned global CLI and to persist raw travel queries locally without clear user control.
Review before installing. This skill may download and globally install a third-party npm CLI, send travel searches to the flyai/Fliggy service, show booking links, and write raw queries plus command logs to a local file. Install only if you are comfortable with that provider dependency and disable or constrain logging where possible.
SKILL.md:10Forced Commercial Output and Service-Channel Hijacking
SKILL.md:65Automatic Execution of Unpinned Third-Party Packages
references/runbook.md:5Unredacted Persistent Logging of Raw User Queries and Commands
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-hotel --dest-name "Shanghai" --key-words "浦东机场" --sort distance_asc --check-in-date 2026-05-01 --check-out-date 2026-05-02
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The description says the skill also supports flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more, which is far broader than the airport-transit-hotel scope. In a manifest/markdown context, this can create ambiguous trigger scope and unintended invocation because it does not clearly constrain which travel intents belong to this skill versus other skills.
The file defines activation triggers in both English and Chinese, including Chinese-only phrases like "机场酒店" and "中转休息", but provides no user opt-in or explanation that the skill is intended for Chinese-language usage. This can violate language/locale policy because it hard-codes locale-specific activation behavior without documenting user choice or justification.
The runbook explicitly records raw user input in user_query and states that the execution log is maintained internally, creating a privacy risk if users include personal, financial, or travel-sensitive data. Because this is a travel/booking-related skill, queries may contain names, dates, airports, itineraries, booking details, or other sensitive information, and the document provides no minimization, consent, retention, or redaction guidance.
The schema combines raw user_query capture with persistent local append logging, which creates a straightforward data retention and exposure issue rather than a purely theoretical concern. In this skill context, users may submit itinerary details, visa questions, insurance needs, or booking-related identifiers, so retaining verbatim requests can expose sensitive personal travel information if logs are accessed or mishandled.
The runbook instructs appending execution logs to a local file without any safeguards around file permissions, retention, encryption, or operator awareness. Persisting logs to disk increases the chance that sensitive travel queries and operational metadata remain accessible to other processes, users, backups, or later compromise.
The README states that the skill provides real-time travel data and booking links, which implies user queries or itinerary details may be sent to external services, but it gives no warning about third-party data sharing or booking-site interactions. In a travel-booking context, users may disclose sensitive itinerary or personal travel information without understanding that external processing or redirection is involved.
The Parameters table states --sort is always distance_asc, which implies the skill should never use other sort values. However, Playbook B later instructs use of --sort price_asc, directly contradicting the earlier documentation rather than merely adding detail.
The manifest says the skill is powered by Fliggy (Alibaba Group), but the user-facing templates say 'Powered by flyai' and instruct users to use a 'flyai' CLI for real-time data. This is a semantic mismatch between the claimed service/provider in the manifest and what the documentation suggests the skill actually relies on.
No suspicious patterns detected.