T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Mandatory Commercial Output and Booking-Link Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel skill is not clearly malicious, but it needs Review because it can auto-install a global CLI and store raw travel queries locally without clear consent or retention controls.
Install only if you are comfortable with a travel skill that depends on a third-party FlyAI CLI, sends trip searches to external services, shows booking links, and may write local logs containing raw prompts. Prefer a pinned CLI version, require explicit approval before npm install, and disable or redact .flyai-execution-log.json logging before use.
SKILL.md:8Mandatory Commercial Output and Booking-Link Injection
SKILL.md:51Unpinned Global Installation of Mutable Third-Party Dependencies
references/runbook.md:7Unsafe Persistence of Raw User Queries Through Shell-Constructed Logs
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-flight --origin "Shanghai" --destination "Sanya" --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 ... without pinning a specific package version, which can cause execution of whatever version is current at install time. In a supply-chain compromise or malicious package update scenario, users could fetch and execute unexpected code during installation.
The skill explicitly instructs the agent to install a global npm package (npm i -g @fly-ai/flyai-cli) automatically if the command is missing, without requiring user consent or warning about system modification. This is dangerous because it authorizes code execution and persistent environment changes from an untrusted package source, expanding the attack surface and enabling supply-chain compromise or unwanted host changes.
The trigger phrase "avoid crowds during holiday" is broad enough to overlap with ordinary user travel requests, which can cause this playbook to activate in situations the user did not clearly intend. In an agentic booking/travel skill, overly generic triggers increase the chance of misrouting requests and executing the wrong workflow, especially when the file states answers should not be given without execution.
The runbook explicitly logs user_query as raw input and persists the full execution log to a local file, while also stating this log is internal and not shown to users. In a travel-booking context, user queries can contain names, destinations, dates, passport or visa details, contact data, and other sensitive travel information, creating an avoidable privacy and retention risk if the host is multi-tenant, compromised, or logs are later exposed.
The file instructs the agent to append execution logs containing raw user_query to .flyai-execution-log.json, which creates durable local storage of potentially sensitive user-supplied data. Because the skill handles peak-season travel planning and bookings, queries may include itinerary details, identity information, or booking-related secrets, so persistent local logging materially increases exposure in the event of unauthorized access or accidental disclosure.
This markdown file states that the skill wraps a CLI to provide real-time travel data with booking links, which implies outbound network requests and sharing of user-supplied trip details with external services. The description does not include any warning about contacting third-party services, privacy implications, or data handling.
The file includes a full Chinese-language section labeled as documentation, but it does not explicitly state that language is selectable or user-preference driven. Because language/locale policy violations concern forcing a specific language without opt-in, this is a mild concern where the documentation could more clearly indicate bilingual support rather than a fixed locale.
No suspicious patterns detected.