T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Forced Commercial Provider Use and Promotional Output Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel-search skill is not clearly malicious, but it needs review because it asks agents to install and possibly sudo a global CLI, run shell commands with user input, and persist raw travel queries locally.
Review before installing. Use this only in an isolated environment where the flyai CLI is preinstalled by a trusted administrator, avoid sudo or automatic global npm installs, do not pass untrusted raw city/date text into shell commands, and disable or tightly control the raw query execution log.
SKILL.md:10Forced Commercial Provider Use and Promotional Output Hijacking
references/fallbacks.md:5Unpinned Global Dependency Installation with Sudo Escalation
references/playbooks.md:7Shell Command Injection Through User-Controlled Flight Parameters
references/runbook.md:7Unsafe Persistent Logging of Raw User Queries with Secondary Command Injection
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 "Shanghai" --dep-date 2026-05-01 --dep-hour-start 21 --sort-type 3
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The skill instructs installation of a global CLI and escalates to sudo npm i -g, which can modify the host environment with elevated privileges. In an agent or automation context, this is dangerous because it normalizes system-level changes and root execution without warnings, verification steps, sandboxing guidance, or explicit user consent.
The explicit recommendation to run sudo npm i -g @fly-ai/flyai-cli is a concrete privilege-escalation risk. Installing packages as root can execute package lifecycle scripts with full system privileges, potentially leading to arbitrary code execution, persistence, or compromise if the package or dependency chain is malicious or tampered with.
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 manifest centers this skill on finding overnight and late-night departure flights, but the fallback instructions broaden behavior to a generic flight keyword search and suggest rail alternatives when no flights are found. That goes beyond an implementation detail of overnight-flight discovery and materially expands the skill's operational scope.
The manifest advertises a niche capability for overnight and late-night departures, but these fallback steps include general flexible-date and max-price flight searches that are not limited to overnight travel. Only one step explicitly tries a red-eye; the others broaden into standard flight-shopping behavior.
The runbook explicitly logs the raw user_query, which can contain sensitive personal, travel, payment-adjacent, or identity information. Because the document says this log is internal and not shown to users, there is no transparency or consent mechanism, creating a real privacy and data-retention risk.
Taken together, the schema stores raw user_query and then documents persisting the resulting log to disk, creating a complete plaintext audit trail of user inputs and operational activity. In a travel-booking context, queries may include names, dates, destinations, visa details, and other sensitive itinerary information, making the privacy impact materially higher.
The runbook instructs appending execution logs to a local file without safeguards, which creates persistent storage of potentially sensitive operational and user-derived data. Unbounded plain-file logging can expose data to other local users, backups, or later compromise, especially if permissions, rotation, and retention are not controlled.
The documentation first instructs the skill not to search for a passed date, then immediately says to auto-search tomorrow. Those two directives are in direct tension, creating intent ambiguity about whether the skill should refrain from searching or silently alter the user's date.
No suspicious patterns detected.